From 67f57a9be2f3ec9cf7da783821c88e0595fedd11 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 18 Jun 2019 01:20:46 +0100 Subject: [PATCH] Fix defaults of some "maint test-settings" subcommands New tests added later for the incoming "with" command exposed a couple invalid-default-value bugs in the "maint test-settings" commands: - var_filename commands don't allow setting the filename to the empty string (unlike var_optional_filename commands), yet, "maint test-settings filename"'s control variable was not initialized, so on startup, "maint test-settings show filename" shows an empty string. - "maint test-settings enum"'s control variable was not initialized, so on startup, "maint test-settings show enum" shows an empty value instead of a valid enum value. Both issues are fixed by initializing the control variables. gdb/ChangeLog: yyyy-mm-dd Pedro Alves * maint-test-settings.c (maintenance_test_settings_xxx) (maintenance_test_settings_yyy, maintenance_test_settings_zzz): New. (maintenance_test_settings_enums): Use them. (maintenance_test_settings_enum): Default to maintenance_test_settings_xxx. (_initialize_maint_test_settings): Initialize MAINTENANCE_TEST_SETTINGS_FILENAME. gdb/testsuite/ChangeLog: yyyy-mm-dd Pedro Alves * gdb.base/settings.exp (test-string): Adjust expected out when testing "maint test-settings show filename" --- gdb/maint-test-settings.c | 16 +++++++++++++--- gdb/testsuite/gdb.base/settings.exp | 9 ++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/gdb/maint-test-settings.c b/gdb/maint-test-settings.c index fa13519eb96..79e002e727f 100644 --- a/gdb/maint-test-settings.c +++ b/gdb/maint-test-settings.c @@ -85,14 +85,22 @@ static char *maintenance_test_settings_optional_filename; static char *maintenance_test_settings_filename; -static const char *maintenance_test_settings_enum; - /* Enum values for the "maintenance test-settings set/show boolean" commands. */ +static const char maintenance_test_settings_xxx[] = "xxx"; +static const char maintenance_test_settings_yyy[] = "yyy"; +static const char maintenance_test_settings_zzz[] = "zzz"; + static const char *const maintenance_test_settings_enums[] = { - "xxx", "yyy", "zzz", nullptr + maintenance_test_settings_xxx, + maintenance_test_settings_yyy, + maintenance_test_settings_zzz, + nullptr }; +static const char *maintenance_test_settings_enum + = maintenance_test_settings_xxx; + /* The "maintenance test-options show xxx" commands. */ static void @@ -107,6 +115,8 @@ maintenance_test_settings_show_value_cmd void _initialize_maint_test_settings (void) { + maintenance_test_settings_filename = xstrdup ("/foo/bar"); + add_prefix_cmd ("test-settings", no_class, maintenance_test_settings_cmd, _("\ diff --git a/gdb/testsuite/gdb.base/settings.exp b/gdb/testsuite/gdb.base/settings.exp index aeca67c0e7f..b691ad8cf68 100644 --- a/gdb/testsuite/gdb.base/settings.exp +++ b/gdb/testsuite/gdb.base/settings.exp @@ -447,9 +447,12 @@ proc test-string {variant} { set set_cmd "maint test-settings set $variant" set show_cmd "maint test-settings show $variant" - # Empty string. Also checks that gdb doesn't crash if we haven't - # set the string yet. - gdb_test "$show_cmd" "^$show_cmd\r\n" "$show_cmd: empty first time" + # Checks that gdb doesn't crash if we haven't set the string yet. + if {$variant != "filename"} { + gdb_test "$show_cmd" "^$show_cmd\r\n" "$show_cmd: show default" + } else { + gdb_test "$show_cmd" "/foo/bar" "$show_cmd: show default" + } # A string value. gdb_test_no_output "$set_cmd hello world" -- 2.47.2