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.
This commit is contained in:
Maciej W. Rozycki 2018-01-31 14:47:12 +00:00
parent 3045b47554
commit f3a9baf18d
3 changed files with 162 additions and 155 deletions

View File

@ -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.

View File

@ -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 {

View File

@ -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