From: Tom de Vries Date: Tue, 10 Sep 2024 08:25:07 +0000 (+0200) Subject: [gdb/testsuite] Fix gdb.xml/tdesc-regs.exp on riscv64 X-Git-Tag: gdb-16-branchpoint~933 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=258c81da3c13971dc7667f30baf506ececd2cc0e;p=thirdparty%2Fbinutils-gdb.git [gdb/testsuite] Fix gdb.xml/tdesc-regs.exp on riscv64 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. --- diff --git a/gdb/testsuite/gdb.xml/tdesc-regs.exp b/gdb/testsuite/gdb.xml/tdesc-regs.exp index 7c8b0b8cef8..344e387004a 100644 --- a/gdb/testsuite/gdb.xml/tdesc-regs.exp +++ b/gdb/testsuite/gdb.xml/tdesc-regs.exp @@ -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 }