MIPS/LD/testsuite: Correct dynamic links with VR4100, VR4300 and VR5000
authorMaciej W. Rozycki <macro@mips.com>
Wed, 31 Jan 2018 14:47:12 +0000 (14:47 +0000)
committerMaciej W. Rozycki <macro@mips.com>
Wed, 31 Jan 2018 14:47:12 +0000 (14:47 +0000)
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
ld/testsuite/ld-elf/comm-data.exp
ld/testsuite/ld-elf/provide-hidden.exp
ld/testsuite/ld-elf/shared.exp
ld/testsuite/ld-gc/gc.exp
ld/testsuite/ld-mips-elf/comm-data.exp

index 2230eb7f1f966db658fe551e4cfd77b5df3238f8..84d39e7100659667cb7eaef62597dc0596519073 100644 (file)
@@ -1,3 +1,13 @@
+2018-01-31  Maciej W. Rozycki  <macro@mips.com>
+
+       * 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  <macro@mips.com>
 
        * testsuite/ld-elf/elf.exp: Move shared library tests over to...
index b6150740ef4a6b2163a12c8eeb2be4dba625c102..d2c2ca5811b0800de514ebc5fdc2165e0f65d1da 100644 (file)
@@ -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"
 
index 2c64cb418069fe3a0c3ac95265dc5e5d102fcbbe..1fc4e61a19127d31b7768904262900cd71165be3 100644 (file)
@@ -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 \
index a1a44ffcefeb0a53d7ef9220d44abef8300e5012..5d9ed251e316d207c2f689ea3efd6423bcb67ab5 100644 (file)
@@ -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-*-*"
index ad983ef7cdbe2dac37706630d49640da0caaffd6..a95d2d4900d3c203bde69ce6042f76b364ad7e6d 100644 (file)
@@ -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 } {
index 28ee3b8428cba7ce2e39e76e6ba0d084d9e71917..109e8cebece15f494350ece7b8b462dde158a599 100644 (file)
@@ -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 } \
            { \