[gdb/testsuite] Fix gdb.cp/nsalias.exp with -readnow
authorTom de Vries <tdevries@suse.de>
Wed, 28 Oct 2020 09:01:32 +0000 (10:01 +0100)
committerTom de Vries <tdevries@suse.de>
Wed, 28 Oct 2020 09:01:32 +0000 (10:01 +0100)
When running test-case gdb.cp/nsalias.exp with target board readnow, we get:
...
FAIL: gdb.cp/nsalias.exp: complaint for too many recursively imported \
  declarations
...

The complaint is not detected, because:
- the complaint is triggered during the file command instead of during
  "print N100::x"
- the "set complaints 1" is not effective because it's issued
  after the file command

Fix the FAIL by setting the complaints limit earlier, and detecting the
complaint also during the file command.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2020-10-28  Tom de Vries  <tdevries@suse.de>

* lib/gdb.exp (gdb_file_cmd): Set gdb_file_cmd_msg.
* gdb.cp/nsalias.exp: Set complaints limit before file cmd.  Expect
complaint during file command for -readnow.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/nsalias.exp
gdb/testsuite/lib/gdb.exp

index 4fc1b1814b1050ba5b3887e33bac4f7d704a134b..ce8ea41deb4f9b8902cf9840b8e21b4489210bec 100644 (file)
@@ -1,3 +1,9 @@
+2020-10-28  Tom de Vries  <tdevries@suse.de>
+
+       * lib/gdb.exp (gdb_file_cmd): Set gdb_file_cmd_msg.
+       * gdb.cp/nsalias.exp: Set complaints limit before file cmd.  Expect
+       complaint during file command for -readnow.
+
 2020-10-28  Tom de Vries  <tdevries@suse.de>
 
        * gdb.cp/nsalias.exp: Fix typo in test name.
index 892e5e268dd3e993bd69b3ad6e400cb360b281e2..a7163dc5f1aa4e9a29acb9236f2a25747a1f1190 100644 (file)
@@ -314,9 +314,21 @@ if {[gdb_compile [list ${binfile}1.o ${binfile}3.o] \
     return -1
 }
 
-clean_restart ${testfile}-r
+clean_restart
 
+# Set complaints before loading the file.  Otherwise the complaint won't
+# trigger for -readnow.
 gdb_test_no_output "set complaints 1"
-gdb_test "print N100::x" \
-    ".* has too many recursively imported declarations.*" \
-    "complaint for too many recursively imported declarations"
+
+gdb_load [standard_output_file ${testfile}-r]
+
+set readnow_p [readnow]
+
+set test "complaint for too many recursively imported declarations"
+set re ".* has too many recursively imported declarations.*"
+if { $readnow_p } {
+    global gdb_file_cmd_msg
+    gdb_assert {[regexp $re $gdb_file_cmd_msg]} $test
+} else {
+    gdb_test "print N100::x" $re $test
+}
index 8b00ee0f54be260359d5b1bacc96fefd0cef77b0..ef96209b0dc40b1d23d09dca5a4c18227bc787df 100644 (file)
@@ -1803,6 +1803,9 @@ proc default_gdb_exit {} {
 #            compiled in
 #   fail     file was not loaded
 #
+# This procedure also set the global variable GDB_FILE_CMD_MSG to the
+# output of the file command in case of success.
+#
 # I tried returning this information as part of the return value,
 # but ran into a mess because of the many re-implementations of
 # gdb_load in config/*.exp.
@@ -1820,7 +1823,7 @@ proc gdb_file_cmd { arg } {
 
     # Set whether debug info was found.
     # Default to "fail".
-    global gdb_file_cmd_debug_info
+    global gdb_file_cmd_debug_info gdb_file_cmd_msg
     set gdb_file_cmd_debug_info "fail"
 
     if [is_remote host] {
@@ -1850,18 +1853,21 @@ proc gdb_file_cmd { arg } {
     set new_symbol_table 0
     set basename [file tail $arg]
     gdb_expect 120 {
-       -re "Reading symbols from.*LZMA support was disabled.*$gdb_prompt $" {
+       -re "(Reading symbols from.*LZMA support was disabled.*$gdb_prompt $)" {
            verbose "\t\tLoaded $arg into $GDB; .gnu_debugdata found but no LZMA available"
+           set gdb_file_cmd_msg $expect_out(1,string)
            set gdb_file_cmd_debug_info "lzma"
            return 0
        }
-       -re "Reading symbols from.*no debugging symbols found.*$gdb_prompt $" {
+       -re "(Reading symbols from.*no debugging symbols found.*$gdb_prompt $)" {
            verbose "\t\tLoaded $arg into $GDB with no debugging symbols"
+           set gdb_file_cmd_msg $expect_out(1,string)
            set gdb_file_cmd_debug_info "nodebug"
            return 0
        }
-        -re "Reading symbols from.*$gdb_prompt $" {
+        -re "(Reading symbols from.*$gdb_prompt $)" {
             verbose "\t\tLoaded $arg into $GDB"
+           set gdb_file_cmd_msg $expect_out(1,string)
            set gdb_file_cmd_debug_info "debug"
            return 0
         }