diff options
-rw-r--r-- | ld/testsuite/config/default.exp | 20 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/indirect.exp | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr23658-2.rd | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/shared.exp | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-elfvers/vers.exp | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-gc/gc.exp | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/mips-elf.exp | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/lto.exp | 11 | ||||
-rw-r--r-- | ld/testsuite/ld-plugin/plugin.exp | 15 | ||||
-rw-r--r-- | ld/testsuite/ld-selective/selective.exp | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-shared/shared.exp | 4 |
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 { |