From 8988502d75343349cee39575c0e4a0b33f7c80e0 Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Wed, 31 Jan 2018 14:47:12 +0000 Subject: [PATCH] MIPS/LD/testsuite: Correct dynamic links with VR4100, VR4300 and VR5000 Correct LD test suite failures with VR4100, VR4300 and VR5000 bare metal MIPS/ELF targets which do not default to linking with shared libraries, which leads to link failures like: .../ld/ld-new: cannot find -lcomm-data FAIL: Common symbol override test or: .../ld/ld-new: attempted static link of dynamic object `tmpdir/pr14170.so' FAIL: PR ld/14170 removing: FAIL: Build pr22471b.so FAIL: Build pr22471 FAIL: Build pr22649-2b.so FAIL: Build pr22649-2d.so FAIL: Build pr22150 FAIL: PR ld/14170 FAIL: --gc-sections with __gxx_personality test failures. ld/ * testsuite/ld-elf/comm-data.exp: Pass `-call_shared' to links involving a shared library for `mips*vr4100*-*-elf*', `mips*vr4300*-*-elf*' and `mips*vr5000*-*-elf*' targets. * testsuite/ld-elf/provide-hidden.exp: Likewise. * testsuite/ld-elf/shared.exp: Likewise. * testsuite/ld-gc/gc.exp: Likewise. * testsuite/ld-mips-elf/comm-data.exp: Likewise. --- ld/ChangeLog | 10 ++++++++++ ld/testsuite/ld-elf/comm-data.exp | 6 ++++++ ld/testsuite/ld-elf/provide-hidden.exp | 14 ++++++++++---- ld/testsuite/ld-elf/shared.exp | 19 ++++++++++++++----- ld/testsuite/ld-gc/gc.exp | 10 +++++++++- ld/testsuite/ld-mips-elf/comm-data.exp | 3 ++- 6 files changed, 51 insertions(+), 11 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 2230eb7f1f9..84d39e71006 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,13 @@ +2018-01-31 Maciej W. Rozycki + + * testsuite/ld-elf/comm-data.exp: Pass `-call_shared' to links + involving a shared library for `mips*vr4100*-*-elf*', + `mips*vr4300*-*-elf*' and `mips*vr5000*-*-elf*' targets. + * testsuite/ld-elf/provide-hidden.exp: Likewise. + * testsuite/ld-elf/shared.exp: Likewise. + * testsuite/ld-gc/gc.exp: Likewise. + * testsuite/ld-mips-elf/comm-data.exp: Likewise. + 2018-01-31 Maciej W. Rozycki * testsuite/ld-elf/elf.exp: Move shared library tests over to... diff --git a/ld/testsuite/ld-elf/comm-data.exp b/ld/testsuite/ld-elf/comm-data.exp index b6150740ef4..d2c2ca5811b 100644 --- a/ld/testsuite/ld-elf/comm-data.exp +++ b/ld/testsuite/ld-elf/comm-data.exp @@ -41,6 +41,12 @@ set LFLAGS "" if [istarget "tic6x-*-*"] { append LFLAGS " -melf32_tic6x_le" } +# These targets do not default to linking with shared libraries. +if { [istarget "mips*vr4100*-*-elf*"] \ + || [istarget "mips*vr4300*-*-elf*"] \ + || [istarget "mips*vr5000*-*-elf*"] } { + append LFLAGS " -call_shared" +} set testname "Common symbol override test" diff --git a/ld/testsuite/ld-elf/provide-hidden.exp b/ld/testsuite/ld-elf/provide-hidden.exp index 2c64cb41806..1fc4e61a191 100644 --- a/ld/testsuite/ld-elf/provide-hidden.exp +++ b/ld/testsuite/ld-elf/provide-hidden.exp @@ -35,6 +35,12 @@ set AFLAGS_PIC "" if [istarget "tic6x-*-*"] { append AFLAGS_PIC " -mpic -mpid=near" } +# These targets do not default to linking with shared libraries. +if { [istarget "mips*vr4100*-*-elf*"] \ + || [istarget "mips*vr4300*-*-elf*"] \ + || [istarget "mips*vr5000*-*-elf*"] } { + append LFLAGS " -call_shared" +} set testname "PROVIDE_HIDDEN test" @@ -77,7 +83,7 @@ run_ld_link_tests [list \ "provide-hidden-3"] \ [list \ "$testname 4" \ - "-T provide-hidden-1.ld" "tmpdir/provide-hidden-s.so" \ + "$LFLAGS -T provide-hidden-1.ld" "tmpdir/provide-hidden-s.so" \ "" \ [list provide-hidden-3.s] \ [list "readelf -s provide-hidden-dynsec.nd"] \ @@ -93,7 +99,7 @@ run_ld_link_tests [list \ "provide-hidden-5"] \ [list \ "$testname 6" \ - "-T provide-hidden-1.ld" "tmpdir/provide-hidden-s.so" \ + "$LFLAGS -T provide-hidden-1.ld" "tmpdir/provide-hidden-s.so" \ "" \ [list provide-hidden-4.s] \ [list \ @@ -129,7 +135,7 @@ run_ld_link_tests [list \ "provide-hidden-9"] \ [list \ "$testname 10" \ - "-T provide-hidden-2.ld" "tmpdir/provide-hidden-s.so" \ + "$LFLAGS -T provide-hidden-2.ld" "tmpdir/provide-hidden-s.so" \ "" \ [list provide-hidden-3.s] \ [list "readelf -s provide-hidden-dynabs.nd"] \ @@ -145,7 +151,7 @@ run_ld_link_tests [list \ "provide-hidden-11"] \ [list \ "$testname 12" \ - "-T provide-hidden-2.ld" "tmpdir/provide-hidden-s.so" \ + "$LFLAGS -T provide-hidden-2.ld" "tmpdir/provide-hidden-s.so" \ "" \ [list provide-hidden-4.s] \ [list \ diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index a1a44ffcefe..5d9ed251e31 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -57,6 +57,12 @@ set hpux "" if [istarget "*-*-hpux*"] { set hpux "--defsym HPUX=1" } +# These targets do not default to linking with shared libraries. +if { [istarget "mips*vr4100*-*-elf*"] \ + || [istarget "mips*vr4300*-*-elf*"] \ + || [istarget "mips*vr5000*-*-elf*"] } { + append LFLAGS " -call_shared" +} if [is_underscore_target] { set ASFLAGS "$ASFLAGS --defsym UNDERSCORE=1" @@ -332,7 +338,8 @@ run_ld_link_tests { # bfin does not currently support copy relocs. run_ld_link_tests [list \ [list "PR ld/14170" \ - "--no-dynamic-linker tmpdir/pr14170a.o tmpdir/pr14170.so" "" $hpux \ + "$LFLAGS --no-dynamic-linker tmpdir/pr14170a.o tmpdir/pr14170.so" "" \ + $hpux \ {pr14170c.s} { } "pr14170" ] \ ] "bfin-*-*" @@ -361,7 +368,7 @@ run_ld_link_tests { {"Build shared library for broken linker scrip test" "-shared --hash-style=sysv" "" "" "note-3.s" {} "note-3.so" } {"Link using broken linker script" - "--script note-3.t tmpdir/note-3.so" "" "" "" + "$LFLAGS --script note-3.t tmpdir/note-3.so" "" "" "" { { ld "note-3.l" } } "a.out" } } @@ -382,7 +389,9 @@ run_ld_link_tests { # bfin does not currently support copy relocs. run_ld_link_tests { {"pr17068 link --as-needed lib in group" - "--as-needed --no-dynamic-linker" "--start-group tmpdir/pr17068a.a tmpdir/pr17068.so tmpdir/pr17068b.a --end-group" "" + "$LFLAGS --as-needed --no-dynamic-linker" + "--start-group tmpdir/pr17068a.a tmpdir/pr17068.so tmpdir/pr17068b.a\ + --end-group" "" {start.s pr17068.s} {} "pr17068"} } "bfin-*-*" @@ -419,7 +428,7 @@ setup_xfail "hppa*64*-*-hpux*" run_ld_link_tests [list \ [list \ "pr20995" \ - "" "tmpdir/pr20995.so" "$AFLAGS_NONPIC" \ + "$LFLAGS" "tmpdir/pr20995.so" "$AFLAGS_NONPIC" \ {pr20995a.s} {{readelf {-S --wide} pr20995.r}} "pr20995"]] # xfail on arm*-*-eabi* is particularly because of no support of GNU_RELRO. @@ -429,7 +438,7 @@ setup_xfail "hppa*64*-*-hpux*" run_ld_link_tests [list \ [list \ "pr20995-2" \ - "" "tmpdir/pr20995-2.so" "$AFLAGS_NONPIC" \ + "$LFLAGS" "tmpdir/pr20995-2.so" "$AFLAGS_NONPIC" \ {pr20995a.s} {{readelf {-S --wide} pr20995.r}} "pr20995-2"]] setup_xfail "tic6x-*-*" diff --git a/ld/testsuite/ld-gc/gc.exp b/ld/testsuite/ld-gc/gc.exp index ad983ef7cdb..a95d2d4900d 100644 --- a/ld/testsuite/ld-gc/gc.exp +++ b/ld/testsuite/ld-gc/gc.exp @@ -116,11 +116,18 @@ if { [is_elf_format] && [check_shared_lib_support] } then { if { [istarget tic6x-*] } then { set gasopt "-mpic -mpid=near" } + # These targets do not default to linking with shared libraries. + set old_ldflags $LDFLAGS + if { [istarget "mips*vr4100*-*-elf*"] \ + || [istarget "mips*vr4300*-*-elf*"] \ + || [istarget "mips*vr5000*-*-elf*"] } { + append LDFLAGS " -call_shared" + } if {![ld_assemble_flags $as $gasopt $srcdir/$subdir/libpersonality.s tmpdir/libpersonality.o] || ![ld_link $ld tmpdir/libpersonality.so "-shared tmpdir/libpersonality.o"] } then { fail libpersonality } else { - run_dump_test "personality" + run_dump_test "personality" [list [list ld $LFLAGS]] } run_dump_test "pr18223" if {![ld_assemble_flags $as $gasopt $srcdir/$subdir/pr20022a.s tmpdir/pr20022a.o] @@ -129,6 +136,7 @@ if { [is_elf_format] && [check_shared_lib_support] } then { } else { run_dump_test "pr20022" } + set LDFLAGS $old_ldflags } if { [is_remote host] || [which $CC] != 0 } { diff --git a/ld/testsuite/ld-mips-elf/comm-data.exp b/ld/testsuite/ld-mips-elf/comm-data.exp index 28ee3b8428c..109e8cebece 100644 --- a/ld/testsuite/ld-mips-elf/comm-data.exp +++ b/ld/testsuite/ld-mips-elf/comm-data.exp @@ -136,7 +136,8 @@ proc mips_comm_data_test { abi flag emul reloc } { run_ld_link_tests [list \ [list \ "$testname" \ - "$LDFLAGS $ZFLAG -T ../ld-elf/comm-data2.ld -Ltmpdir -lmips-$abi-$reloc-comm-data" "" \ + "$LDFLAGS -call_shared $ZFLAG -T ../ld-elf/comm-data2.ld -Ltmpdir\ + -lmips-$abi-$reloc-comm-data" "" \ "$AFLAGS -call_nonpic" \ { ../ld-elf/comm-data2.s } \ { \ -- 2.30.2