Specify architecture for SPARC gas tests

A couple of SPARC gas tests FAIL on Solaris/SPARC (both
sparc-sun-solaris2.11 and sparcv9-sun-solaris2.11):

FAIL: sparc PAUSE
FAIL: sparc CBCOND
FAIL: sparc CFR
FAIL: sparc CRYPTO
FAIL: sparc HPC+VIS3
FAIL: sparc IMA
FAIL: sparc OSA2015 %mwait asr and MWAIT instruction
FAIL: sparc OSA2015 %mcdper asr
FAIL: sparc SPARC5 and VIS4.0
FAIL: OSA2015 crypto instructions
FAIL: SPARC6
FAIL: FPCMPSHL OSA2017 instructions
FAIL: OSA2017 ONADD/ONSUB/ONMUL/ONDIV instructions.
FAIL: OSA2017 RLE instructions
FAIL: sparc64 rdasr
FAIL: sparc64 rdpr
FAIL: sparc64 rdhpr
FAIL: sparc64 wrasr
FAIL: sparc64 wrpr

It turns out there's a common pattern here: failures happen for all
tests that use SPARC ISA extensions beyond sparcv9, e.g. for the sparc
PAUSE test:

regexp_diff match failure
regexp "^   0:  b7 80 40 02     wr  %g1, %g2, %pause$"
line   "   0:   b7 80 40 02     wr  %g1, %g2, %asr27"
[...]
regexp_diff match failure
regexp "^   8:  b7 80 20 08     pause  8$"
line   "   8:   b7 80 20 08     wr  8, %asr27"
[...]

The fix is easy, actually: just as the tests specify the ISA extension
to use as a gas flag, the same needs to be done for objdump.  For the
test above, which has -Av9v, this means passing -msparc:v9v to objdump.
Doing so makes all but two (unrelated; to be reported separately)
failures go away.

This doesn't happen on Linux/SPARC, where gas emits GNU object attributes
matching the hardcare capabilities used.  Since gas doesn't yet implement
Solaris-style object capabilites, the explicit -march is needed, but only
passed on Solaris.

Tested on both sparc-sun-solaris2.11 and sparcv9-sun-solaris2.11.

	* testsuite/gas/sparc/sparc.exp (set_tests_arch): New proc.
	Prefix v9c, v9d, v9v, v9m, v9m8 tests with corresponding
	set_tests_arch.
This commit is contained in:
Rainer Orth 2018-07-20 11:15:57 +02:00
parent 79f5b65e3e
commit 0458ca4440
2 changed files with 62 additions and 23 deletions

View file

@ -1,3 +1,10 @@
2018-07-20 Jose E. Marchesi <jose.marchesi@oracle.com>
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* testsuite/gas/sparc/sparc.exp (set_tests_arch): New proc.
Prefix v9c, v9d, v9v, v9m, v9m8 tests with corresponding
set_tests_arch.
2018-07-19 Jan Beulich <jbeulich@suse.com> 2018-07-19 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (build_evex_prefix): Derive vector length * config/tc-i386.c (build_evex_prefix): Derive vector length

View file

