diff options
author | Andrew Burgess <aburgess@redhat.com> | 2023-05-09 15:18:51 +0100 |
---|---|---|
committer | Andrew Burgess <aburgess@redhat.com> | 2023-05-12 10:54:25 +0100 |
commit | a02fcd08ddc5080696248ed7fb4bf50a24763431 (patch) | |
tree | afe702279d9f9812321ca5fb2e0a48d27aaaabb8 | |
parent | cbd24a9f11feea879c2f1857053854ef329efbd8 (diff) | |
download | gdb-a02fcd08ddc5080696248ed7fb4bf50a24763431.zip gdb-a02fcd08ddc5080696248ed7fb4bf50a24763431.tar.gz gdb-a02fcd08ddc5080696248ed7fb4bf50a24763431.tar.bz2 |
gdb: fix error message for $_gdb_maint_setting
I spotted this behaviour:
(gdb) p $_gdb_maint_setting("xxx")
First argument of $_gdb_maint_setting must be a valid setting of the 'show' command.
Notice that GDB claims I need to use a setting from the 'show'
command, which isn't correct for $_gdb_maint_setting, in this case I
need to use a setting from 'maintenance show'.
This same issue is present for $_gdb_maint_setting_str.
This commit fixes this minor issue.
Approved-By: Simon Marchi <simon.marchi@efficios.com>
-rw-r--r-- | gdb/cli/cli-cmds.c | 12 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/settings.exp | 15 |
2 files changed, 25 insertions, 2 deletions
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index d466cc6..b7b6530 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -2219,8 +2219,16 @@ setting_cmd (const char *fnname, struct cmd_list_element *showlist, cmd_list_element *cmd = lookup_cmd (&a0, showlist, "", NULL, -1, 0); if (cmd == nullptr || cmd->type != show_cmd) - error (_("First argument of %s must be a " - "valid setting of the 'show' command."), fnname); + { + gdb_assert (showlist->prefix != nullptr); + std::vector<std::string> components + = showlist->prefix->command_components (); + std::string full_name = components[0]; + for (int i = 1; i < components.size (); ++i) + full_name += " " + components[i]; + error (_("First argument of %s must be a valid setting of the " + "'%s' command."), fnname, full_name.c_str ()); + } return cmd; } diff --git a/gdb/testsuite/gdb.base/settings.exp b/gdb/testsuite/gdb.base/settings.exp index eb127d2..6248ba3 100644 --- a/gdb/testsuite/gdb.base/settings.exp +++ b/gdb/testsuite/gdb.base/settings.exp @@ -625,6 +625,19 @@ proc test-string {variant} { test_gdb_complete_none "$show_cmd " } +# Check that $_gdb_setting & co report the correct error strings. +proc test-setting-error {} { + gdb_test {print $_gdb_setting("xxx")} \ + "First argument of \\\$_gdb_setting must be a valid setting of the 'show' command\\." + gdb_test {print $_gdb_setting_str("xxx")} \ + "First argument of \\\$_gdb_setting_str must be a valid setting of the 'show' command\\." + + gdb_test {print $_gdb_maint_setting("xxx")} \ + "First argument of \\\$_gdb_maint_setting must be a valid setting of the 'maintenance show' command\\." + gdb_test {print $_gdb_maint_setting_str("xxx")} \ + "First argument of \\\$_gdb_maint_setting_str must be a valid setting of the 'maintenance show' command\\." +} + foreach variant { uinteger integer @@ -651,3 +664,5 @@ foreach variant { test-string $variant } } + +test-setting-error |