summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@mips.com>2018-01-31 14:47:12 +0000
committerMaciej W. Rozycki <macro@mips.com>2018-01-31 14:47:12 +0000
commitf3a9baf18db14707276a8c911d4a6409ad965926 (patch)
tree84823bce33ece94a1ba1a5ceaa20bb61723929fd
parent3045b47554503c6f154e446662204e295fc769a1 (diff)
downloadbinutils-gdb-f3a9baf18db14707276a8c911d4a6409ad965926.tar.gz
LD/testsuite: Move ELF shared library tests from elf.exp to shared.exp
Move those ELF shared library tests that are in ld-elf/elf.exp over to ld-elf/shared.exp, to keep them all together and make the maintenance of extra flags needed with some targets and shared library builds easier, and also removing the need for the large: if { [check_shared_lib_support] } then { [...] } conditional block and consequently reducing indentation, which always helps with TCL code. No functional change, except for the order of individual test case execution which has changed accordingly, i.e. the test results are shuffled. ld/ * testsuite/ld-elf/elf.exp: Move shared library tests over to... * testsuite/ld-elf/shared.exp: ... here.
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/testsuite/ld-elf/elf.exp155
-rw-r--r--ld/testsuite/ld-elf/shared.exp157
3 files changed, 162 insertions, 155 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 2042e6c0031..2230eb7f1f9 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-31 Maciej W. Rozycki <macro@mips.com>
+
+ * testsuite/ld-elf/elf.exp: Move shared library tests over to...
+ * testsuite/ld-elf/shared.exp: ... here.
+
2018-01-31 Michael Matz <matz@suse.de>
* testsuite/ld-elf/pr21964-5.c: New test.
diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp
index 0b005dea906..b74b82ceab5 100644
--- a/ld/testsuite/ld-elf/elf.exp
+++ b/ld/testsuite/ld-elf/elf.exp
@@ -117,146 +117,6 @@ run_ld_link_tests {
{pr21703-3.s pr21703-4.s} {{readelf {-s} pr21703-r.sd}} "pr21703.o" }
} "d30v-*-*" "dlx-*-*" "pj-*-*"
-# Only run these tests on targets that support creating shared libraries.
-if { [check_shared_lib_support] } then {
- run_ld_link_tests {
- {"Build pr14170a.o" "" "" "" {pr14170a.s} {} "pr14170.a" }
- }
- run_ld_link_tests {
- {"Build shared library for pr14170"
- "-shared" "" "" "pr14170b.s" {} "pr14170.so" }
- } "tic6x-*-*"
-
- # 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 \
- {pr14170c.s} { } "pr14170" ] \
- ] "bfin-*-*"
-
- # Targets that use _bfd_generic_link_add_symbols won't pass pr21703 tests
- # Not will tic6x with PIC/PID warning, or hppa64 with dot-symbols
- run_ld_link_tests {
- {"PR ld/21703 shared"
- "-shared --allow-multiple-definition --version-script pr21703.ver tmpdir/pr21703-3.o tmpdir/pr21703-4.o" "" "" \
- {pr21703-3.s pr21703-4.s} {{readelf {--dyn-syms} pr21703-shared.sd}} "pr21703.so" }
- } "d30v-*-*" "dlx-*-*" "pj-*-*" "tic6x-*-*" "hppa64-*-*"
-
- # This target requires extra GAS options when building non-PIC code
- # for linking with shared libraries.
- set AFLAGS_NONPIC ""
- if [istarget "mips*-*-*"] {
- append AFLAGS_NONPIC " -call_nonpic"
- }
-
- # Run a test to check linking a shared library with a broken linker
- # script that accidentally marks dynamic sections as notes. The
- # resulting executable is not expected to work, but the linker
- # should not seg-fault whilst creating the binary.
- # Note: setup_xfail before run_ld_link_tests xfails only the first test.
- setup_xfail "tic6x-*-*"
- 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" "" "" ""
- { { ld "note-3.l" } }
- "a.out" }
- }
-
- setup_xfail "tic6x-*-*"
- run_ld_link_tests {
- {"Build pr17068.so"
- "-shared" "" ""
- {pr17068d.s} {} "pr17068.so"}
- {"Build pr17068a.a"
- "" "" ""
- {pr17068a.s pr17068c.s pr17068ez.s} {} "pr17068a.a"}
- {"Build pr17068b.a"
- "" "" ""
- {pr17068b.s pr17068e.s} {} "pr17068b.a"}
- }
-
- # 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" ""
- {start.s pr17068.s} {} "pr17068"}
- } "bfin-*-*"
-
- # xfail on tic6x due to non-PIC/non-PID warnings
- # Fails on MIPS because ABI trickery means that a NULL reloc is emitted.
- # Fails on bfin because relocations are not created.
- run_ld_link_tests {
- {"-Bsymbolic-functions"
- "-shared -Bsymbolic-functions" "" ""
- {symbolic-func.s} {{readelf {-r --wide} symbolic-func.r}}
- "symbolic-func.so"}
- } "tic6x-*-*" "mips*-*-*" "bfin-*-*"
-
- # xfail on tic6x due to non-PIC/non-PID warnings
- run_ld_link_tests {
- {"Build pr20995.so"
- "-shared" "" ""
- {pr20995b.s} {} "pr20995.so"}
- } "tic6x-*-*"
-
- # xfail on arm*-*-eabi*. The list can be enlarged to those targets that
- # don't support GNU_RELRO. For more details, please see discussions at:
- # https://sourceware.org/ml/binutils/2017-01/msg00441.html
- run_ld_link_tests {
- {"Build pr20995-2.so"
- "-shared -z relro" "" ""
- {pr20995c.s} {{readelf {-l --wide} pr20995-2so.r}} "pr20995-2.so"}
- } "tic6x-*-*" "arm*-*-eabi*" "hppa*64*-*-hpux*"
-
- # These targets don't copy dynamic variables into .bss.
- setup_xfail "alpha-*-*" "bfin-*-*" "ia64-*-*" "xtensa-*-*"
- # or don't have .data.rel.ro
- setup_xfail "hppa*64*-*-hpux*"
- run_ld_link_tests [list \
- [list \
- "pr20995" \
- "" "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.
- # Please see the link above for details.
- setup_xfail "alpha-*-*" "bfin-*-*" "ia64-*-*" "xtensa-*-*" "arm*-*-eabi*"
- setup_xfail "hppa*64*-*-hpux*"
- run_ld_link_tests [list \
- [list \
- "pr20995-2" \
- "" "tmpdir/pr20995-2.so" "$AFLAGS_NONPIC" \
- {pr20995a.s} {{readelf {-S --wide} pr20995.r}} "pr20995-2"]]
-
- setup_xfail "tic6x-*-*"
- run_ld_link_tests {
- {"Build pr22374 shared library"
- "-shared" "" "" "pr22374b.s" {} "pr22374.so" }
- }
- if { ![istarget "alpha-*-*"]
- && ![istarget "frv-*-*"]
- && ![istarget "hppa*-*-*"]
- && ![istarget "i?86-*-*"]
- && ![istarget "ia64-*-*"]
- && ![istarget "microblaze-*-*"]
- && ![istarget "powerpc*-*-*"]
- && ![istarget "x86_64-*-*"]
- && ![istarget "xtensa-*-*"] } {
- # The next test checks that copy relocs are not used unnecessarily,
- # but that is just an optimization so don't complain loudly.
- setup_xfail "*-*-*"
- }
- run_ld_link_tests {
- {"pr22374 function pointer initialization"
- "" "tmpdir/pr22374.so" "" "pr22374a.s"
- { {readelf {--wide -r --dyn-syms} "pr22374-1.r"}
- {readelf {--wide -r} "pr22374-2.r"} }
- "pr22374" }
- }
-}
-
if [is_underscore_target] {
set ASFLAGS "$ASFLAGS --defsym UNDERSCORE=1"
}
@@ -291,21 +151,6 @@ run_ld_link_tests [list \
"implib" ] \
] $xfail_implib
-if { [istarget *-*-linux*]
- || [istarget *-*-nacl*]
- || [istarget *-*-gnu*] } {
- run_ld_link_tests {
- {"Weak symbols in dynamic objects 1 (support)"
- "-shared" "" "" {weak-dyn-1a.s}
- {}
- "libweakdyn1a.so"}
- {"Weak symbols in dynamic objects 1 (main test)"
- "-shared tmpdir/libweakdyn1a.so -Tweak-dyn-1.ld" "" "" {weak-dyn-1b.s}
- {{readelf {--relocs --wide} weak-dyn-1.rd}}
- "libweakdyn1b.so"}
- }
-}
-
#v850 gas complains about .tbss.var section attributes.
if { [check_gc_sections_available] && ![istarget "v850-*-*"] } {
run_ld_link_tests {
diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp
index 9bc2fde17f0..a1a44ffcefe 100644
--- a/ld/testsuite/ld-elf/shared.exp
+++ b/ld/testsuite/ld-elf/shared.exp
@@ -52,6 +52,11 @@ set LFLAGS ""
if [istarget "tic6x-*-*"] {
append LFLAGS " -melf32_tic6x_le"
}
+# HPUX targets use a different .comm syntax.
+set hpux ""
+if [istarget "*-*-hpux*"] {
+ set hpux "--defsym HPUX=1"
+}
if [is_underscore_target] {
set ASFLAGS "$ASFLAGS --defsym UNDERSCORE=1"
@@ -316,6 +321,158 @@ if { [check_gc_sections_available] } {
set ASFLAGS $old_ASFLAGS
+run_ld_link_tests {
+ {"Build pr14170a.o" "" "" "" {pr14170a.s} {} "pr14170.a" }
+}
+run_ld_link_tests {
+ {"Build shared library for pr14170"
+ "-shared" "" "" "pr14170b.s" {} "pr14170.so" }
+} "tic6x-*-*"
+
+# 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 \
+ {pr14170c.s} { } "pr14170" ] \
+] "bfin-*-*"
+
+# Targets that use _bfd_generic_link_add_symbols won't pass pr21703 tests
+# Not will tic6x with PIC/PID warning, or hppa64 with dot-symbols
+run_ld_link_tests {
+ {"PR ld/21703 shared"
+ "-shared --allow-multiple-definition --version-script pr21703.ver tmpdir/pr21703-3.o tmpdir/pr21703-4.o" "" "" \
+ {pr21703-3.s pr21703-4.s} {{readelf {--dyn-syms} pr21703-shared.sd}} "pr21703.so" }
+} "d30v-*-*" "dlx-*-*" "pj-*-*" "tic6x-*-*" "hppa64-*-*"
+
+# This target requires extra GAS options when building non-PIC code
+# for linking with shared libraries.
+set AFLAGS_NONPIC ""
+if [istarget "mips*-*-*"] {
+ append AFLAGS_NONPIC " -call_nonpic"
+}
+
+# Run a test to check linking a shared library with a broken linker
+# script that accidentally marks dynamic sections as notes. The
+# resulting executable is not expected to work, but the linker
+# should not seg-fault whilst creating the binary.
+# Note: setup_xfail before run_ld_link_tests xfails only the first test.
+setup_xfail "tic6x-*-*"
+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" "" "" ""
+ { { ld "note-3.l" } }
+ "a.out" }
+}
+
+setup_xfail "tic6x-*-*"
+run_ld_link_tests {
+ {"Build pr17068.so"
+ "-shared" "" ""
+ {pr17068d.s} {} "pr17068.so"}
+ {"Build pr17068a.a"
+ "" "" ""
+ {pr17068a.s pr17068c.s pr17068ez.s} {} "pr17068a.a"}
+ {"Build pr17068b.a"
+ "" "" ""
+ {pr17068b.s pr17068e.s} {} "pr17068b.a"}
+}
+
+# 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" ""
+ {start.s pr17068.s} {} "pr17068"}
+} "bfin-*-*"
+
+# xfail on tic6x due to non-PIC/non-PID warnings
+# Fails on MIPS because ABI trickery means that a NULL reloc is emitted.
+# Fails on bfin because relocations are not created.
+run_ld_link_tests {
+ {"-Bsymbolic-functions"
+ "-shared -Bsymbolic-functions" "" ""
+ {symbolic-func.s} {{readelf {-r --wide} symbolic-func.r}}
+ "symbolic-func.so"}
+} "tic6x-*-*" "mips*-*-*" "bfin-*-*"
+
+# xfail on tic6x due to non-PIC/non-PID warnings
+run_ld_link_tests {
+ {"Build pr20995.so"
+ "-shared" "" ""
+ {pr20995b.s} {} "pr20995.so"}
+} "tic6x-*-*"
+
+# xfail on arm*-*-eabi*. The list can be enlarged to those targets that
+# don't support GNU_RELRO. For more details, please see discussions at:
+# https://sourceware.org/ml/binutils/2017-01/msg00441.html
+run_ld_link_tests {
+ {"Build pr20995-2.so"
+ "-shared -z relro" "" ""
+ {pr20995c.s} {{readelf {-l --wide} pr20995-2so.r}} "pr20995-2.so"}
+} "tic6x-*-*" "arm*-*-eabi*" "hppa*64*-*-hpux*"
+
+# These targets don't copy dynamic variables into .bss.
+setup_xfail "alpha-*-*" "bfin-*-*" "ia64-*-*" "xtensa-*-*"
+# or don't have .data.rel.ro
+setup_xfail "hppa*64*-*-hpux*"
+run_ld_link_tests [list \
+ [list \
+ "pr20995" \
+ "" "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.
+# Please see the link above for details.
+setup_xfail "alpha-*-*" "bfin-*-*" "ia64-*-*" "xtensa-*-*" "arm*-*-eabi*"
+setup_xfail "hppa*64*-*-hpux*"
+run_ld_link_tests [list \
+ [list \
+ "pr20995-2" \
+ "" "tmpdir/pr20995-2.so" "$AFLAGS_NONPIC" \
+ {pr20995a.s} {{readelf {-S --wide} pr20995.r}} "pr20995-2"]]
+
+setup_xfail "tic6x-*-*"
+run_ld_link_tests {
+ {"Build pr22374 shared library"
+ "-shared" "" "" "pr22374b.s" {} "pr22374.so" }
+}
+if { ![istarget "alpha-*-*"]
+ && ![istarget "frv-*-*"]
+ && ![istarget "hppa*-*-*"]
+ && ![istarget "i?86-*-*"]
+ && ![istarget "ia64-*-*"]
+ && ![istarget "microblaze-*-*"]
+ && ![istarget "powerpc*-*-*"]
+ && ![istarget "x86_64-*-*"]
+ && ![istarget "xtensa-*-*"] } {
+ # The next test checks that copy relocs are not used unnecessarily,
+ # but that is just an optimization so don't complain loudly.
+ setup_xfail "*-*-*"
+}
+run_ld_link_tests {
+ {"pr22374 function pointer initialization"
+ "" "tmpdir/pr22374.so" "" "pr22374a.s"
+ { {readelf {--wide -r --dyn-syms} "pr22374-1.r"}
+ {readelf {--wide -r} "pr22374-2.r"} }
+ "pr22374" }
+}
+
+if { [istarget *-*-linux*]
+ || [istarget *-*-nacl*]
+ || [istarget *-*-gnu*] } {
+ run_ld_link_tests {
+ {"Weak symbols in dynamic objects 1 (support)"
+ "-shared" "" "" {weak-dyn-1a.s}
+ {}
+ "libweakdyn1a.so"}
+ {"Weak symbols in dynamic objects 1 (main test)"
+ "-shared tmpdir/libweakdyn1a.so -Tweak-dyn-1.ld" "" "" {weak-dyn-1b.s}
+ {{readelf {--relocs --wide} weak-dyn-1.rd}}
+ "libweakdyn1b.so"}
+ }
+}
+
# Check to see if the C compiler works
if { [which $CC] == 0 } {
return