+2020-07-26 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * testsuite/binutils-all/mips/mips.exp (run_dump_test_abi)
+ (run_dump_test_o32, run_dump_test_n32, run_dump_test_n64): New
+ procedures.
+ (has_newabi): Remove variable.
+ (has_abi, abi_asflags, abi_ldflags): New associative array
+ variables.
+ (irixemul): New variable.
+ Replace `run_dump_test' calls where applicable throughout with
+ `run_dump_test_o32', `run_dump_test_n32' and `run_dump_test_n64'
+ as appropriate. Use `noarch' for tests that require their own
+ architecture setting.
+ * testsuite/binutils-all/mips/mips-ase-1.d: Remove GAS flags.
+ * testsuite/binutils-all/mips/mips-ase-2.d: Likewise.
+ * testsuite/binutils-all/mips/mips-ase-3.d: Likewise.
+ * testsuite/binutils-all/mips/mips-note-2-n32.d: Likewise.
+ * testsuite/binutils-all/mips/mips-note-2-n64.d: Likewise.
+ * testsuite/binutils-all/mips/mips-note-2.d: Likewise.
+ * testsuite/binutils-all/mips/mips-note-2r-n32.d: Likewise.
+ * testsuite/binutils-all/mips/mips-note-2r-n64.d: Likewise.
+ * testsuite/binutils-all/mips/mips-note-2r.d: Likewise.
+ * testsuite/binutils-all/mips/mips-reginfo-n32.d: Likewise.
+ * testsuite/binutils-all/mips/mips-reginfo.d: Likewise.
+ * testsuite/binutils-all/mips/mips16-extend-noinsn.d: Likewise.
+ * testsuite/binutils-all/mips/mips16-pcrel.d: Likewise.
+ * testsuite/binutils-all/mips/mips16-alias.d: Remove `-32' from
+ GAS flags.
+ * testsuite/binutils-all/mips/mips16-extend-insn.d: Likewise.
+ * testsuite/binutils-all/mips/mips16-noalias.d: Likewise.
+ * testsuite/binutils-all/mips/mips16-undecoded.d: Likewise.
+ * testsuite/binutils-all/mips/mips16e2-extend-insn.d: Likewise.
+ * testsuite/binutils-all/mips/mips16e2-undecoded.d: Likewise.
+ * testsuite/binutils-all/mips/mixed-micromips.d: Likewise.
+ * testsuite/binutils-all/mips/mixed-mips16.d: Likewise.
+
2020-07-24 Aaron Merey <amerey@redhat.com>
* Makefile.am: Replace LIBDEBUGINFOD with DEBUGINFOD_LIBS.
set copyfile tmpdir/copy
}
-set has_newabi [expr [istarget *-*-irix6*] \
- || [istarget mips*-*-linux*] \
- || [istarget mips*-sde-elf*] \
- || [istarget mips*-mti-elf*] \
- || [istarget mips*-img-elf*]]
-
-run_dump_test "mips-ase-1"
-run_dump_test "mips-ase-2"
-run_dump_test "mips-ase-3"
+# run_dump_test_abi ABI NAME ARGS
+#
+# Invoke "run_dump_test" for test NAME using ABI if supported by the
+# target used, passing predefined ABI-specific arguments. ARGS are
+# as with "run_dump_test" and are appended to ABI-specific arguments,
+# except for the special "noarch" keyword, which, if present, must
+# appear first and is consumed causing any "-march=" option to be
+# removed from ABI-specific GAS arguments, and likewise the special
+# "useld" keyword, which, if present, must be next and is consumed
+# causing LD arguments to be passed.
+proc run_dump_test_abi { abi name args } {
+ global abi_asflags
+ global abi_ldflags
+ global has_abi
+
+ set args [lindex $args 0]
+ set asflags $abi_asflags($abi)
+ if { [lindex $args 0] == "noarch" } {
+ set asflags [regsub -- {-march=[^[:blank:]]*} $asflags {}]
+ set args [lreplace $args 0 0]
+ }
+ if { [lindex $args 0] == "useld" } {
+ set ldflags $abi_ldflags($abi)
+ set args [lreplace $args 0 0]
+ }
+ if !$has_abi($abi) {
+ lappend args {notarget *-*-*}
+ }
+
+ set testargs [list [list as $asflags]]
+ if { [info exists ldflags] } {
+ lappend testargs [list ld $ldflags]
+ }
+ if { [llength $args] > 0 } {
+ set testargs [concat $testargs $args]
+ }
+
+ run_dump_test $name $testargs
+}
+
+# run_dump_test_o32 NAME ARGS
+#
+# Invoke "run_dump_test_abi" for test NAME using the o32 ABI and
+# passing ARGS.
+proc run_dump_test_o32 { name args } {
+ run_dump_test_abi o32 $name [lindex $args 0]
+}
+
+# run_dump_test_n32 NAME ARGS
+#
+# Invoke "run_dump_test_abi" for test NAME using the n32 ABI and
+# passing ARGS.
+proc run_dump_test_n32 { name args } {
+ run_dump_test_abi n32 $name [lindex $args 0]
+}
+
+# run_dump_test_n64 NAME ARGS
+#
+# Invoke "run_dump_test_abi" for test NAME using the n64 ABI and
+# passing ARGS.
+proc run_dump_test_n64 { name args } {
+ run_dump_test_abi n64 $name [lindex $args 0]
+}
+
+set has_abi(o32) [expr ![istarget *-*-openbsd*] \
+ && ![istarget mips64*el-ps2-elf*]]
+set has_abi(n32) [expr [istarget *-img-elf*] \
+ || [istarget *-mti-elf*] \
+ || [istarget mips64*el-ps2-elf*] \
+ || [istarget *-sde-elf*] \
+ || [istarget *-*-freebsd*] \
+ || [istarget *-*-irix6*] \
+ || [istarget *-*-kfreebsd*-gnu] \
+ || [istarget *-*-linux*]]
+set has_abi(n64) [expr [istarget *-*-freebsd*] \
+ || [istarget *-*-irix6*] \
+ || [istarget *-*-kfreebsd*-gnu] \
+ || [istarget *-*-linux*] \
+ || [istarget *-*-netbsd*] \
+ || [istarget *-*-openbsd*]]
+
+# Set defaults.
+set abi_asflags(o32) ""
+set abi_asflags(n32) ""
+set abi_asflags(n64) ""
+set abi_asflags(eabi) ""
+set abi_ldflags(o32) ""
+set abi_ldflags(n32) ""
+set abi_ldflags(n64) ""
+set abi_ldflags(eabi) ""
+
+# Override as needed.
+if {[istarget *-*-openbsd*] } {
+ set irixemul 0
+} elseif { [istarget mips64*-*-linux*] } {
+ if [istarget *el-*-*] {
+ set abi_asflags(o32) -32
+ set abi_ldflags(o32) -melf32ltsmip
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(n64) -melf64ltsmip
+ } else {
+ set abi_asflags(o32) -32
+ set abi_ldflags(o32) -melf32btsmip
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(n64) -melf64btsmip
+ }
+ set irixemul 0
+} elseif {[istarget *-*-linux*] } {
+ if [istarget *el-*-*] {
+ set abi_asflags(n32) "-march=from-abi -n32"
+ set abi_ldflags(n32) -melf32ltsmipn32
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(n64) -melf64ltsmip
+ } else {
+ set abi_asflags(n32) "-march=from-abi -n32"
+ set abi_ldflags(n32) -melf32btsmipn32
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(n64) -melf64btsmip
+ }
+ set irixemul 0
+} elseif {[istarget *-img-elf*] \
+ || [istarget *-mti-elf*] \
+ || [istarget *-sde-elf*] \
+ || [istarget *-*-netbsd*] \
+ || [istarget *-*-linux*] \
+ || [istarget *-*-sysv4*] } {
+ if [istarget *el-*-*] {
+ set abi_asflags(o32) -32
+ set abi_asflags(n32) "-march=from-abi -n32"
+ set abi_ldflags(n32) -melf32ltsmipn32
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(n64) -melf64ltsmip
+ } else {
+ set abi_asflags(o32) -32
+ set abi_asflags(n32) "-march=from-abi -n32"
+ set abi_ldflags(n32) -melf32btsmipn32
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(n64) -melf64btsmip
+ }
+ set irixemul 0
+} elseif { [istarget mips64*-*-freebsd*] \
+ || [istarget mips64*-*-kfreebsd*-gnu] } {
+ if [istarget *el-*-*] {
+ set abi_asflags(o32) -32
+ set abi_ldflags(o32) -melf32ltsmip_fbsd
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(n64) -melf64ltsmip_fbsd
+ } else {
+ set abi_asflags(o32) -32
+ set abi_ldflags(o32) -melf32btsmip_fbsd
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(n64) -melf64btsmip_fbsd
+ }
+ set irixemul 0
+} elseif { [istarget *-*-freebsd*] \
+ || [istarget *-*-kfreebsd*-gnu] } {
+ if [istarget *el-*-*] {
+ set abi_asflags(n32) "-march=from-abi -n32"
+ set abi_ldflags(n32) -melf32ltsmipn32_fbsd
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(n64) -melf64ltsmip_fbsd
+ } else {
+ set abi_asflags(n32) "-march=from-abi -n32"
+ set abi_ldflags(n32) -melf32btsmipn32_fbsd
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(n64) -melf64btsmip_fbsd
+ }
+ set irixemul 0
+} elseif { [istarget *vr4100*-*-elf*] \
+ || [istarget *vr4300*-*-elf*] \
+ || [istarget *vr5000*-*-elf*] } {
+ set abi_asflags(o32) -32
+ set irixemul 1
+} elseif { [istarget mips64*el-ps2-elf*] } {
+ set abi_asflags(o32) -32
+ set abi_ldflags(o32) -melf32lr5900
+ set irixemul 1
+} elseif { [istarget *-*-elf*] \
+ || [istarget *-*-rtems*] } {
+ set abi_asflags(o32) -32
+ set irixemul 1
+} elseif { [istarget *-*-irix6*] } {
+ set abi_asflags(o32) -32
+ set abi_asflags(n64) "-march=from-abi -64"
+ set abi_ldflags(o32) -melf32bsmip
+ set abi_ldflags(n64) -melf64bmip
+ set irixemul 1
+} else {
+ set abi_asflags(o32) -32
+ set irixemul 1
+}
+
+run_dump_test_o32 "mips-ase-1"
+run_dump_test_o32 "mips-ase-2"
+run_dump_test_o32 "mips-ase-3"
run_dump_test "mips-xpa-virt-1"
run_dump_test "mips-xpa-virt-2"
run_dump_test "mips-xpa-virt-3"
run_dump_test "mips-xpa-virt-4"
-run_dump_test "mixed-mips16"
-run_dump_test "mixed-micromips"
+run_dump_test_o32 "mixed-mips16" noarch
+run_dump_test_o32 "mixed-micromips" noarch
run_dump_test "mixed-mips16-micromips"
-run_dump_test "mips16-undecoded"
-run_dump_test "mips16e2-undecoded"
-run_dump_test "mips16-pcrel"
-run_dump_test "mips16-extend-noinsn"
-run_dump_test "mips16-extend-insn"
-run_dump_test "mips16e2-extend-insn"
-run_dump_test "mips16-alias"
-run_dump_test "mips16-noalias"
-
-run_dump_test "mips-note-2"
-run_dump_test "mips-note-2r"
-if $has_newabi {
- run_dump_test "mips-note-2-n32"
- run_dump_test "mips-note-2-n64"
- run_dump_test "mips-note-2r-n32"
- run_dump_test "mips-note-2r-n64"
-}
+run_dump_test_o32 "mips16-undecoded" noarch
+run_dump_test_o32 "mips16e2-undecoded" noarch
+run_dump_test_o32 "mips16-pcrel"
+run_dump_test_o32 "mips16-extend-noinsn"
+run_dump_test_o32 "mips16-extend-insn" noarch
+run_dump_test_o32 "mips16e2-extend-insn" noarch
+run_dump_test_o32 "mips16-alias" noarch
+run_dump_test_o32 "mips16-noalias" noarch
-run_dump_test "mips-reginfo"
-if $has_newabi {
- run_dump_test "mips-reginfo-n32"
-}
+run_dump_test_o32 "mips-note-2"
+run_dump_test_n32 "mips-note-2-n32"
+run_dump_test_n64 "mips-note-2-n64"
+run_dump_test_o32 "mips-note-2r"
+run_dump_test_n32 "mips-note-2r-n32"
+run_dump_test_n64 "mips-note-2r-n64"
+
+run_dump_test_o32 "mips-reginfo"
+run_dump_test_n32 "mips-reginfo-n32"