aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/config/default.exp20
-rw-r--r--ld/testsuite/ld-elf/indirect.exp8
-rw-r--r--ld/testsuite/ld-elf/pr23658-2.rd2
-rw-r--r--ld/testsuite/ld-elf/shared.exp12
-rw-r--r--ld/testsuite/ld-elfvers/vers.exp12
-rw-r--r--ld/testsuite/ld-gc/gc.exp5
-rw-r--r--ld/testsuite/ld-mips-elf/mips-elf.exp2
-rw-r--r--ld/testsuite/ld-plugin/lto.exp11
-rw-r--r--ld/testsuite/ld-plugin/plugin.exp15
-rw-r--r--ld/testsuite/ld-selective/selective.exp2
-rw-r--r--ld/testsuite/ld-shared/shared.exp4
11 files changed, 77 insertions, 16 deletions
diff --git a/ld/testsuite/config/default.exp b/ld/testsuite/config/default.exp
index 5c92547..1bc8760 100644
--- a/ld/testsuite/config/default.exp
+++ b/ld/testsuite/config/default.exp
@@ -155,7 +155,7 @@ if {! [info exists env(CCC_OVERRIDE_OPTIONS)]} {
# installed, but to the O32 ABI in the build tree, because of some
# specs-file hacks. Make sure we use an ABI that is compatible with
# the one we expect.
-if {[istarget mips64*-*-linux*] &&
+if {[istarget mips*64*-*-linux*] && ![istarget mips*64*-*-linux-gnuabi64] &&
(![board_info [target_info name] exists multilib_flags] ||
![string match "*-mabi" [board_info [target_info name] multilib_flags]])
} {
@@ -263,6 +263,24 @@ proc ld_exec { target output } {
default_ld_exec $target $output
}
+#
+# xfail_from_runlist
+# mark a test xfail and remove it from the runlist
+proc xfail_from_runlist { runlist name } {
+ set i 0
+ set rtl $runlist
+ foreach t $runlist {
+ set tn [lindex $t 0]
+ if [string equal $name $tn] {
+ xfail $tn
+ set rtl [lreplace $rtl $i $i]
+ }
+ incr i
+ }
+ return $rtl
+}
+
+
# From gas-defs.exp, to support run_dump_test.
if ![info exists AS] then {
set AS $as
diff --git a/ld/testsuite/ld-elf/indirect.exp b/ld/testsuite/ld-elf/indirect.exp
index ce47713..dfbb097 100644
--- a/ld/testsuite/ld-elf/indirect.exp
+++ b/ld/testsuite/ld-elf/indirect.exp
@@ -219,7 +219,9 @@ proc check_dynamic_syms { test } {
foreach t [list indirect5a indirect5b indirect6a indirect6b] {
set testname [concat $t "dynsym"]
- if { [check_dynamic_syms tmpdir/$t] } {
+ if { [istarget mips*] } {
+ xfail $testname
+ } elseif { [check_dynamic_syms tmpdir/$t] } {
pass $testname
} else {
fail $testname
@@ -252,7 +254,9 @@ run_ld_link_exec_tests $pie_tests
foreach t [list indirect5c indirect5d indirect6c indirect6d] {
set testname [concat $t "dynsym"]
- if { [check_dynamic_syms tmpdir/$t] } {
+ if { [istarget mips*] } {
+ xfail $testname
+ } elseif { [check_dynamic_syms tmpdir/$t] } {
pass $testname
} else {
fail $testname
diff --git a/ld/testsuite/ld-elf/pr23658-2.rd b/ld/testsuite/ld-elf/pr23658-2.rd
index 9f89c4b..e414ae3 100644
--- a/ld/testsuite/ld-elf/pr23658-2.rd
+++ b/ld/testsuite/ld-elf/pr23658-2.rd
@@ -1,5 +1,5 @@
#...
- +[0-9]+ +\.interp \.note.4 \.note.1 \.note.2 \.note.3.*
+ +[0-9]+ +(\.MIPS\.abiflags \.MIPS\.options \.dynamic \.hash \.dynsym \.dynstr \.text |)\.interp \.note.4 \.note.1 \.note.2 \.note.3.*
#...
+[0-9]+ +\.note\.4 \.note\.1 +
+[0-9]+ +\.note\.2 .note\.3 +
diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp
index 1eef9f4..2019275 100644
--- a/ld/testsuite/ld-elf/shared.exp
+++ b/ld/testsuite/ld-elf/shared.exp
@@ -774,9 +774,6 @@ set build_tests {
{"Build libpr16496b.a"
"" "-fPIC"
{pr16496b.c} {} "libpr16496b.a"}
- {"Build libpr16496b.so"
- "-shared -Wl,--no-as-needed tmpdir/pr16496b.o tmpdir/libpr16496a.so" ""
- {dummy.c} {{objdump {-R} pr16496b.od}} "libpr16496b.so"}
{"Build libpr16452a.so"
"-shared -Wl,-soname,libpr16452a.so,--version-script=pr16452.map" "-fPIC"
{pr16452a.c} {} "libpr16452a.so"}
@@ -797,6 +794,15 @@ set build_tests {
{pr18458b.c} {} "libpr18458b.so"}
}
+# MIPS PIC uses different way: .MIPS.stub
+if { ![istarget mips*-linux*] } {
+ append build_tests {
+ {"Build libpr16496b.so"
+ "-shared -Wl,--no-as-needed tmpdir/pr16496b.o tmpdir/libpr16496a.so" ""
+ {dummy.c} {{objdump {-R} pr16496b.od}} "libpr16496b.so"}
+ }
+}
+
run_cc_link_tests [list \
[list \
"Build libpr2404a.so" \
diff --git a/ld/testsuite/ld-elfvers/vers.exp b/ld/testsuite/ld-elfvers/vers.exp
index b266cc0..2ab5487 100644
--- a/ld/testsuite/ld-elfvers/vers.exp
+++ b/ld/testsuite/ld-elfvers/vers.exp
@@ -801,13 +801,13 @@ build_exec "vers3" vers3.c vers3 "-Wl,--no-as-needed" vers1.so vers3.ver vers3.d
# This test fails on MIPS. On the MIPS we must put foo in the dynamic
# symbol table, which the test does not expect.
-setup_xfail "mips*-*-irix*"
+setup_xfail "mips*-*-irix*" "mips*-linux-*"
build_exec "vers4" vers4.c vers4 "" "" "" "" vers4.sym
build_exec "vers4a" vers4.c vers4a "-Wl,-export-dynamic" "" vers4a.ver vers4a.dsym vers4a.sym
# Verify that --no-export-dynamic undoes the effect of --export-dynamic.
-setup_xfail "mips*-*-irix*"
+setup_xfail "mips*-*-irix*" "mips*-linux-*"
build_exec "vers4b" vers4.c vers4b "-Wl,-export-dynamic -Wl,--no-export-dynamic" "" "" "" vers4.sym
@@ -932,18 +932,20 @@ set as_pic_flags ""
if [istarget sparc*-*-*] {
set as_pic_flags "-K PIC"
}
-run_ld_link_tests [list "\"vers24a\"
+if { ![istarget mips*-*-*] } {
+ run_ld_link_tests [list "\"vers24a\"
\"-shared --version-script $srcdir/$subdir/vers24.map\" \"\"
\"$as_pic_flags $as_options\" {vers24a.c vers24b.c} { { readelf -Wrs vers24.rd } }
\"libvers24a.so\" \"-fpic\""]
-run_ld_link_tests [list "\"vers24b\"
+ run_ld_link_tests [list "\"vers24b\"
\"-shared --version-script $srcdir/$subdir/vers24.map\" \"\"
\"$as_pic_flags $as_options\" {vers24b.c vers24a.c} { { readelf -Wrs vers24.rd } }
\"libvers24b.so\" \"-fpic\""]
-run_ld_link_tests [list "\"vers24c\"
+ run_ld_link_tests [list "\"vers24c\"
\"-shared --version-script $srcdir/$subdir/vers24.map\" \"\"
\"$as_pic_flags $as_options\" {vers24c.c} { { readelf -Wrs vers24.rd } }
\"libvers24c.so\" \"-fpic\""]
+}
# Test versioned definition vs. normal definition in different files.
if [string match "yes" $pic] then {
diff --git a/ld/testsuite/ld-gc/gc.exp b/ld/testsuite/ld-gc/gc.exp
index bca0397..e342c3b 100644
--- a/ld/testsuite/ld-gc/gc.exp
+++ b/ld/testsuite/ld-gc/gc.exp
@@ -151,6 +151,10 @@ if { [check_compiler_available] } {
}
}
+set save_asflags $ASFLAGS
+if { [istarget "mips*-*-linux*"] } {
+ append ASFLAGS " -KPIC"
+}
set symdefs ""
if [is_pecoff_format] {
set symdefs {{ld {--defsym __main=main --defsym ___main=main}}}
@@ -174,6 +178,7 @@ if { [check_compiler_available] } {
}
run_dump_test "pr19161" $symdefs
}
+set ASFLAGS $save_asflags
if { [is_elf_format] && [check_shared_lib_support] \
&& [check_compiler_available] } {
diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp
index ee0522b..4565bc9 100644
--- a/ld/testsuite/ld-mips-elf/mips-elf.exp
+++ b/ld/testsuite/ld-mips-elf/mips-elf.exp
@@ -1101,7 +1101,7 @@ if { $has_abi(o32) } {
}
run_dump_test_o32 "mips16-local-stubs-1"
-run_dump_test_n32 "mips16-local-stubs-1"
+run_dump_test_n32 "mips16-local-stubs-1" noarch
set mips16_fp_stub_test [list \
[list "Floating-point stub for mips16 functions" \
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
index e7e7952..a4b546d 100644
--- a/ld/testsuite/ld-plugin/lto.exp
+++ b/ld/testsuite/ld-plugin/lto.exp
@@ -557,7 +557,7 @@ if { ! [istarget "arm*-*-*"] } {
# when using the LTO plugin. The HPPA target however requires an
# executable stack for syscall restarts and signal returns, so we
# skip this test for that target.
-if { ! [istarget "hppa*-*-*"] } {
+if { ! [istarget "hppa*-*-*"] && ! [istarget "mips*-linux*"] } {
lappend lto_link_elf_tests \
[list "PR ld/12982" \
"-O2 -flto -fuse-linker-plugin" "-O2 -flto" \
@@ -909,6 +909,10 @@ if { [at_least_gcc_version 4 7] } {
}
}
+set save_asflags $ASFLAGS
+if { [istarget "mips*-*-linux*"] } {
+ append ASFLAGS " -KPIC"
+}
# Run "ld -r" to generate inputs for complex LTO tests.
run_dump_test "lto-3r"
remote_exec host "mv" "tmpdir/dump tmpdir/lto-3.o"
@@ -922,7 +926,12 @@ run_ld_link_tests [list \
"-r tmpdir/pr19317.o" "" "" \
{dummy.s} {} "pr19317-r.o"] \
]
+set ASFLAGS $save_asflags
+if { [istarget "mips*-*-linux*"] } {
+ set lto_run_tests [xfail_from_runlist $lto_run_tests "PR ld/15323 (4)"]
+ set lto_run_tests [xfail_from_runlist $lto_run_tests "PR ld/19317 (3)"]
+}
run_ld_link_exec_tests $lto_run_tests
if { [is_elf_format] } {
diff --git a/ld/testsuite/ld-plugin/plugin.exp b/ld/testsuite/ld-plugin/plugin.exp
index bbb8ced..ce7d406 100644
--- a/ld/testsuite/ld-plugin/plugin.exp
+++ b/ld/testsuite/ld-plugin/plugin.exp
@@ -295,6 +295,15 @@ if { !$can_compile || $failed_compile } {
return
}
+if { [istarget "mips*-*-linux*"] } {
+ set plugin_tests [xfail_from_runlist $plugin_tests "plugin claimfile lost symbol"]
+ set plugin_tests [xfail_from_runlist $plugin_tests "plugin claimfile replace symbol"]
+ set plugin_tests [xfail_from_runlist $plugin_tests "plugin claimfile resolve symbol"]
+ set plugin_tests [xfail_from_runlist $plugin_tests "plugin claimfile lost symbol with source"]
+ set plugin_tests [xfail_from_runlist $plugin_tests "plugin claimfile replace symbol with source"]
+ set plugin_tests [xfail_from_runlist $plugin_tests "plugin claimfile resolve symbol with source"]
+ set plugin_tests [xfail_from_runlist $plugin_tests "plugin claimfile resolve symbol with source"]
+}
run_ld_link_tests $plugin_tests
if { [is_elf_format] \
@@ -355,6 +364,12 @@ if { [regexp "0+ T func" "$plugin_nm_output"] &&
# Check if ar --plugin works.
file delete tmpdir/libfunc.a
+if { [istarget "mips*-*-linux*"] } {
+ set plugin_src_tests [xfail_from_runlist $plugin_src_tests "plugin 2 with source lib"]
+ set plugin_src_tests [xfail_from_runlist $plugin_src_tests "load plugin 2 with source"]
+ set plugin_src_tests [xfail_from_runlist $plugin_src_tests "plugin 3 with source lib"]
+ set plugin_src_tests [xfail_from_runlist $plugin_src_tests "load plugin 3 with source"]
+}
if [ar_simple_create $ar "--plugin $plugin2_path" "tmpdir/libfunc.a" \
"tmpdir/main.o $srcdir/$subdir/func.c"] {
set testname "ar --plugin"
diff --git a/ld/testsuite/ld-selective/selective.exp b/ld/testsuite/ld-selective/selective.exp
index 813a52d..2531a5e 100644
--- a/ld/testsuite/ld-selective/selective.exp
+++ b/ld/testsuite/ld-selective/selective.exp
@@ -52,7 +52,7 @@ set ldflags "--gc-sections -Bstatic"
if [istarget mips*-*] {
# MIPS16 doesn't support PIC code.
- set cflags "-mno-abicalls $cflags"
+ set cflags "-mno-abicalls -fno-PIC $cflags"
# MIPS ELF uses __start by default, we override it.
set ldflags "-e _start $ldflags"
}
diff --git a/ld/testsuite/ld-shared/shared.exp b/ld/testsuite/ld-shared/shared.exp
index f56e42f..3b0addd 100644
--- a/ld/testsuite/ld-shared/shared.exp
+++ b/ld/testsuite/ld-shared/shared.exp
@@ -220,7 +220,7 @@ if ![ld_compile "$CC_FOR_TARGET $SHCFLAG" $srcdir/$subdir/main.c $tmpdir/mainnp.
|| ![ld_compile "$CC_FOR_TARGET $PLT_CFLAGS $SHCFLAG" $srcdir/$subdir/sh2.c $tmpdir/sh2np.o] } {
unsupported "shared (non PIC)"
} else { if { [is_xcoff_format] } {
- shared_test shnp "shared (nonPIC)" mainnp.o sh1np.o sh2np.o xcoff
+ shared_test shnp "shared (non PIC)" mainnp.o sh1np.o sh2np.o xcoff
} else {
# Solaris defaults to -z text.
setup_xfail "*-*-solaris2*"
@@ -242,6 +242,7 @@ if ![ld_compile "$CC_FOR_TARGET $SHCFLAG" $srcdir/$subdir/main.c $tmpdir/mainnp.
setup_xfail "arm*-*-linux*"
}
setup_xfail "aarch64*-*-linux*"
+ setup_xfail "mips*-*-linux*"
shared_test shnp "shared (non PIC)" mainnp.o sh1np.o sh2np.o shared
# Test ELF shared library relocations with a non-zero load
@@ -323,6 +324,7 @@ if ![ld_compile "$CC_FOR_TARGET $SHCFLAG $picflag" $srcdir/$subdir/main.c $tmpdi
setup_xfail "arm*-*-linux*"
}
setup_xfail "aarch64*-*-linux*"
+ setup_xfail "mips*-*-linux*"
shared_test shmpnp "shared (PIC main, non PIC so)" mainp.o sh1np.o sh2np.o shared
}
} else {