[PATCH] [gdb/testsuite] Fix gdb.xml/tdesc-regs.exp on riscv64

Andrew Burgess aburgess@redhat.com
Wed Sep 4 13:56:41 GMT 2024


Tom de Vries <tdevries@suse.de> writes:

> 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 | 36 +++++++++++++++++++++-------
>  1 file changed, 27 insertions(+), 9 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.xml/tdesc-regs.exp b/gdb/testsuite/gdb.xml/tdesc-regs.exp
> index 7c8b0b8cef8..fdd65fb3bbb 100644
> --- a/gdb/testsuite/gdb.xml/tdesc-regs.exp
> +++ b/gdb/testsuite/gdb.xml/tdesc-regs.exp
> @@ -80,21 +80,39 @@ 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 } {
> +	# Remind maintainers to add the feature.
> +	unsupported "register tests"
> +    } elseif { $feature_test_unsupported } {
> +	# Remind maintainers to add test support.
> +	unsupported "register tests (missing architecture-specific core-regs setting)"

Was the use of '( ... )' around the last bit of text a deliberate
choice?  Text inside trailing parenthesis is not considered part of the
test name, so both the 'unsupported' calls here are for 'register
tests'.

Thanks,
Andrew


> +    }
> +
>      return 0
>  }
>  
>
> base-commit: 265ecaa3379fc6b95fcfd1c934d1e6c27d87439b
> -- 
> 2.35.3



More information about the Gdb-patches mailing list