[gdb/testsuite] Fix gdb.dwarf2/dw2-using-debug-str.exp with cc-with-gdb-index
authorTom de Vries <tdevries@suse.de>
Mon, 2 Aug 2021 13:31:51 +0000 (15:31 +0200)
committerTom de Vries <tdevries@suse.de>
Mon, 2 Aug 2021 13:31:51 +0000 (15:31 +0200)
When running with target board cc-with-gdb-index, we run into:
...
(gdb) file dw2-using-debug-str-no-debug-str^M
Reading symbols from dw2-using-debug-str-no-debug-str...^M
Dwarf Error: DW_FORM_strp used without required section^M
(gdb) FAIL: gdb.dwarf2/dw2-using-debug-str.exp: file dw2-using-debug-str
...

The test expects the dwarf error, but has no matching pattern for the entire
output.

Fix this by updating the regexp.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2021-08-02  Tom de Vries  <tdevries@suse.de>

* gdb.dwarf2/dw2-using-debug-str.exp: Update regexp to match
cc-with-gdb-index output.

gdb/testsuite/gdb.dwarf2/dw2-using-debug-str.exp

index 62febdb0a998ba050a4e7acb5f3b66210515323d..09f58d38f7b5c19f92789494f500c2c0ed32f18a 100644 (file)
@@ -115,28 +115,32 @@ if {[run_on_host "objcopy" [gdb_find_objcopy] "$args"]} {
 # executable we're going to get an error, which we check for below.
 clean_restart
 
+set line1 "Reading symbols from \[^\r\n\]+"
+set dwarf_error "Dwarf Error: DW_FORM_strp used without required section"
+
 # This pattern is hit when GDB does not use -readnow (i.e. the default
 # behaviour).
 set pattern1 \
     [multi_line \
-        "Reading symbols from \[^\r\n\]+" \
-        "Dwarf Error: DW_FORM_strp used without required section" \
+         $line1 \
+         $dwarf_error \
         "\\(No debugging symbols \[^\r\n\]+\\)"]
 
 # This pattern is hit when GDB does use -readnow (e.g. running with
 # --target_board=readnow).
 set pattern2 \
     [multi_line \
-        "Reading symbols from \[^\r\n\]+" \
+        $line1 \
         "Expanding full symbols from \[^\r\n\]+" \
-        "Dwarf Error: DW_FORM_strp used without required section"]
+        $dwarf_error]
+
+# This pattern is hit when gcc adds an index (e.g. running with
+# --target_board=cc-with-gdb-index).
+set pattern3 \
+    [multi_line \
+        $line1 \
+        $dwarf_error]
 
 # Load the executable, we expect an error from the DWARF parser.
-gdb_test_multiple "file $binfile_no_debug_str" "file $testfile" {
-    -wrap -re $pattern1 {
-       pass $gdb_test_name
-    }
-    -re -wrap "$pattern2" {
-       pass $gdb_test_name
-    }
-}
+gdb_test "file $binfile_no_debug_str" "($pattern1|$pattern2|$pattern3)" \
+    "file $testfile"