aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite
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 /ld/testsuite
parent3045b47554503c6f154e446662204e295fc769a1 (diff)
downloadgdb-f3a9baf18db14707276a8c911d4a6409ad965926.zip
gdb-f3a9baf18db14707276a8c911d4a6409ad965926.tar.gz
gdb-f3a9baf18db14707276a8c911d4a6409ad965926.tar.bz2
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.
Diffstat (limited to 'ld/testsuite')
-rw-r--r--ld/testsuite/ld-elf/elf.exp155
-rw-r--r--ld/testsuite/ld-elf/shared.exp157
2 files changed, 157 insertions, 155 deletions
diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp
index 0b005de..b74b82c 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 9bc2fde..a1a44ff 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