diff options
-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 d466cc6c34d..b7b65303a0b 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 eb127d246d2..6248ba3e495 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 |