@ -31,6 +31,20 @@ proc gas_64_check { } {
return [regexp "elf64\[_-\]sparc" [lindex $status 1]] return [regexp "elf64\[_-\]sparc" [lindex $status 1]]
} }
# Until binutils support Solaris-style capabilities, specify the arch
# necessary to disassemble the ISA extensions used.
proc set_tests_arch {arch} {
global OBJDUMPFLAGS
if [istarget "sparc*-*-solaris*"] {
if { $arch != "" } {
set OBJDUMPFLAGS "-msparc:$arch"
} else {
set OBJDUMPFLAGS ""
}
}
}
if [istarget sparc*-*-*] { if [istarget sparc*-*-*] {
if [is_elf_format] { if [is_elf_format] {
@ -50,40 +64,53 @@ if [istarget sparc*-*-*] {
run_list_test "pr4587" "" run_list_test "pr4587" ""
run_dump_test "ticc-imm-reg" run_dump_test "ticc-imm-reg"
run_dump_test "v8-movwr-imm" run_dump_test "v8-movwr-imm"
run_dump_test "pause"
run_dump_test "save-args" run_dump_test "save-args"
run_dump_test "cbcond"
set_tests_arch "v9c"
run_dump_test "ldtxa"
set_tests_arch "v9d"
run_dump_test "edge"
set_tests_arch "v9v"
run_dump_test "cbcond"
run_dump_test "cfr"
run_dump_test "crypto"
run_dump_test "hpcvis3"
run_dump_test "ima"
run_dump_test "pause"
set_tests_arch "v9m"
run_dump_test "mcdper"
run_dump_test "mwait"
run_dump_test "sparc5vis4"
run_dump_test "xcrypto"
set_tests_arch "v9m8"
run_dump_test "fpcmpshl"
run_dump_test "ldm-stm"
run_dump_test "ldmf-stmf"
run_dump_test "on"
run_dump_test "rle"
run_dump_test "sparc6"
set_tests_arch ""
run_list_test "cbcond-diag" "-64" run_list_test "cbcond-diag" "-64"
run_dump_test "cfr"
run_dump_test "crypto"
run_dump_test "edge"
run_dump_test "flush" run_dump_test "flush"
run_dump_test "hpcvis3"
run_dump_test "ima"
run_dump_test "ld_st_fsr" run_dump_test "ld_st_fsr"
run_dump_test "ldtw_sttw" run_dump_test "ldtw_sttw"
run_dump_test "ldd_std" run_dump_test "ldd_std"
run_dump_test "ldx_stx" run_dump_test "ldx_stx"
run_dump_test "ldx_efsr" run_dump_test "ldx_efsr"
run_dump_test "mwait"
run_dump_test "mcdper"
run_dump_test "sparc5vis4"
run_dump_test "xcrypto"
run_dump_test "v9branch1" run_dump_test "v9branch1"
run_dump_test "imm-plus-rreg" run_dump_test "imm-plus-rreg"
run_dump_test "dcti-couples-v9" run_dump_test "dcti-couples-v9"
run_dump_test "call-relax" run_dump_test "call-relax"
run_dump_test "sparc6"
run_list_test "sparc6-diag" "-64" run_list_test "sparc6-diag" "-64"
run_dump_test "fpcmpshl"
run_list_test "fpcmpshl-diag" "-64" run_list_test "fpcmpshl-diag" "-64"
run_dump_test "ldm-stm"
run_list_test "ldm-stm-diag" "-64" run_list_test "ldm-stm-diag" "-64"
run_dump_test "ldmf-stmf"
run_list_test "ldmf-stmf-diag" "-64" run_list_test "ldmf-stmf-diag" "-64"
run_dump_test "on"
run_list_test "on-diag" "-64" run_list_test "on-diag" "-64"
run_dump_test "rle"
} else { } else {
# The next tests are a.out only. # The next tests are a.out only.
run_dump_test "call-relax-aout" run_dump_test "call-relax-aout"
@ -95,12 +122,6 @@ if [istarget sparc*-*-*] {
run_dump_test "prefetch" run_dump_test "prefetch"
run_dump_test "set64" run_dump_test "set64"
run_dump_test "synth64" run_dump_test "synth64"
run_dump_test "rdasr"
run_dump_test "rdpr"
run_dump_test "rdhpr"
run_dump_test "wrasr"
run_dump_test "wrpr"
run_dump_test "wrhpr"
run_dump_test "window" run_dump_test "window"
run_dump_test "reloc64" run_dump_test "reloc64"
run_dump_test "pcrel64" run_dump_test "pcrel64"
@ -109,6 +130,17 @@ if [istarget sparc*-*-*] {
run_list_test "hwcaps-bump" "-64 -bump" run_list_test "hwcaps-bump" "-64 -bump"
run_list_test "asi-bump-warn" "-64 -bump" run_list_test "asi-bump-warn" "-64 -bump"
run_list_test "asi-arch-error" "-Av9" run_list_test "asi-arch-error" "-Av9"
set_tests_arch "v9m"
run_dump_test "rdhpr"
run_dump_test "rdpr"
run_dump_test "wrasr"
run_dump_test "wrhpr"
run_dump_test "wrpr"
set_tests_arch "v9m8"
run_dump_test "rdasr"
set_tests_arch ""
} }
run_dump_test "synth" run_dump_test "synth"