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:
parent
79f5b65e3e
commit
0458ca4440
2 changed files with 62 additions and 23 deletions
|
@ -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>
|
||||
|
||||
* config/tc-i386.c (build_evex_prefix): Derive vector length
|
||||
|
|
|
@ -31,6 +31,20 @@ proc gas_64_check { } {
|
|||
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 [is_elf_format] {
|
||||
|
@ -50,40 +64,53 @@ if [istarget sparc*-*-*] {
|
|||
run_list_test "pr4587" ""
|
||||
run_dump_test "ticc-imm-reg"
|
||||
run_dump_test "v8-movwr-imm"
|
||||
run_dump_test "pause"
|
||||
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_dump_test "cfr"
|
||||
run_dump_test "crypto"
|
||||
run_dump_test "edge"
|
||||
run_dump_test "flush"
|
||||
run_dump_test "hpcvis3"
|
||||
run_dump_test "ima"
|
||||
run_dump_test "ld_st_fsr"
|
||||
run_dump_test "ldtw_sttw"
|
||||
run_dump_test "ldd_std"
|
||||
run_dump_test "ldx_stx"
|
||||
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 "imm-plus-rreg"
|
||||
run_dump_test "dcti-couples-v9"
|
||||
run_dump_test "call-relax"
|
||||
run_dump_test "sparc6"
|
||||
run_list_test "sparc6-diag" "-64"
|
||||
run_dump_test "fpcmpshl"
|
||||
run_list_test "fpcmpshl-diag" "-64"
|
||||
run_dump_test "ldm-stm"
|
||||
run_list_test "ldm-stm-diag" "-64"
|
||||
run_dump_test "ldmf-stmf"
|
||||
run_list_test "ldmf-stmf-diag" "-64"
|
||||
run_dump_test "on"
|
||||
run_list_test "on-diag" "-64"
|
||||
run_dump_test "rle"
|
||||
} else {
|
||||
# The next tests are a.out only.
|
||||
run_dump_test "call-relax-aout"
|
||||
|
@ -95,12 +122,6 @@ if [istarget sparc*-*-*] {
|
|||
run_dump_test "prefetch"
|
||||
run_dump_test "set64"
|
||||
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 "reloc64"
|
||||
run_dump_test "pcrel64"
|
||||
|
@ -109,6 +130,17 @@ if [istarget sparc*-*-*] {
|
|||
run_list_test "hwcaps-bump" "-64 -bump"
|
||||
run_list_test "asi-bump-warn" "-64 -bump"
|
||||
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"
|
||||
|
|
Loading…
Add table
Reference in a new issue