]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/testsuite] Fix gdb.xml/tdesc-regs.exp on riscv64
authorTom de Vries <tdevries@suse.de>
Tue, 10 Sep 2024 08:25:07 +0000 (10:25 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 10 Sep 2024 08:25:07 +0000 (10:25 +0200)
When running test-case gdb.xml/tdesc-regs.exp on riscv64-linux, I get:
...
(gdb) set tdesc file single-reg.xml^M
warning: Architecture rejected target-supplied description^M
(gdb) FAIL: gdb.xml/tdesc-regs.exp: set tdesc file single-reg.xml
UNSUPPORTED: gdb.xml/tdesc-regs.exp: register tests
...

The FAIL and UNSUPPORTED are produced here:
...
 # If no core registers were specified, assume this target does not
 # support target-defined registers.  Verify that we get a warning if
 # we try to use them.  This not only tests the warning, but also
 # reminds maintainers to add test support when they add the feature.

if {[string equal ${core-regs} ""]} {
    gdb_test "set tdesc file $single_reg_xml" \
"warning: Target-supplied registers are not supported.*" \
"set tdesc file single-reg.xml"
    unsupported "register tests"
    return 0
}
...

The test-case contains target-specific setting of the core-regs variable, and
adding this for riscv64 bypasses this code and makes the test-case pass.

However, without that change, the test-case shouldn't produce a FAIL since
gdb isn't doing anything wrong.

Fix this by producing instead:
...
PASS: $exp: set tdesc file single-reg.xml
UNSUPPORTED: $exp: register tests (missing architecture-specific core-regs setting)
...

Tested on riscv64-linux.

gdb/testsuite/gdb.xml/tdesc-regs.exp

index 7c8b0b8cef8268af19490182cec7ba73e328cbf7..344e387004a73c27e39e813a3aea39a1a93e4f07 100644 (file)
@@ -80,21 +80,38 @@ switch -glob -- [istarget] {
        set regdir "i386/"
         set core-regs {64bit-core.xml 64bit-sse.xml}
     }
+    "riscv64*-*-*" {
+       set architecture "riscv:rv64"
+       set regdir "riscv/"
+       set core-regs 64bit-cpu.xml
+    }
 }
 
-# If no core registers were specified, assume this target does not
-# support target-defined registers.  Verify that we get a warning if
-# we try to use them.  This not only tests the warning, but also
-# reminds maintainers to add test support when they add the feature.
-
 set single_reg_xml [gdb_remote_download host  \
                        "$srcdir/$subdir/single-reg.xml"]
 
 if {[string equal ${core-regs} ""]} {
-    gdb_test "set tdesc file $single_reg_xml" \
-       "warning: Target-supplied registers are not supported.*" \
-       "set tdesc file single-reg.xml"
-    unsupported "register tests"
+    set test "set tdesc file single-reg.xml"
+    set feature_unsupported 0
+    set feature_test_unsupported 0
+    gdb_test_multiple "set tdesc file $single_reg_xml" $test {
+       -re -wrap "warning: Target-supplied registers are not supported" {
+           set feature_unsupported 1
+           pass $gdb_test_name
+       }
+       -re -wrap "warning: Architecture rejected target-supplied description" {
+           set feature_test_unsupported 1
+           pass $gdb_test_name
+       }
+    }
+
+    if { $feature_unsupported } {
+       unsupported "register tests"
+    } elseif { $feature_test_unsupported } {
+       # Remind maintainers to add test support.
+       unsupported "register tests (missing architecture-specific core-regs setting)"
+    }
+
     return 0
 }