# 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"