From f3012016f008030b48597b578a5fb1e550907374 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 20 Oct 2017 09:47:08 -0700 Subject: Add a compile-time test for PR ld/22269 This compile-time test requires a target C compiler to run. It fails on many targets where ELF backend linkers fail to check undefined weak symbol in static PIE via UNDEFWEAK_NO_DYNAMIC_RELOC. PR ld/22269 * testsuite/ld-elf/pr22269-1.rd: New file. * testsuite/ld-elf/pr22269-1.c: Likewise. * testsuite/ld-elf/shared.exp: Run pr22269-1. --- ld/ChangeLog | 7 +++++++ ld/testsuite/ld-elf/pr22269-1.c | 8 ++++++++ ld/testsuite/ld-elf/pr22269-1.rd | 5 +++++ ld/testsuite/ld-elf/shared.exp | 13 +++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 ld/testsuite/ld-elf/pr22269-1.c create mode 100644 ld/testsuite/ld-elf/pr22269-1.rd diff --git a/ld/ChangeLog b/ld/ChangeLog index 586420a..7cd9e7c 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2017-10-20 H.J. Lu + + PR ld/22269 + * testsuite/ld-elf/pr22269-1.rd: New file. + * testsuite/ld-elf/pr22269-1.c: Likewise. + * testsuite/ld-elf/shared.exp: Run pr22269-1. + 2017-10-19 Palmer Dabbelt * emultempl/riscvelf.em (riscv_elf_before_allocation): Add a diff --git a/ld/testsuite/ld-elf/pr22269-1.c b/ld/testsuite/ld-elf/pr22269-1.c new file mode 100644 index 0000000..8197687 --- /dev/null +++ b/ld/testsuite/ld-elf/pr22269-1.c @@ -0,0 +1,8 @@ +extern int foo __attribute ((weak)); + +int +_start (void) +{ + if (&foo) + return foo; +} diff --git a/ld/testsuite/ld-elf/pr22269-1.rd b/ld/testsuite/ld-elf/pr22269-1.rd new file mode 100644 index 0000000..9df3c38 --- /dev/null +++ b/ld/testsuite/ld-elf/pr22269-1.rd @@ -0,0 +1,5 @@ +# NONE relocs are not needed in a PIE. +#failif +#... +[0-9a-f]+ +[0-9a-f]+ +R_.*_NONE.* +#pass diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index 6e091c9..640d324 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -465,6 +465,19 @@ set build_tests { run_cc_link_tests $build_tests +run_ld_link_tests [list \ + [list \ + "Build pr22269-1" \ + "-pie -e _start --no-dynamic-linker -z text" \ + "" \ + "" \ + { pr22269-1.c } \ + {{readelf -rW pr22269-1.rd}} \ + "pr22269-1" \ + "-fPIE -O2" \ + ] \ +] + set run_tests [list \ [list "Run normal with libfoo.so" \ "-Wl,--no-as-needed tmpdir/begin.o tmpdir/libfoo.so tmpdir/end.o" "" \ -- cgit v1.1