Avoid crash in language_info
authorTom Tromey <tromey@adacore.com>
Wed, 5 Jan 2022 17:42:25 +0000 (10:42 -0700)
committerTom Tromey <tromey@adacore.com>
Thu, 6 Jan 2022 14:54:30 +0000 (07:54 -0700)
language_info calls:

  show_language_command (NULL, 1, NULL, NULL);

... "knowing" that show_language_command does not use its ui_file
parameter.  However, this was changed in commit 7514a661
("Consistently Use ui_file parameter to show callbacks").

This patch changes language_info to pass a ui_file.

It took a while to write the test -- this function is only called when
'verbose' is on and when switching the "expected" language in auto
mode.

gdb/language.c
gdb/testsuite/gdb.base/langs.exp

index 0e6a1a4bcdb6c6e6eb674ef25532f6f7ad027e24..0846b3e5eebebae9e4ebd4048d37c083bb9ab702 100644 (file)
@@ -384,7 +384,7 @@ language_info ()
 
   expected_language = current_language;
   printf_filtered (_("Current language:  %s\n"), language);
-  show_language_command (NULL, 1, NULL, NULL);
+  show_language_command (gdb_stdout, 1, NULL, NULL);
 }
 \f
 /* This page contains functions for the printing out of
index 134cde1f6b5a3ba74ab4e2a056f98b98e88e70d0..9c78a8a439713d657ac1f6757b6aad4a500c83d7 100644 (file)
@@ -117,6 +117,15 @@ if [runto csub] then {
     gdb_test "print x" \
        "expression parsing not implemented for language .Unknown." \
        "expression parsing does not crash for unknown"
+
+    gdb_test_no_output "set lang auto" \
+       "set lang back to auto for verbose test"
+    gdb_test_no_output "set verbose on"
+    if { !$isfixed } { set lang c\\+\\+; set ext cxx }
+    if {!$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    gdb_test "up" \
+       ".* in (foo|$foo_func).* at .*langs2\\.$ext.*return csub \\(.*Current language:  auto.*" \
+       "up to foo in langs.exp when verbose"
 }
 
 set timeout $oldtimeout