diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/cli/cli-decode.c | 2 | ||||
-rw-r--r-- | gdb/cli/cli-setshow.c | 38 | ||||
-rw-r--r-- | gdb/cli/cli-setshow.h | 3 | ||||
-rw-r--r-- | gdb/command.h | 2 | ||||
-rw-r--r-- | gdb/dwarf2/index-cache.c | 2 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/default.exp | 4 |
8 files changed, 40 insertions, 23 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d6204a2..80c027d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2020-05-15 Philippe Waroquiers <philippe.waroquiers@skynet.be> + * cli/cli-setshow.h (cmd_show_list): Remove prefix argument. + * cli/cli-decode.c (do_show_prefix_cmd): Likewise. + * command.h (cmd_show_list): Likewise. + * dwarf2/index-cache.c (show_index_cache_command): Likewise. + * cli/cli-setshow.c (cmd_show_list): Use the prefix to produce the output. Skip aliases. + +2020-05-15 Philippe Waroquiers <philippe.waroquiers@skynet.be> + * unittests/command-def-selftests.c (traverse_command_structure): Verify all commands of a list have the same prefix command and that only the top cmdlist commands have a null prefix. diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c index be36eb6..c37dfaf 100644 --- a/gdb/cli/cli-decode.c +++ b/gdb/cli/cli-decode.c @@ -428,7 +428,7 @@ add_basic_prefix_cmd (const char *name, enum command_class theclass, static void do_show_prefix_cmd (const char *args, int from_tty, struct cmd_list_element *c) { - cmd_show_list (*c->prefixlist, from_tty, ""); + cmd_show_list (*c->prefixlist, from_tty); } /* See command.h. */ diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c index 2a2f905..19a5565 100644 --- a/gdb/cli/cli-setshow.c +++ b/gdb/cli/cli-setshow.c @@ -733,39 +733,45 @@ do_show_command (const char *arg, int from_tty, struct cmd_list_element *c) /* Show all the settings in a list of show commands. */ void -cmd_show_list (struct cmd_list_element *list, int from_tty, const char *prefix) +cmd_show_list (struct cmd_list_element *list, int from_tty) { struct ui_out *uiout = current_uiout; ui_out_emit_tuple tuple_emitter (uiout, "showlist"); for (; list != NULL; list = list->next) { + /* We skip show command aliases to avoid showing duplicated values. */ + /* If we find a prefix, run its list, prefixing our output by its prefix (with "show " skipped). */ - if (list->prefixlist && !list->abbrev_flag) + if (list->prefixlist && list->cmd_pointer == nullptr) { ui_out_emit_tuple optionlist_emitter (uiout, "optionlist"); const char *new_prefix = strstr (list->prefixname, "show ") + 5; if (uiout->is_mi_like_p ()) uiout->field_string ("prefix", new_prefix); - cmd_show_list (*list->prefixlist, from_tty, new_prefix); + cmd_show_list (*list->prefixlist, from_tty); } - else + else if (list->theclass != no_set_class && list->cmd_pointer == nullptr) { - if (list->theclass != no_set_class) - { - ui_out_emit_tuple option_emitter (uiout, "option"); - - uiout->text (prefix); - uiout->field_string ("name", list->name); - uiout->text (": "); - if (list->type == show_cmd) - do_show_command (NULL, from_tty, list); - else - cmd_func (list, NULL, from_tty); - } + ui_out_emit_tuple option_emitter (uiout, "option"); + + { + /* If we find a prefix, output it (with "show " skipped). */ + const char *prefixname + = (list->prefix == nullptr ? "" + : strstr (list->prefix->prefixname, "show ") + 5); + uiout->text (prefixname); + } + uiout->field_string ("name", list->name); + uiout->text (": "); + if (list->type == show_cmd) + do_show_command (NULL, from_tty, list); + else + cmd_func (list, NULL, from_tty); } } } + diff --git a/gdb/cli/cli-setshow.h b/gdb/cli/cli-setshow.h index 9f0492b..83e4984 100644 --- a/gdb/cli/cli-setshow.h +++ b/gdb/cli/cli-setshow.h @@ -60,7 +60,6 @@ extern void do_show_command (const char *arg, int from_tty, /* Get a string version of C's current value. */ extern std::string get_setshow_command_value_string (const cmd_list_element *c); -extern void cmd_show_list (struct cmd_list_element *list, int from_tty, - const char *prefix); +extern void cmd_show_list (struct cmd_list_element *list, int from_tty); #endif /* CLI_CLI_SETSHOW_H */ diff --git a/gdb/command.h b/gdb/command.h index 81c35c9..0a1706c 100644 --- a/gdb/command.h +++ b/gdb/command.h @@ -464,7 +464,7 @@ extern void /* Do a "show" command for each thing on a command list. */ -extern void cmd_show_list (struct cmd_list_element *, int, const char *); +extern void cmd_show_list (struct cmd_list_element *, int); /* Used everywhere whenever at least one parameter is required and none is specified. */ diff --git a/gdb/dwarf2/index-cache.c b/gdb/dwarf2/index-cache.c index 23e938b..76e7ce6 100644 --- a/gdb/dwarf2/index-cache.c +++ b/gdb/dwarf2/index-cache.c @@ -259,7 +259,7 @@ show_index_cache_command (const char *arg, int from_tty) auto restore_flag = make_scoped_restore (&in_show_index_cache_command, true); /* Call all "show index-cache" subcommands. */ - cmd_show_list (show_index_cache_prefix_list, from_tty, ""); + cmd_show_list (show_index_cache_prefix_list, from_tty); printf_unfiltered ("\n"); printf_unfiltered diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 820af44..bff0ad0 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2020-05-15 Philippe Waroquiers <philippe.waroquiers@skynet.be> + * gdb.base/default.exp: Update output following fixes. + +2020-05-15 Philippe Waroquiers <philippe.waroquiers@skynet.be> + * gdb.base/alias.exp: Test aliases starting with a prefix of another alias. diff --git a/gdb/testsuite/gdb.base/default.exp b/gdb/testsuite/gdb.base/default.exp index 95b92c4..c34bb9a 100644 --- a/gdb/testsuite/gdb.base/default.exp +++ b/gdb/testsuite/gdb.base/default.exp @@ -559,7 +559,7 @@ gdb_test "show args" "Argument list to give program being debugged when it is st # test show check abbreviations foreach x {"c" "ch" "check"} { - gdb_test "show $x" "range: *Range checking is \"auto; currently off\".(\[^\r\n\]*\[\r\n\])+type: *Strict type checking is on\..*" \ + gdb_test "show $x" "check range: *Range checking is \"auto; currently off\".(\[^\r\n\]*\[\r\n\])+check type: *Strict type checking is on\..*" \ "show check \"$x\" abbreviation" } @@ -645,7 +645,7 @@ gdb_test "show history save" "Saving of the history record on exit is on." #test show history size gdb_test "show history size" "The size of the command history is.*" #test show history -gdb_test "show history" "expansion: *History expansion on command input is o(\[^\r\n\]*\[\r\n\])+filename: *The filename in which to record the command history is.*.gdb_history(\[^\r\n\]*\[\r\n\])+save: *Saving of the history record on exit is o(\[^\r\n\]*\[\r\n\])+size: * The size of the command history is.*" +gdb_test "show history" "history expansion: *History expansion on command input is o(\[^\r\n\]*\[\r\n\])+history filename: *The filename in which to record the command history is.*.gdb_history(\[^\r\n\]*\[\r\n\])+history save: *Saving of the history record on exit is o(\[^\r\n\]*\[\r\n\])+history size: * The size of the command history is.*" #test show language gdb_test "show language" "The current source language is \"auto; currently c\"." #test show listsize |