summaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-mips-elf/mips-elf-flags.exp
diff options
context:
space:
mode:
authorChenghua Xu <paul.hua.gm@gmail.com>2018-08-24 21:25:15 +0800
committerChenghua Xu <paul.hua.gm@gmail.com>2018-08-24 21:25:15 +0800
commit3da65cd27e9b36ab205ce7820ce566534272da22 (patch)
treef8dd5dafcb24ea9db87b0263bb1074c8f1e14935 /ld/testsuite/ld-mips-elf/mips-elf-flags.exp
parenta9eafb08b3f3dd4cd59757f0b99b44e896d620f1 (diff)
[PATCH] [MIPS] LD/testsuite: Skip 32bit test if ld not support.
ld/ChangeLog: * testsuite/ld-mips-elf/mips-elf-flags.exp (check_ld_support_32bit, check_is_32bit_args): New procedures. (good_combination, bad_combination): Skip 32bit test if ld not support 32bit emulations.
Diffstat (limited to 'ld/testsuite/ld-mips-elf/mips-elf-flags.exp')
-rw-r--r--ld/testsuite/ld-mips-elf/mips-elf-flags.exp40
1 files changed, 40 insertions, 0 deletions
diff --git a/ld/testsuite/ld-mips-elf/mips-elf-flags.exp b/ld/testsuite/ld-mips-elf/mips-elf-flags.exp
index 654f8ae76c..de97939f81 100644
--- a/ld/testsuite/ld-mips-elf/mips-elf-flags.exp
+++ b/ld/testsuite/ld-mips-elf/mips-elf-flags.exp
@@ -36,6 +36,32 @@ if {[istarget mips*-*-irix6*]} {
set ldemul ""
}
+# Check is ld supported 32bit emulations.
+proc check_ld_support_32bit { } {
+ global ld
+ global echo
+
+ set ld_output [remote_exec host $ld "-V"]
+ if [string match "*elf32*" $ld_output] then {
+ return 1
+ } else {
+ return 0
+ }
+}
+
+# Check args is 32bit abis.
+proc check_is_32bit_args {arg} {
+
+ if { [string match "*-32*" $arg]
+ || [string match "*-mabi=32*" $arg]
+ || [string match "*-mabi=o64*" $arg]
+ || [string match "*-mgp32*" $arg] } {
+ return 1
+ } else {
+ return 0
+ }
+}
+
# Assemble jr.s using each of the argument lists in ARGLIST. Return the
# list of object files on success and an empty list on failure.
proc assemble_for_flags {arglist} {
@@ -70,6 +96,13 @@ proc good_combination {arglist flags args} {
set testname "MIPS compatible objects: $arglist"
set objs [assemble_for_flags $arglist]
+ foreach argsl $arglist {
+ if { [check_is_32bit_args $argsl] && ![check_ld_support_32bit] } {
+ unsupported $testname
+ return 0
+ }
+ }
+
if {$objs == ""} {
unresolved $testname
} elseif {![ld_link "$ld $ldemul" $finalobj "-r $objs"]} {
@@ -156,6 +189,13 @@ proc bad_combination {arglist message} {
set testname "MIPS incompatible objects: $arglist"
set objs [assemble_for_flags $arglist]
+ foreach argsl $arglist {
+ if { [check_is_32bit_args $argsl] && ![check_ld_support_32bit] } {
+ unsupported $testname
+ return 0
+ }
+ }
+
if {$objs == ""} {
unresolved $testname
} elseif {[ld_link "$ld $ldemul" $finalobj "-r $objs"]