diff options
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/cli/cli-decode.h | 386 |
2 files changed, 197 insertions, 193 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 624d579..b15b505 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2021-05-11 Simon Marchi <simon.marchi@polymtl.ca> + + * cli/cli-decode.h (struct cmd_list_element): Fix indentation. + 2021-05-10 Lancelot Six <lsix@lancelotsix.com> PR gdb/27614 diff --git a/gdb/cli/cli-decode.h b/gdb/cli/cli-decode.h index e6907a9..d6f52a2 100644 --- a/gdb/cli/cli-decode.h +++ b/gdb/cli/cli-decode.h @@ -41,212 +41,212 @@ enum cmd_types struct cmd_list_element +{ + cmd_list_element (const char *name_, enum command_class theclass_, + const char *doc_) + : name (name_), + theclass (theclass_), + cmd_deprecated (0), + deprecated_warn_user (0), + malloced_replacement (0), + doc_allocated (0), + name_allocated (0), + hook_in (0), + allow_unknown (0), + abbrev_flag (0), + type (not_set_cmd), + var_type (var_boolean), + doc (doc_) { - cmd_list_element (const char *name_, enum command_class theclass_, - const char *doc_) - : name (name_), - theclass (theclass_), - cmd_deprecated (0), - deprecated_warn_user (0), - malloced_replacement (0), - doc_allocated (0), - name_allocated (0), - hook_in (0), - allow_unknown (0), - abbrev_flag (0), - type (not_set_cmd), - var_type (var_boolean), - doc (doc_) - { - memset (&function, 0, sizeof (function)); - } + memset (&function, 0, sizeof (function)); + } - ~cmd_list_element () - { - if (doc && doc_allocated) - xfree ((char *) doc); - if (name_allocated) - xfree ((char *) name); - } + ~cmd_list_element () + { + if (doc && doc_allocated) + xfree ((char *) doc); + if (name_allocated) + xfree ((char *) name); + } + + DISABLE_COPY_AND_ASSIGN (cmd_list_element); + + + /* Points to next command in this list. */ + struct cmd_list_element *next = nullptr; + + /* Name of this command. */ + const char *name; - DISABLE_COPY_AND_ASSIGN (cmd_list_element); + /* Command class; class values are chosen by application program. */ + enum command_class theclass; + /* When 1 indicated that this command is deprecated. It may be + removed from gdb's command set in the future. */ - /* Points to next command in this list. */ - struct cmd_list_element *next = nullptr; + unsigned int cmd_deprecated : 1; - /* Name of this command. */ - const char *name; + /* The user needs to be warned that this is a deprecated command. + The user should only be warned the first time a command is + used. */ - /* Command class; class values are chosen by application program. */ - enum command_class theclass; + unsigned int deprecated_warn_user : 1; - /* When 1 indicated that this command is deprecated. It may be - removed from gdb's command set in the future. */ + /* When functions are deprecated at compile time (this is the way + it should, in general, be done) the memory containing the + replacement string is statically allocated. In some cases it + makes sense to deprecate commands at runtime (the testsuite is + one example). In this case the memory for replacement is + malloc'ed. When a command is undeprecated or re-deprecated at + runtime we don't want to risk calling free on statically + allocated memory, so we check this flag. */ - unsigned int cmd_deprecated : 1; + unsigned int malloced_replacement : 1; - /* The user needs to be warned that this is a deprecated command. - The user should only be warned the first time a command is - used. */ - - unsigned int deprecated_warn_user : 1; - - /* When functions are deprecated at compile time (this is the way - it should, in general, be done) the memory containing the - replacement string is statically allocated. In some cases it - makes sense to deprecate commands at runtime (the testsuite is - one example). In this case the memory for replacement is - malloc'ed. When a command is undeprecated or re-deprecated at - runtime we don't want to risk calling free on statically - allocated memory, so we check this flag. */ + /* Set if the doc field should be xfree'd. */ - unsigned int malloced_replacement : 1; + unsigned int doc_allocated : 1; - /* Set if the doc field should be xfree'd. */ - - unsigned int doc_allocated : 1; + /* Set if the name field should be xfree'd. */ - /* Set if the name field should be xfree'd. */ - - unsigned int name_allocated : 1; - - /* Flag that specifies if this command is already running its hook. */ - /* Prevents the possibility of hook recursion. */ - unsigned int hook_in : 1; - - /* For prefix commands only: - nonzero means do not get an error if subcommand is not - recognized; call the prefix's own function in that case. */ - unsigned int allow_unknown : 1; - - /* Nonzero says this is an abbreviation, and should not - be mentioned in lists of commands. - This allows "br<tab>" to complete to "break", which it - otherwise wouldn't. */ - unsigned int abbrev_flag : 1; - - /* Type of "set" or "show" command (or SET_NOT_SET if not "set" - or "show"). */ - ENUM_BITFIELD (cmd_types) type : 2; - - /* What kind of variable is *VAR? */ - ENUM_BITFIELD (var_types) var_type : 4; - - /* Function definition of this command. NULL for command class - names and for help topics that are not really commands. NOTE: - cagney/2002-02-02: This function signature is evolving. For - the moment suggest sticking with either set_cmd_cfunc() or - set_cmd_sfunc(). */ - void (*func) (struct cmd_list_element *c, const char *args, int from_tty) - = nullptr; - /* The command's real callback. At present func() bounces through - to one of the below. */ - union - { - /* If type is not_set_cmd, call it like this: */ - cmd_const_cfunc_ftype *const_cfunc; - /* If type is set_cmd or show_cmd, first set the variables, - and then call this: */ - cmd_const_sfunc_ftype *sfunc; - } - function; - - /* Local state (context) for this command. This can be anything. */ - void *context = nullptr; - - /* Documentation of this command (or help topic). - First line is brief documentation; remaining lines form, with it, - the full documentation. First line should end with a period. - Entire string should also end with a period, not a newline. */ - const char *doc; - - /* For set/show commands. A method for printing the output to the - specified stream. */ - show_value_ftype *show_value_func = nullptr; - - /* If this command is deprecated, this is the replacement name. */ - const char *replacement = nullptr; - - /* If this command represents a show command, then this function - is called before the variable's value is examined. */ - void (*pre_show_hook) (struct cmd_list_element *c) = nullptr; - - /* Hook for another command to be executed before this command. */ - struct cmd_list_element *hook_pre = nullptr; - - /* Hook for another command to be executed after this command. */ - struct cmd_list_element *hook_post = nullptr; - - /* Default arguments to automatically prepend to the user - provided arguments when running this command or alias. */ - std::string default_args; - - /* Nonzero identifies a prefix command. For them, the address - of the variable containing the list of subcommands. */ - struct cmd_list_element **prefixlist = nullptr; - - /* For prefix commands only: - String containing prefix commands to get here: this one - plus any others needed to get to it. Should end in a space. - It is used before the word "command" in describing the - commands reached through this prefix. */ - const char *prefixname = nullptr; - - /* The prefix command of this command. */ - struct cmd_list_element *prefix = nullptr; - - /* Completion routine for this command. */ - completer_ftype *completer = symbol_completer; - - /* Handle the word break characters for this completer. Usually - this function need not be defined, but for some types of - completers (e.g., Python completers declared as methods inside - a class) the word break chars may need to be redefined - depending on the completer type (e.g., for filename - completers). */ - completer_handle_brkchars_ftype *completer_handle_brkchars = nullptr; - - /* Destruction routine for this command. If non-NULL, this is - called when this command instance is destroyed. This may be - used to finalize the CONTEXT field, if needed. */ - void (*destroyer) (struct cmd_list_element *self, void *context) = nullptr; - - /* Pointer to variable affected by "set" and "show". Doesn't - matter if type is not_set. */ - void *var = nullptr; - - /* Pointer to NULL terminated list of enumerated values (like - argv). */ - const char *const *enums = nullptr; - - /* Pointer to command strings of user-defined commands */ - counted_command_line user_commands; - - /* Pointer to command that is hooked by this one, (by hook_pre) - so the hook can be removed when this one is deleted. */ - struct cmd_list_element *hookee_pre = nullptr; - - /* Pointer to command that is hooked by this one, (by hook_post) - so the hook can be removed when this one is deleted. */ - struct cmd_list_element *hookee_post = nullptr; - - /* Pointer to command that is aliased by this one, so the - aliased command can be located in case it has been hooked. */ - struct cmd_list_element *cmd_pointer = nullptr; - - /* Start of a linked list of all aliases of this command. */ - struct cmd_list_element *aliases = nullptr; - - /* Link pointer for aliases on an alias list. */ - struct cmd_list_element *alias_chain = nullptr; - - /* If non-null, the pointer to a field in 'struct - cli_suppress_notification', which will be set to true in cmd_func - when this command is being executed. It will be set back to false - when the command has been executed. */ - int *suppress_notification = nullptr; - }; + unsigned int name_allocated : 1; + + /* Flag that specifies if this command is already running its hook. */ + /* Prevents the possibility of hook recursion. */ + unsigned int hook_in : 1; + + /* For prefix commands only: + nonzero means do not get an error if subcommand is not + recognized; call the prefix's own function in that case. */ + unsigned int allow_unknown : 1; + + /* Nonzero says this is an abbreviation, and should not + be mentioned in lists of commands. + This allows "br<tab>" to complete to "break", which it + otherwise wouldn't. */ + unsigned int abbrev_flag : 1; + + /* Type of "set" or "show" command (or SET_NOT_SET if not "set" + or "show"). */ + ENUM_BITFIELD (cmd_types) type : 2; + + /* What kind of variable is *VAR? */ + ENUM_BITFIELD (var_types) var_type : 4; + + /* Function definition of this command. NULL for command class + names and for help topics that are not really commands. NOTE: + cagney/2002-02-02: This function signature is evolving. For + the moment suggest sticking with either set_cmd_cfunc() or + set_cmd_sfunc(). */ + void (*func) (struct cmd_list_element *c, const char *args, int from_tty) + = nullptr; + /* The command's real callback. At present func() bounces through + to one of the below. */ + union + { + /* If type is not_set_cmd, call it like this: */ + cmd_const_cfunc_ftype *const_cfunc; + /* If type is set_cmd or show_cmd, first set the variables, + and then call this: */ + cmd_const_sfunc_ftype *sfunc; + } + function; + + /* Local state (context) for this command. This can be anything. */ + void *context = nullptr; + + /* Documentation of this command (or help topic). + First line is brief documentation; remaining lines form, with it, + the full documentation. First line should end with a period. + Entire string should also end with a period, not a newline. */ + const char *doc; + + /* For set/show commands. A method for printing the output to the + specified stream. */ + show_value_ftype *show_value_func = nullptr; + + /* If this command is deprecated, this is the replacement name. */ + const char *replacement = nullptr; + + /* If this command represents a show command, then this function + is called before the variable's value is examined. */ + void (*pre_show_hook) (struct cmd_list_element *c) = nullptr; + + /* Hook for another command to be executed before this command. */ + struct cmd_list_element *hook_pre = nullptr; + + /* Hook for another command to be executed after this command. */ + struct cmd_list_element *hook_post = nullptr; + + /* Default arguments to automatically prepend to the user + provided arguments when running this command or alias. */ + std::string default_args; + + /* Nonzero identifies a prefix command. For them, the address + of the variable containing the list of subcommands. */ + struct cmd_list_element **prefixlist = nullptr; + + /* For prefix commands only: + String containing prefix commands to get here: this one + plus any others needed to get to it. Should end in a space. + It is used before the word "command" in describing the + commands reached through this prefix. */ + const char *prefixname = nullptr; + + /* The prefix command of this command. */ + struct cmd_list_element *prefix = nullptr; + + /* Completion routine for this command. */ + completer_ftype *completer = symbol_completer; + + /* Handle the word break characters for this completer. Usually + this function need not be defined, but for some types of + completers (e.g., Python completers declared as methods inside + a class) the word break chars may need to be redefined + depending on the completer type (e.g., for filename + completers). */ + completer_handle_brkchars_ftype *completer_handle_brkchars = nullptr; + + /* Destruction routine for this command. If non-NULL, this is + called when this command instance is destroyed. This may be + used to finalize the CONTEXT field, if needed. */ + void (*destroyer) (struct cmd_list_element *self, void *context) = nullptr; + + /* Pointer to variable affected by "set" and "show". Doesn't + matter if type is not_set. */ + void *var = nullptr; + + /* Pointer to NULL terminated list of enumerated values (like + argv). */ + const char *const *enums = nullptr; + + /* Pointer to command strings of user-defined commands */ + counted_command_line user_commands; + + /* Pointer to command that is hooked by this one, (by hook_pre) + so the hook can be removed when this one is deleted. */ + struct cmd_list_element *hookee_pre = nullptr; + + /* Pointer to command that is hooked by this one, (by hook_post) + so the hook can be removed when this one is deleted. */ + struct cmd_list_element *hookee_post = nullptr; + + /* Pointer to command that is aliased by this one, so the + aliased command can be located in case it has been hooked. */ + struct cmd_list_element *cmd_pointer = nullptr; + + /* Start of a linked list of all aliases of this command. */ + struct cmd_list_element *aliases = nullptr; + + /* Link pointer for aliases on an alias list. */ + struct cmd_list_element *alias_chain = nullptr; + + /* If non-null, the pointer to a field in 'struct + cli_suppress_notification', which will be set to true in cmd_func + when this command is being executed. It will be set back to false + when the command has been executed. */ + int *suppress_notification = nullptr; +}; /* Functions that implement commands about CLI commands. */ |