diff options
author | Alan Modra <amodra@gmail.com> | 2017-01-02 22:45:37 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-01-02 23:48:08 +1030 |
commit | d98164028637041c5de99af0d057bde3f168a8a8 (patch) | |
tree | 60b6a07ce579687b60f5b07b7cdba9a1bc68c84f /ld/testsuite/ld-elf/shared.exp | |
parent | 64859e1487e0ce1e5c430238dd731123371e7a15 (diff) | |
download | gdb-d98164028637041c5de99af0d057bde3f168a8a8.zip gdb-d98164028637041c5de99af0d057bde3f168a8a8.tar.gz gdb-d98164028637041c5de99af0d057bde3f168a8a8.tar.bz2 |
Run more ld tests when not native
Many of the ld tests are not run for cross builds, in some cases
because the test needs to run a newly linked executable, and in others
simply because it was easier to write the test for native only. Even
when a test needs to run, it's good to compile and link to exercise
the linker. So that's what this patch does. I've also rid us of
the old ld_link procedure with all the HOSTING_CRT0 etc. setup. It's
much simpler to just link with $CC.
This does mean that a cross build with cross-compiler installed but
no cross C-library will give lots of failures. If that turns out to
be too annoying, I guess we can write a tcl procedure to detect it and
not run all the extra tests.
* Makefile.am (bootstrap): Delete rule.
(ld-partial, ld1, ld1-full, ld2, ld3): Likewise.
(HOSTING_CRT0, HOSTING_SCRT0): Don't define.
(HOSTING_LIBS, HOSTING_SLIBS, HOSTING_EMU): Likewise.
* configure.ac (HOSTING_CRT0, HOSTING_SCRT0): Don't define.
(HOSTING_LIBS, HOSTING_SLIBS): Likewise.
* configure.host (HOSTING_CRT0, HOSTING_LIBS): Don't define.
* Makefile.in: Regenerate.
* configure: Regenerate.
* testsuite/config/default.exp (get_link_files): Delete.
(HOSTING_CRT0, HOSTING_SCRT0, HOSTING_LIBS, HOSTING_SLIBS): Don't
define.
(ld_simple_link): Delete.
* testsuite/lib/ld-lib.exp (default_ld_link): Delete
(default_ld_simple_link): Rename to default_ld_link.
(ld_simple_link_defsyms): Rename to ld_link_defsyms.
(run_ld_link_tests): Use ld_link, not ld_simple_link.
(run_cc_link_tests): Likewise.
(run_ld_link_exec_tests): Use $CC or $CXX to link, not $ld.
Don't run exe when not native, and return unsupported.
* testsuite/ld-bootstrap/bootstrap.exp: Create gccld1 etc. dirs.
Link ld1 etc. using $CC.
* testsuite/ld-cdtest/cdtest.exp: Link cdtest using $CC.
* testsuite/ld-checks/checks.exp: Use ld_link, not ld_simple_link.
* testsuite/ld-cygwin/exe-export.exp: Likewise.
* testsuite/ld-elf/binutils.exp: Likewise.
* testsuite/ld-elf/eh-group.exp: Likewise.
* testsuite/ld-elf/exclude.exp: Likewise.
* testsuite/ld-elf/frame.exp: Likewise.
* testsuite/ld-elf/sec-to-seg.exp: Likewise.
* testsuite/ld-elf/tls_common.exp: Likewise.
* testsuite/ld-elfcomm/elfcomm.exp: Likewise.
* testsuite/ld-fastcall/fastcall.exp: Likewise.
* testsuite/ld-gc/gc.exp: Likewise.
* testsuite/ld-ifunc/binutils.exp: Likewise.
* testsuite/ld-mep/mep.exp: Likewise.
* testsuite/ld-mips-elf/mips-elf-flags.exp: Likewise.
* testsuite/ld-mn10300/mn10300.exp: Likewise.
* testsuite/ld-nios2/nios2.exp: Likewise.
* testsuite/ld-pe/pe-compile.exp: Likewise.
* testsuite/ld-pe/pe-run.exp: Likewise.
* testsuite/ld-pe/pe-run2.exp: Likewise.
* testsuite/ld-plugin/plugin.exp: Likewise.
* testsuite/ld-scripts/align.exp: Likewise.
* testsuite/ld-scripts/alignof.exp: Likewise.
* testsuite/ld-scripts/assert.exp: Likewise.
* testsuite/ld-scripts/defined.exp: Likewise.
* testsuite/ld-scripts/extern.exp: Likewise.
* testsuite/ld-scripts/log2.exp: Likewise.
* testsuite/ld-scripts/map-address.exp: Likewise.
* testsuite/ld-scripts/phdrs.exp: Likewise.
* testsuite/ld-scripts/phdrs2.exp: Likewise.
* testsuite/ld-scripts/script.exp: Likewise.
* testsuite/ld-scripts/section-flags.exp: Likewise.
* testsuite/ld-scripts/sizeof.exp: Likewise.
* testsuite/ld-scripts/sysroot-prefix.exp: Likewise.
* testsuite/ld-scripts/weak.exp: Likewise.
* testsuite/ld-selective/selective.exp: Likewise.
* testsuite/ld-sh/sh.exp: Likewise.
* testsuite/ld-sh/sh64/relax.exp: Likewise.
* testsuite/ld-sh/sh64/relfail.exp: Likewise.
* testsuite/ld-srec/srec.exp: Likewise.
* testsuite/ld-tic6x/tic6x.exp: Likewise.
* testsuite/ld-undefined/weak-undef.exp: Likewise.
* testsuite/ld-versados/versados.exp: Likewise.
* testsuite/ld-x86-64/dwarfreloc.exp: Likewise.
* testsuite/ld-xtensa/coalesce.exp: Likewise.
* testsuite/ld-xtensa/diff_overflow.exp: Likewise.
* testsuite/ld-xtensa/lcall.exp: Likewise.
* testsuite/ld-elf/audit.exp: Run non-native too.
* testsuite/ld-elf/compress.exp: Likewise. Replace ld options with
gcc -Wl, options.
* testsuite/ld-elf/dwarf.exp: Run non-native too. Use ld_link,
not ld_simple_link. Add -Wl,--no-as-needed to some tests.
* testsuite/ld-elf/elf.exp: Run non-native too. Formatting.
* testsuite/ld-elf/indirect.exp: Run non-native too. Add
-Wl,--no-as-needed to most tests.
* testsuite/ld-elf/shared.exp: Run non-native too. Use braces
to simplify quoting. Set run_tests using [list] rather than
brace assignment to expand $extralibs. Add -Wl,--no-as-needed
to many test. Prefix ld options with -Wl,.
(mix_pic_and_non_pic): Don't run exe if not native.
* testsuite/ld-elf/wrap.exp: Run non-native too. Add
-Wl,--no-as-needed and prefix ld options with -Wl,.
* testsuite/ld-elfvers/vers.exp: Run non-native too. Use ld_link,
not ld_simple_link.
* testsuite/ld-elfvsb/elfvsb.exp: Likewise.
(visibility_test): Don't run exe if not native.
* testsuite/ld-elfweak/elfweak.exp: Run non-native too. Use ld_link,
not ld_simple_link.
(build_exec): Don't run exe if not native.
* testsuite/ld-ifunc/ifunc.exp: Run non-native too. Use ld_link,
not ld_simple_link. Link using $CC. Add -Wl,--no-as-needed
to some tests and prefix ld options with -Wl,. Expect GNU
for hppa-linux even when no ifuncs. Delete cleanup.
* testsuite/ld-pie/pie.exp: Run non-native too.
* testsuite/ld-plugin/lto.exp: Likewise.
* testsuite/ld-shared/shared.exp: Likewise. Use ld_link,
not ld_simple_link.
(shared_test): Don't run exe if not native.
* testsuite/ld-size/size.exp: Run non-native too. Add
-Wl,--no-as-needed to some tests. Prefix ld options with -Wl,.
* testsuite/ld-unique/unique.exp: Run non-native too. Use ld_link,
not ld_simple_link. Link using $CC. Add -Wl,--no-as-needed
to some tests and prefix ld options with -Wl,. Expect GNU
for hppa-linux even when no unique syms. Delete cleanup.
* testsuite/ld-x86-64/tls.exp: Add -Wl,--no-as-needed to some
tests and prefix ld options with -Wl,.
* testsuite/ld-x86-64/x86-64.exp: Use ld_link, not ld_simple_link.
Add -Wl,--no-as-needed to some tests. Prefix ld options with -Wl,.
Diffstat (limited to 'ld/testsuite/ld-elf/shared.exp')
-rw-r--r-- | ld/testsuite/ld-elf/shared.exp | 325 |
1 files changed, 162 insertions, 163 deletions
diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index 3cdac45..52baadd 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -21,13 +21,6 @@ # Exclude non-ELF targets. -# The following tests require running the executable generated by ld, -# or enough of a build environment to create a fully linked executable. -# This is not commonly available when testing a cross-built linker. -if ![isnative] { - return -} - if ![is_elf_format] { return } @@ -38,6 +31,7 @@ if { [which $CC] == 0 } { } # Add -ldl to extralibs if needed +set extralibs "" if { ![istarget *-*-freebsd*]} { set extralibs "-ldl" } @@ -55,7 +49,7 @@ set build_tests { {"Build warn libbar.so" "-shared" "-fPIC" {beginwarn.c end.c} {{readelf {-S --wide} libbarw.rd}} "libbarw.so" - "C" "^.*\\\): warning: function foo is deprecated$"} + "c" {^.*\): warning: function foo is deprecated$} } {"Build hidden libbar.so" "-shared" "-fPIC" {begin.c endhidden.c} {} "libbarh.so"} @@ -283,156 +277,156 @@ set build_tests { run_cc_link_tests $build_tests -set run_tests { - {"Run normal with libfoo.so" - "tmpdir/begin.o tmpdir/libfoo.so tmpdir/end.o" "" - {main.c} "normal" "normal.out"} - {"Run protected with libfoo.so" - "tmpdir/begin.o tmpdir/libfoo.so tmpdir/endprotected.o" "" - {main.c} "protected" "normal.out"} - {"Run hidden with libfoo.so" - "tmpdir/begin.o tmpdir/libfoo.so tmpdir/endhidden.o" "" - {main.c} "hidden" "hidden.out"} - {"Run normal with versioned libfoo.so" - "tmpdir/begin.o tmpdir/libfoov.so tmpdir/end.o" "" - {main.c} "normalv" "normal.out"} - {"Run warn with versioned libfoo.so" - "tmpdir/beginwarn.o tmpdir/libfoov.so" "" - {main.c} "warn" "warn.out" - "" "" "^.*\\\): warning: function foo is deprecated$"} - {"Run protected with versioned libfoo.so" - "tmpdir/begin.o tmpdir/libfoov.so tmpdir/endprotected.o" "" - {main.c} "protected" "normal.out"} - {"Run hidden with versioned libfoo.so" - "tmpdir/begin.o tmpdir/libfoov.so tmpdir/endhidden.o" "" - {main.c} "hiddenv" "hidden.out"} - {"Run normal libbar.so with libfoo.so" - "tmpdir/libbarfoo.so tmpdir/libfoo.so" "" - {main.c} "normal" "normal.out"} - {"Run protected libbar.so with libfoo.so" - "tmpdir/libbarpfoo.so tmpdir/libfoo.so" "" - {main.c} "protected" "normal.out"} - {"Run hidden libbar.so with libfoo.so" - "tmpdir/libbarhfoo.so tmpdir/libfoo.so" "" - {main.c} "hidden" "hidden.out"} - {"Run normal libbar.so with versioned libfoo.so" - "tmpdir/libbarfoov.so tmpdir/libfoov.so" "" - {main.c} "normal" "normal.out"} - {"Run protected libbar.so with versioned libfoo.so" - "tmpdir/libbarpfoov.so tmpdir/libfoov.so" "" - {main.c} "protected" "normal.out"} - {"Run hidden libbar.so with versioned libfoo.so" - "tmpdir/libbarhfoov.so tmpdir/libfoov.so" "" - {main.c} "hidden" "hidden.out"} - {"Run dl1a with --dynamic-list=dl1.list and dlopen on libdl1.so" - "--dynamic-list=dl1.list $extralibs" "" - {dl1main.c} "dl1a" "dl1.out"} - {"Run dl1b with --dynamic-list-data and dlopen on libdl1.so" - "--dynamic-list-data $extralibs" "" - {dl1main.c} "dl1b" "dl1.out"} - {"Run with libdl2a.so" - "tmpdir/libdl2a.so" "" - {dl2main.c} "dl2a" "dl2a.out"} - {"Run with libdl2b.so" - "tmpdir/libdl2b.so" "" - {dl2main.c} "dl2b" "dl2b.out"} - {"Run with libdl2c.so" - "tmpdir/libdl2c.so" "" - {dl2main.c} "dl2c" "dl2b.out"} - {"Run with libdl4a.so" - "tmpdir/libdl4a.so" "" - {dl4main.c} "dl4a" "dl4a.out"} - {"Run with libdl4b.so" - "tmpdir/libdl4b.so" "" - {dl4main.c} "dl4b" "dl4a.out"} - {"Run with libdl4c.so" - "tmpdir/libdl4c.so" "" - {dl4main.c} "dl4c" "dl4b.out"} - {"Run with libdl4d.so" - "tmpdir/libdl4d.so" "" - {dl4main.c} "dl4d" "dl4b.out"} - {"Run with libdl4e.so" - "tmpdir/libdl4e.so" "" - {dl4main.c} "dl4e" "dl4a.out"} - {"Run with libdl4f.so" - "tmpdir/libdl4f.so" "" - {dl4main.c} "dl4f" "dl4a.out"} - {"Run dl6a1 with --dynamic-list-data and dlopen on libdl6a.so" - "--dynamic-list-data $extralibs" "" - {dl6amain.c} "dl6a1" "dl6a.out"} - {"Run dl6a2 with -Bsymbolic-functions and dlopen on libdl6a.so" - "-Bsymbolic-functions $extralibs" "" - {dl6amain.c} "dl6a2" "dl6b.out"} - {"Run dl6a3 with -Bsymbolic and dlopen on libdl6a.so" - "-Bsymbolic $extralibs" "" - {dl6amain.c} "dl6a3" "dl6b.out"} - {"Run dl6a4 with -Bsymbolic --dynamic-list-data and dlopen on libdl6a.so" - "-Bsymbolic --dynamic-list-data $extralibs" "" - {dl6amain.c} "dl6a4" "dl6a.out"} - {"Run dl6a5 with -Bsymbolic-functions --dynamic-list-cpp-new and dlopen on libdl6a.so" - "-Bsymbolic-functions --dynamic-list-cpp-new $extralibs" "" - {dl6amain.c} "dl6a5" "dl6b.out"} - {"Run dl6a6 with --dynamic-list-cpp-new -Bsymbolic-functions and dlopen on libdl6a.so" - "--dynamic-list-cpp-new -Bsymbolic-functions $extralibs" "" - {dl6amain.c} "dl6a6" "dl6b.out"} - {"Run dl6a7 with --dynamic-list-data -Bsymbolic and dlopen on libdl6a.so" - "--dynamic-list-data -Bsymbolic $extralibs" "" - {dl6amain.c} "dl6a7" "dl6a.out"} - {"Run dl6b1 with --dynamic-list-data and dlopen on libdl6b.so" - "--dynamic-list-data $extralibs" "" - {dl6bmain.c} "dl6b1" "dl6a.out"} - {"Run dl6b2 with dlopen on libdl6b.so" - "$extralibs" "" - {dl6bmain.c} "dl6b2" "dl6b.out"} - {"Run dl6c1 with --dynamic-list-data and dlopen on libdl6c.so" - "--dynamic-list-data $extralibs" "" - {dl6cmain.c} "dl6c1" "dl6b.out"} - {"Run dl6d1 with --dynamic-list-data and dlopen on libdl6d.so" - "--dynamic-list-data $extralibs" "" - {dl6dmain.c} "dl6d1" "dl6b.out"} - {"Run with libdata1.so" - "tmpdir/libdata1.so" "" - {dynbss1.c} "dynbss1" "pass.out"} - {"Run with libdata2.so" - "tmpdir/libdata2.so" "" - {weakdef1.c} "weakdef1" "pass.out"} - {"Run with libfunc1.so comm1.o" - "tmpdir/libfunc1.so tmpdir/comm1.o" "" - {dummy.c} "comm1" "pass.out"} - {"Run with comm1.o libfunc1.so" - "tmpdir/comm1.o tmpdir/libfunc1.so" "" - {dummy.c} "comm1" "pass.out"} - {"Run with pr11138-2.c libpr11138-1.so" - "--version-script=pr11138-2.map tmpdir/pr11138-2.o tmpdir/libpr11138-1.so" "" - {dummy.c} "pr11138a" "pr11138.out"} - {"Run with libpr11138-1.so pr11138-2.c" - "--version-script=pr11138-2.map tmpdir/libpr11138-1.so tmpdir/pr11138-2.o" "" - {dummy.c} "pr11138b" "pr11138.out"} - {"Run with pr13250-3.c, libpr13250-1.so and libpr13250-2.so" - "--as-needed tmpdir/pr13250-3.o tmpdir/libpr13250-1.so tmpdir/libpr13250-2.so" "" - {dummy.c} "pr13250" "pass.out"} - {"Run with pr14323-1.c pr14323-2.so" - "tmpdir/libpr14323-2.so" "" - {pr14323-1.c} "pr14323" "pass.out"} - {"Run with pr14862-1.c libpr14862.so" - "--as-needed tmpdir/libpr14862-1.o tmpdir/libpr14862.so" "" - {dummy.c} "pr14862" "pr14862.out"} - {"Link with --add-needed" - "tmpdir/libneeded1c.o --add-needed -rpath=tmpdir -Ltmpdir -lneeded1a" "" - {dummy.c} "needed1a" "needed1.out"} - {"Link with --copy-dt-needed-entries" - "tmpdir/libneeded1c.o --copy-dt-needed-entries -rpath=tmpdir -Ltmpdir -lneeded1a" "" - {dummy.c} "needed1b" "needed1.out"} - {"Run relmain" - "--no-as-needed -rpath=tmpdir -Ltmpdir -lrel" "" - {relmain.c} "relmain" "relmain.out"} - {"Run pr2404" - "tmpdir/pr2404b.o tmpdir/libpr2404a.so" "" - {dummy.c} "pr2404" "pr2404.out"} - {"Run pr18458" - "tmpdir/libpr18458a.so tmpdir/libpr18458b.so -z now" "" - {pr18458c.c} "pr18458" "pass.out"} -} +set run_tests [list \ + [list "Run normal with libfoo.so" \ + "-Wl,--no-as-needed tmpdir/begin.o tmpdir/libfoo.so tmpdir/end.o" "" \ + {main.c} "normal" "normal.out" ] \ + [list "Run protected with libfoo.so" \ + "-Wl,--no-as-needed tmpdir/begin.o tmpdir/libfoo.so tmpdir/endprotected.o" "" \ + {main.c} "protected" "normal.out" ] \ + [list "Run hidden with libfoo.so" \ + "-Wl,--no-as-needed tmpdir/begin.o tmpdir/libfoo.so tmpdir/endhidden.o" "" \ + {main.c} "hidden" "hidden.out" ] \ + [list "Run normal with versioned libfoo.so" \ + "-Wl,--no-as-needed tmpdir/begin.o tmpdir/libfoov.so tmpdir/end.o" "" \ + {main.c} "normalv" "normal.out" ] \ + [list "Run warn with versioned libfoo.so" \ + "-Wl,--no-as-needed tmpdir/beginwarn.o tmpdir/libfoov.so" "" \ + {main.c} "warn" "warn.out" \ + "" "c" {^.*\): warning: function foo is deprecated$} ] \ + [list "Run protected with versioned libfoo.so" \ + "-Wl,--no-as-needed tmpdir/begin.o tmpdir/libfoov.so tmpdir/endprotected.o" "" \ + {main.c} "protected" "normal.out" ] \ + [list "Run hidden with versioned libfoo.so" \ + "-Wl,--no-as-needed tmpdir/begin.o tmpdir/libfoov.so tmpdir/endhidden.o" "" \ + {main.c} "hiddenv" "hidden.out" ] \ + [list "Run normal libbar.so with libfoo.so" \ + "-Wl,--no-as-needed tmpdir/libbarfoo.so tmpdir/libfoo.so" "" \ + {main.c} "normal" "normal.out" ] \ + [list "Run protected libbar.so with libfoo.so" \ + "-Wl,--no-as-needed tmpdir/libbarpfoo.so tmpdir/libfoo.so" "" \ + {main.c} "protected" "normal.out" ] \ + [list "Run hidden libbar.so with libfoo.so" \ + "-Wl,--no-as-needed tmpdir/libbarhfoo.so tmpdir/libfoo.so" "" \ + {main.c} "hidden" "hidden.out" ] \ + [list "Run normal libbar.so with versioned libfoo.so" \ + "-Wl,--no-as-needed tmpdir/libbarfoov.so tmpdir/libfoov.so" "" \ + {main.c} "normal" "normal.out" ] \ + [list "Run protected libbar.so with versioned libfoo.so" \ + "-Wl,--no-as-needed tmpdir/libbarpfoov.so tmpdir/libfoov.so" "" \ + {main.c} "protected" "normal.out" ] \ + [list "Run hidden libbar.so with versioned libfoo.so" \ + "-Wl,--no-as-needed tmpdir/libbarhfoov.so tmpdir/libfoov.so" "" \ + {main.c} "hidden" "hidden.out" ] \ + [list "Run dl1a with --dynamic-list=dl1.list and dlopen on libdl1.so" \ + "-Wl,--no-as-needed,--dynamic-list=dl1.list $extralibs" "" \ + {dl1main.c} "dl1a" "dl1.out" ] \ + [list "Run dl1b with --dynamic-list-data and dlopen on libdl1.so" \ + "-Wl,--no-as-needed,--dynamic-list-data $extralibs" "" \ + {dl1main.c} "dl1b" "dl1.out" ] \ + [list "Run with libdl2a.so" \ + "-Wl,--no-as-needed tmpdir/libdl2a.so" "" \ + {dl2main.c} "dl2a" "dl2a.out" ] \ + [list "Run with libdl2b.so" \ + "-Wl,--no-as-needed tmpdir/libdl2b.so" "" \ + {dl2main.c} "dl2b" "dl2b.out" ] \ + [list "Run with libdl2c.so" \ + "-Wl,--no-as-needed tmpdir/libdl2c.so" "" \ + {dl2main.c} "dl2c" "dl2b.out" ] \ + [list "Run with libdl4a.so" \ + "-Wl,--no-as-needed tmpdir/libdl4a.so" "" \ + {dl4main.c} "dl4a" "dl4a.out" ] \ + [list "Run with libdl4b.so" \ + "-Wl,--no-as-needed tmpdir/libdl4b.so" "" \ + {dl4main.c} "dl4b" "dl4a.out" ] \ + [list "Run with libdl4c.so" \ + "-Wl,--no-as-needed tmpdir/libdl4c.so" "" \ + {dl4main.c} "dl4c" "dl4b.out" ] \ + [list "Run with libdl4d.so" \ + "-Wl,--no-as-needed tmpdir/libdl4d.so" "" \ + {dl4main.c} "dl4d" "dl4b.out" ] \ + [list "Run with libdl4e.so" \ + "-Wl,--no-as-needed tmpdir/libdl4e.so" "" \ + {dl4main.c} "dl4e" "dl4a.out" ] \ + [list "Run with libdl4f.so" \ + "-Wl,--no-as-needed tmpdir/libdl4f.so" "" \ + {dl4main.c} "dl4f" "dl4a.out" ] \ + [list "Run dl6a1 with --dynamic-list-data and dlopen on libdl6a.so" \ + "-Wl,--no-as-needed,--dynamic-list-data $extralibs" "" \ + {dl6amain.c} "dl6a1" "dl6a.out" ] \ + [list "Run dl6a2 with -Bsymbolic-functions and dlopen on libdl6a.so" \ + "-Wl,--no-as-needed,-Bsymbolic-functions $extralibs" "" \ + {dl6amain.c} "dl6a2" "dl6b.out" ] \ + [list "Run dl6a3 with -Bsymbolic and dlopen on libdl6a.so" \ + "-Wl,--no-as-needed,-Bsymbolic $extralibs" "" \ + {dl6amain.c} "dl6a3" "dl6b.out" ] \ + [list "Run dl6a4 with -Bsymbolic --dynamic-list-data and dlopen on libdl6a.so" \ + "-Wl,--no-as-needed,-Bsymbolic,--dynamic-list-data $extralibs" "" \ + {dl6amain.c} "dl6a4" "dl6a.out" ] \ + [list "Run dl6a5 with -Bsymbolic-functions --dynamic-list-cpp-new and dlopen on libdl6a.so" \ + "-Wl,--no-as-needed,-Bsymbolic-functions,--dynamic-list-cpp-new $extralibs" "" \ + {dl6amain.c} "dl6a5" "dl6b.out" ] \ + [list "Run dl6a6 with --dynamic-list-cpp-new -Bsymbolic-functions and dlopen on libdl6a.so" \ + "-Wl,--no-as-needed,--dynamic-list-cpp-new,-Bsymbolic-functions $extralibs" "" \ + {dl6amain.c} "dl6a6" "dl6b.out" ] \ + [list "Run dl6a7 with --dynamic-list-data -Bsymbolic and dlopen on libdl6a.so" \ + "-Wl,--no-as-needed,--dynamic-list-data,-Bsymbolic $extralibs" "" \ + {dl6amain.c} "dl6a7" "dl6a.out" ] \ + [list "Run dl6b1 with --dynamic-list-data and dlopen on libdl6b.so" \ + "-Wl,--no-as-needed,--dynamic-list-data $extralibs" "" \ + {dl6bmain.c} "dl6b1" "dl6a.out" ] \ + [list "Run dl6b2 with dlopen on libdl6b.so" \ + "-Wl,--no-as-needed $extralibs" "" \ + {dl6bmain.c} "dl6b2" "dl6b.out" ] \ + [list "Run dl6c1 with --dynamic-list-data and dlopen on libdl6c.so" \ + "-Wl,--no-as-needed,--dynamic-list-data $extralibs" "" \ + {dl6cmain.c} "dl6c1" "dl6b.out" ] \ + [list "Run dl6d1 with --dynamic-list-data and dlopen on libdl6d.so" \ + "-Wl,--no-as-needed,--dynamic-list-data $extralibs" "" \ + {dl6dmain.c} "dl6d1" "dl6b.out" ] \ + [list "Run with libdata1.so" \ + "-Wl,--no-as-needed tmpdir/libdata1.so" "" \ + {dynbss1.c} "dynbss1" "pass.out" ] \ + [list "Run with libdata2.so" \ + "-Wl,--no-as-needed tmpdir/libdata2.so" "" \ + {weakdef1.c} "weakdef1" "pass.out" ] \ + [list "Run with libfunc1.so comm1.o" \ + "-Wl,--no-as-needed tmpdir/libfunc1.so tmpdir/comm1.o" "" \ + {dummy.c} "comm1" "pass.out" ] \ + [list "Run with comm1.o libfunc1.so" \ + "-Wl,--no-as-needed tmpdir/comm1.o tmpdir/libfunc1.so" "" \ + {dummy.c} "comm1" "pass.out" ] \ + [list "Run with pr11138-2.c libpr11138-1.so" \ + "-Wl,--no-as-needed,--version-script=pr11138-2.map tmpdir/pr11138-2.o tmpdir/libpr11138-1.so" "" \ + {dummy.c} "pr11138a" "pr11138.out" ] \ + [list "Run with libpr11138-1.so pr11138-2.c" \ + "-Wl,--no-as-needed,--version-script=pr11138-2.map tmpdir/libpr11138-1.so tmpdir/pr11138-2.o" "" \ + {dummy.c} "pr11138b" "pr11138.out" ] \ + [list "Run with pr13250-3.c, libpr13250-1.so and libpr13250-2.so" \ + "-Wl,--as-needed tmpdir/pr13250-3.o tmpdir/libpr13250-1.so tmpdir/libpr13250-2.so" "" \ + {dummy.c} "pr13250" "pass.out" ] \ + [list "Run with pr14323-1.c pr14323-2.so" \ + "-Wl,--no-as-needed tmpdir/libpr14323-2.so" "" \ + {pr14323-1.c} "pr14323" "pass.out" ] \ + [list "Run with pr14862-1.c libpr14862.so" \ + "-Wl,--as-needed tmpdir/libpr14862-1.o tmpdir/libpr14862.so" "" \ + {dummy.c} "pr14862" "pr14862.out" ] \ + [list "Link with --add-needed" \ + "tmpdir/libneeded1c.o -Wl,--no-as-needed,--add-needed,-rpath=tmpdir -Ltmpdir -lneeded1a" "" \ + {dummy.c} "needed1a" "needed1.out" ] \ + [list "Link with --copy-dt-needed-entries" \ + "tmpdir/libneeded1c.o -Wl,--no-as-needed,--copy-dt-needed-entries,-rpath=tmpdir -Ltmpdir -lneeded1a" "" \ + {dummy.c} "needed1b" "needed1.out" ] \ + [list "Run relmain" \ + "-Wl,--no-as-needed,-rpath=tmpdir -Ltmpdir -lrel" "" \ + {relmain.c} "relmain" "relmain.out" ] \ + [list "Run pr2404" \ + "-Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404a.so" "" \ + {dummy.c} "pr2404" "pr2404.out" ] \ + [list "Run pr18458" \ + "-Wl,--no-as-needed,-z,now tmpdir/libpr18458a.so tmpdir/libpr18458b.so" "" \ + {pr18458c.c} "pr18458" "pass.out" ] \ +] # NetBSD ELF systems do not currently support the .*_array sections. run_ld_link_exec_tests $run_tests "*-*-netbsdelf*" @@ -502,10 +496,10 @@ set run_cxx_tests { "-Wl,--no-as-needed tmpdir/libdl3c.so" "" {dl3main.cc} "dl3c" "dl3a.out" "" "c++"} {"Run with libnew1a.so" - "tmpdir/libnew1a.so" "" + "-Wl,--no-as-needed tmpdir/libnew1a.so" "" {dl5.cc} "dl5a" "dl5.out" "" "c++"} {"Run with libnew1b.so" - "tmpdir/libnew1b.so" "" + "-Wl,--no-as-needed tmpdir/libnew1b.so" "" {dl5.cc} "dl5b" "dl5.out" "" "c++"} } @@ -543,7 +537,7 @@ if { [istarget *-*-linux*] run_ld_link_exec_tests [list \ [list \ "Run pr2404 with PIE" \ - "-pie tmpdir/pr2404b.o tmpdir/libpr2404a.so" \ + "-pie -Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404a.so" \ "" \ { dummy.c } \ "pr2404pie" \ @@ -597,7 +591,7 @@ if { [istarget *-*-linux*] ] \ [list \ "Run pr19579" \ - "-pie -z text tmpdir/pr19579a.o tmpdir/libpr19579.so" \ + "-pie -Wl,--no-as-needed,-z,text tmpdir/pr19579a.o tmpdir/libpr19579.so" \ "" \ {dummy.c} \ "pr19579" \ @@ -641,7 +635,7 @@ proc mix_pic_and_non_pic {xfails cflags ldflags exe} { run_ld_link_exec_tests [list \ [list \ "Run $exe fun defined" \ - "$ldflags tmpdir/libpr19719b.o tmpdir/libpr19719.so -rpath tmpdir" \ + "-Wl,--no-as-needed,-rpath,tmpdir $ldflags tmpdir/libpr19719b.o tmpdir/libpr19719.so" \ "" \ { pr19719a.c pr19719c.c } \ $exe \ @@ -657,6 +651,11 @@ proc mix_pic_and_non_pic {xfails cflags ldflags exe} { setup_xfail $targ } + if ![isnative] { + unsupported "Run $exe fun undefined" + return + } + set exec_output [run_host_cmd "tmpdir/$exe" ""] if {![string match "PASS" $exec_output]} { fail "Run $exe fun undefined" |