[gdb/testsuite] Handle unrecognized command line option in gdb_compile_test
authorTom de Vries <tdevries@suse.de>
Fri, 10 Sep 2021 16:36:36 +0000 (18:36 +0200)
committerTom de Vries <tdevries@suse.de>
Fri, 10 Sep 2021 16:36:36 +0000 (18:36 +0200)
When running the gdb testsuite with gnatmake-4.8, I get many fails of the
following form:
...
gcc: error: unrecognized command line option '-fgnat-encodings=all'^M
gnatmake: "gdb.ada/O2_float_param/foo.adb" compilation error^M
compiler exited with status 1
compilation failed: gcc ... gdb.ada/O2_float_param/foo.adb
gcc: error: unrecognized command line option '-fgnat-encodings=all'
gnatmake: "gdb.ada/O2_float_param/foo.adb" compilation error
FAIL: gdb.ada/O2_float_param.exp: scenario=all: compilation foo.adb
...

Fix this by marking the test unsupported instead, such that we have:
...
UNSUPPORTED: gdb.ada/O2_float_param.exp: scenario=all: compilation foo.adb \
  (unsupported option '-fgnat-encodings=all')
...

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2021-09-10  Tom de Vries  <tdevries@suse.de>

* lib/gdb.exp (gdb_compile_test): Handle unrecognized command line
option.

gdb/testsuite/ChangeLog
gdb/testsuite/lib/gdb.exp

index 807d302050235858f84d2adbfe596f930f9de3e2..9c2df6525101ec763064180423f3df311af5c35b 100644 (file)
@@ -1,3 +1,8 @@
+2021-09-10  Tom de Vries  <tdevries@suse.de>
+
+       * lib/gdb.exp (gdb_compile_test): Handle unrecognized command line
+       option.
+
 2021-09-09  Tom de Vries  <tdevries@suse.de>
 
        * gdb.base/coredump-filter-build-id.exp: Handle older eu-unstrip.
index ec54b94df38a1ed6a8fba7111e22e976879ce3c3..236917e6776cc939325a18024d416bccbb68d2ee 100644 (file)
@@ -2155,21 +2155,34 @@ proc gdb_interact { } {
 # Examine the output of compilation to determine whether compilation
 # failed or not.  If it failed determine whether it is due to missing
 # compiler or due to compiler error.  Report pass, fail or unsupported
-# as appropriate
+# as appropriate.
 
 proc gdb_compile_test {src output} {
+    set msg "compilation [file tail $src]"
+
     if { $output == "" } {
-       pass "compilation [file tail $src]"
-    } elseif { [regexp {^[a-zA-Z_0-9]+: Can't find [^ ]+\.$} $output] } {
-       unsupported "compilation [file tail $src]"
-    } elseif { [regexp {.*: command not found[\r|\n]*$} $output] } {
-       unsupported "compilation [file tail $src]"
-    } elseif { [regexp {.*: [^\r\n]*compiler not installed[^\r\n]*[\r|\n]*$} $output] } {
-       unsupported "compilation [file tail $src]"
-    } else {
-       verbose -log "compilation failed: $output" 2
-       fail "compilation [file tail $src]"
+       pass $msg
+       return
+    }
+
+    if { [regexp {^[a-zA-Z_0-9]+: Can't find [^ ]+\.$} $output]
+        || [regexp {.*: command not found[\r|\n]*$} $output]
+        || [regexp {.*: [^\r\n]*compiler not installed[^\r\n]*[\r|\n]*$} $output] } {
+       unsupported "$msg (missing compiler)"
+       return
     }
+
+    set gcc_re ".*: error: unrecognized command line option "
+    set clang_re ".*: error: unsupported option "
+    if { [regexp "(?:$gcc_re|$clang_re)(\[^ \t;\r\n\]*)" $output dummy option]
+        && $option != "" } {
+       unsupported "$msg (unsupported option $option)"
+       return
+    }
+
+    # Unclassified compilation failure, be more verbose.
+    verbose -log "compilation failed: $output" 2
+    fail "$msg"
 }
 
 # Return a 1 for configurations for which we don't even want to try to
This page took 0.035054 seconds and 4 git commands to generate.