+# Copyright (C) 2012-2024 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
# Some generic SPARC and SPARC64 tests
# FIXME: The tests here aren't really bullet proof. A mistake in the opcode
proc gas_64_check { } {
global NM
global NMFLAGS
- global srcdir
- catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help
- return [regexp "elf64\[_-\]sparc" $nm_help]
+ set status [gas_host_run "$NM $NMFLAGS --help" ""]
+ return [regexp "elf64\[_-\]sparc" [lindex $status 1]]
}
-proc sparc_elf_setup { } {
- setup_xfail "sparc*-*-*aout*" "sparc*-*-sunos4*"
- setup_xfail "sparc*-fujitsu-none" "sparc*-*-*n*bsd*"
- setup_xfail "sparc*-*-coff" "sparc*-*-lynxos*"
- clear_xfail "sparc64*-*-*n*bsd*"
- clear_xfail "sparc*-*-netbsdelf*"
+# 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*-*-*] {
- run_dump_test "synth"
- # The next three tests are ELF only.
- sparc_elf_setup
- run_dump_test "unalign"
- sparc_elf_setup
- run_dump_test "pcrel"
- sparc_elf_setup
- run_dump_test "plt"
+
+ if [is_elf_format] {
+ # The next five tests are ELF only.
+ run_dump_test "unalign"
+ run_dump_test "pcrel"
+ run_dump_test "plt"
+ run_dump_test "gotop32"
+ run_dump_test "pc2210"
+ # The features tested in the tests below are not ELF-specific.
+ # However, these features are not present in practice in COFF
+ # and a.out targets. Running them only in ELF targets allows
+ # us to don't have to replicate pattern test files as that
+ # would bring no practical advantage.
+ run_dump_test "natural-32"
+ run_list_test "pr4587" ""
+ run_dump_test "ticc-imm-reg"
+ run_dump_test "v8-movwr-imm"
+ run_dump_test "save-args"
+ run_dump_test "leon"
+ run_dump_test "v8branch"
+
+ set_tests_arch "v9c"
+ run_dump_test "ldtxa"
+
+ set_tests_arch "v9d"
+ run_dump_test "edge"
+
+ set_tests_arch "v9v"
+ 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_dump_test "flush"
+ 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 "v9branch1"
+ run_dump_test "imm-plus-rreg"
+ run_dump_test "dcti-couples-v9"
+ run_dump_test "call-relax"
+ } else {
+ # The next tests are a.out only.
+ run_dump_test "call-relax-aout"
+ }
+
if [gas_64_check] {
run_dump_test "asi"
+ set_tests_arch "v9v"
+ run_dump_test "cbcond"
+ set_tests_arch ""
+ run_dump_test "gotop64"
run_dump_test "membar"
+ run_dump_test "natural"
+ run_dump_test "pcrel64"
+ run_dump_test "plt64"
run_dump_test "prefetch"
+ run_dump_test "reloc64"
run_dump_test "set64"
run_dump_test "synth64"
- run_dump_test "rdpr"
+ run_dump_test "window"
+ run_list_test "asi-arch-error" "-Av9"
+ run_list_test "asi-bump-warn" "-64 -bump"
+ run_list_test "cbcond-diag" "-64"
+ run_list_test "fpcmpshl-diag" "-64"
+ run_list_test "hwcaps-bump" "-64 -bump"
+ run_list_test "ldm-stm-diag" "-64"
+ run_list_test "ldmf-stmf-diag" "-64"
+ run_list_test "on-diag" "-64"
+ run_list_test "sparc6-diag" "-64"
+
+ set_tests_arch "v9m"
run_dump_test "rdhpr"
- run_dump_test "wrpr"
+ run_dump_test "rdpr"
+ run_dump_test "wrasr"
run_dump_test "wrhpr"
- run_dump_test "window"
- run_dump_test "reloc64"
- run_dump_test "pcrel64"
- run_dump_test "plt64"
+ run_dump_test "wrpr"
+
+ set_tests_arch "v9m8"
+ run_dump_test "rdasr"
+ set_tests_arch ""
}
+
+ run_dump_test "synth"
+ run_dump_test "v9branch2"
+ run_dump_test "v9branch3"
+ run_dump_test "v9branch4"
+ run_dump_test "v9branch5"
+ run_dump_test "pr19910-1"
+ run_list_test "pr19910-2"
+ run_dump_test "dcti-couples-v8"
+ run_dump_test "dcti-couples-v9c"
+ run_dump_test "pr20732"
}
if [istarget sparc-*-vxworks*] {