diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-10-07 03:07:36 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-10-11 13:44:16 -0700 |
commit | 4b97e3893ed2af7bdb9dcaa34fae1a207e2d7042 (patch) | |
tree | 859b1329697f6830a1ca3b692d434130cb4f17dd /ld/testsuite | |
parent | 853ee16fcdf7e60f297b3456353b3a69f4822bec (diff) | |
download | gdb-4b97e3893ed2af7bdb9dcaa34fae1a207e2d7042.zip gdb-4b97e3893ed2af7bdb9dcaa34fae1a207e2d7042.tar.gz gdb-4b97e3893ed2af7bdb9dcaa34fae1a207e2d7042.tar.bz2 |
Add 2 testcases for PR ld/22269
Since undefined weak symbols in static PIE are always resolved to 0 at
run-time, linker should resolve them as 0 at link-time, regardless of
whether "-z dynamic-undefined-weak" is used. "-z dynamic-undefined-weak"
only makes undefined weak symbols dynamic, but doesn't change undefined
weak symbol resolution in static PIE at link-time. These tests currently
pass on x86, but fails on many other targets.
The framework to resolve weak symbols in static PE at link-time is
posted at
https://sourceware.org/ml/binutils/2017-10/msg00087.html
which requires users/hjl/check_relocs branch to call check_relocs after
opening all inputs. I will submit backend patches for failling targets
after merging users/hjl/check_relocs branch next.
* PR ld/22269
* testsuite/ld-elf/pr22269.s: New file.
* testsuite/ld-elf/pr22269a.d: Likewise.
* testsuite/ld-elf/pr22269b.d: Likewise.
Diffstat (limited to 'ld/testsuite')
-rw-r--r-- | ld/testsuite/ld-elf/pr22269.s | 13 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr22269a.d | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr22269b.d | 10 |
3 files changed, 33 insertions, 0 deletions
diff --git a/ld/testsuite/ld-elf/pr22269.s b/ld/testsuite/ld-elf/pr22269.s new file mode 100644 index 0000000..71c1c06 --- /dev/null +++ b/ld/testsuite/ld-elf/pr22269.s @@ -0,0 +1,13 @@ + .globl main + .globl start + .globl _start + .globl __start + .text +main: +start: +_start: +__start: + .byte 0 + .section .data.rel.ro.local,"aw",%progbits + .weak func + .dc.a func diff --git a/ld/testsuite/ld-elf/pr22269a.d b/ld/testsuite/ld-elf/pr22269a.d new file mode 100644 index 0000000..d993d19 --- /dev/null +++ b/ld/testsuite/ld-elf/pr22269a.d @@ -0,0 +1,10 @@ +#name: PR ld/22269 +#source: pr22269.s +#ld: -pie --no-dynamic-linker +#readelf: -r -x .data.rel.ro +#target: *-*-linux* *-*-gnu* *-*-nacl* + +There are no relocations in this file. + +Hex dump of section '.data.rel.ro': + 0x[a-f0-9]+ [0 ]+[ ]+.+ diff --git a/ld/testsuite/ld-elf/pr22269b.d b/ld/testsuite/ld-elf/pr22269b.d new file mode 100644 index 0000000..8810922 --- /dev/null +++ b/ld/testsuite/ld-elf/pr22269b.d @@ -0,0 +1,10 @@ +#name: PR ld/22269 (-z dynamic-undefined-weak) +#source: pr22269.s +#ld: -pie --no-dynamic-linker -z dynamic-undefined-weak +#readelf: -r -x .data.rel.ro +#target: *-*-linux* *-*-gnu* *-*-nacl* + +There are no relocations in this file. + +Hex dump of section '.data.rel.ro': + 0x[a-f0-9]+ [0 ]+[ ]+.+ |