Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Andrew Burgess <andrew.burgess@embecosm.com>
To: Marco Barisione <mbarisione@undo.io>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 1/2] Move the code to execute a cmd_list_element out from execute_command
Date: Mon, 5 Oct 2020 10:08:04 +0100	[thread overview]
Message-ID: <20201005090804.GF605036@embecosm.com> (raw)
In-Reply-To: <20200914093925.5442-2-mbarisione@undo.io>

Hi,

Thanks for working on this.  I have a little feedback:

* Marco Barisione <mbarisione@undo.io> [2020-09-14 09:39:24 +0000]:

You should imagine this patch, once applied is being looked at in
isolation, without an understanding that there's a follow on patch.
As such it's usually a nice idea to write a short commit message that
just mentions you're performing this restructuring in preparation for
a follow on patch.

> gdb/ChangeLog:
> 
> 	* gdbcmd.h (execute_cmd_list_command): Add declaration.
> 	* top.c (execute_command): Move out the code to execute a
> 	command from a cmd_list_element.
> 	(execute_cmd_list_command): Add from code originally in
> 	execute_command.
> 	* top.h (execute_cmd_list_command): Add declaration.

Why is execute_cmd_list_command declared twice?  This doesn't feel
right.

Thanks,
Andrew

> ---
>  gdb/gdbcmd.h |  3 +++
>  gdb/top.c    | 66 ++++++++++++++++++++++++++++++----------------------
>  gdb/top.h    |  2 ++
>  3 files changed, 43 insertions(+), 28 deletions(-)
> 
> diff --git a/gdb/gdbcmd.h b/gdb/gdbcmd.h
> index 4406094ea5..5be474ec1a 100644
> --- a/gdb/gdbcmd.h
> +++ b/gdb/gdbcmd.h
> @@ -134,6 +134,9 @@ extern struct cmd_list_element *save_cmdlist;
>  
>  extern void execute_command (const char *, int);
>  
> +extern void execute_cmd_list_command (struct cmd_list_element *,
> +				      const char *, int);
> +
>  /* Execute command P and returns its output.  If TERM_OUT,
>     the output is built using terminal output behaviour such
>     as cli_styling.  */
> diff --git a/gdb/top.c b/gdb/top.c
> index acd31afb9a..8eae15a488 100644
> --- a/gdb/top.c
> +++ b/gdb/top.c
> @@ -581,7 +581,6 @@ execute_command (const char *p, int from_tty)
>        const char *arg;
>        std::string default_args;
>        std::string default_args_and_arg;
> -      int was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
>  
>        line = p;
>  
> @@ -641,33 +640,7 @@ execute_command (const char *p, int from_tty)
>        if (c->deprecated_warn_user)
>  	deprecated_cmd_warning (line);
>  
> -      /* c->user_commands would be NULL in the case of a python command.  */
> -      if (c->theclass == class_user && c->user_commands)
> -	execute_user_command (c, arg);
> -      else if (c->theclass == class_user
> -	       && c->prefixlist && !c->allow_unknown)
> -	/* If this is a user defined prefix that does not allow unknown
> -	   (in other words, C is a prefix command and not a command
> -	   that can be followed by its args), report the list of
> -	   subcommands.  */
> -	{
> -	  printf_unfiltered
> -	    ("\"%.*s\" must be followed by the name of a subcommand.\n",
> -	     (int) strlen (c->prefixname) - 1, c->prefixname);
> -	  help_list (*c->prefixlist, c->prefixname, all_commands, gdb_stdout);
> -	}
> -      else if (c->type == set_cmd)
> -	do_set_command (arg, from_tty, c);
> -      else if (c->type == show_cmd)
> -	do_show_command (arg, from_tty, c);
> -      else if (!cmd_func_p (c))
> -	error (_("That is not a command, just a help topic."));
> -      else if (deprecated_call_command_hook)
> -	deprecated_call_command_hook (c, arg, from_tty);
> -      else
> -	cmd_func (c, arg, from_tty);
> -
> -      maybe_wait_sync_command_done (was_sync);
> +      execute_cmd_list_command (c, arg, from_tty);
>  
>        /* If this command has been post-hooked, run the hook last.  */
>        execute_cmd_post_hook (c);
> @@ -690,6 +663,43 @@ execute_command (const char *p, int from_tty)
>    cleanup_if_error.release ();
>  }
>  
> +/* Execute the C command.  */
> +
> +void
> +execute_cmd_list_command (struct cmd_list_element *c, const char *arg,
> +			  int from_tty)
> +{
> +  bool was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
> +
> +  /* c->user_commands would be NULL in the case of a python command.  */
> +  if (c->theclass == class_user && c->user_commands)
> +    execute_user_command (c, arg);
> +  else if (c->theclass == class_user
> +	   && c->prefixlist && !c->allow_unknown)
> +    {
> +      /* If this is a user defined prefix that does not allow unknown
> +	 (in other words, C is a prefix command and not a command
> +	 that can be followed by its args), report the list of
> +	 subcommands.  */
> +      printf_unfiltered
> +	("\"%.*s\" must be followed by the name of a subcommand.\n",
> +	 (int) strlen (c->prefixname) - 1, c->prefixname);
> +      help_list (*c->prefixlist, c->prefixname, all_commands, gdb_stdout);
> +    }
> +  else if (c->type == set_cmd)
> +    do_set_command (arg, from_tty, c);
> +  else if (c->type == show_cmd)
> +    do_show_command (arg, from_tty, c);
> +  else if (!cmd_func_p (c))
> +    error (_("That is not a command, just a help topic."));
> +  else if (deprecated_call_command_hook)
> +    deprecated_call_command_hook (c, arg, from_tty);
> +  else
> +    cmd_func (c, arg, from_tty);
> +
> +  maybe_wait_sync_command_done (was_sync);
> +}
> +
>  /* Run execute_command for P and FROM_TTY.  Sends its output to FILE,
>     do not display it to the screen.  BATCH_FLAG will be
>     temporarily set to true.  */
> diff --git a/gdb/top.h b/gdb/top.h
> index fd99297715..ba6c596da7 100644
> --- a/gdb/top.h
> +++ b/gdb/top.h
> @@ -241,6 +241,8 @@ extern void quit_force (int *, int);
>  extern void quit_command (const char *, int);
>  extern void quit_cover (void);
>  extern void execute_command (const char *, int);
> +extern void execute_cmd_list_command (struct cmd_list_element *,
> +				      const char *, int);
>  
>  /* If the interpreter is in sync mode (we're running a user command's
>     list, running command hooks or similars), and we just ran a
> -- 
> 2.20.1
> 

  reply	other threads:[~2020-10-05  9:08 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-14  9:39 Add a way to invoke redefined (overridden) GDB commands Marco Barisione
2020-09-14  9:39 ` [PATCH 1/2] Move the code to execute a cmd_list_element out from execute_command Marco Barisione
2020-10-05  9:08   ` Andrew Burgess [this message]
2020-10-05  9:40     ` Marco Barisione
2020-10-05 17:49       ` Andrew Burgess
2020-09-14  9:39 ` [PATCH 2/2] Add a way to preserve redefined GDB commands for later invocation Marco Barisione
2020-09-14 16:18   ` Eli Zaretskii
2020-09-14 16:51     ` Marco Barisione
2020-10-05 10:24   ` Andrew Burgess
2020-10-05 11:44     ` Marco Barisione
2020-10-05 18:11       ` Andrew Burgess
2020-10-06  7:18         ` Marco Barisione
2020-09-28  7:54 ` [PING] Add a way to invoke redefined (overridden) GDB commands Marco Barisione
2020-10-05  7:42   ` Marco Barisione
2020-10-12 11:50 ` Pedro Alves
2020-10-19 17:41   ` Marco Barisione
2020-10-19 18:05     ` Pedro Alves
2020-10-19 18:47       ` Philippe Waroquiers via Gdb-patches
2020-10-19 19:28         ` Marco Barisione
2020-10-20 15:06           ` Pedro Alves
2020-10-20 18:19             ` Marco Barisione
2020-10-20 18:32               ` Pedro Alves
2020-10-20 15:15         ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201005090804.GF605036@embecosm.com \
    --to=andrew.burgess@embecosm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=mbarisione@undo.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox