diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-03-15 11:46:51 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-03-15 11:47:06 -0700 |
commit | 4e0c91e45402ebf4215066e4a61143896e831049 (patch) | |
tree | 55a15e4ef85bf47a1177c6a3c8e16f9f145f5e0f /ld | |
parent | 4c10bbaa0912742322f10d9d5bb630ba4e15dfa7 (diff) | |
download | gdb-4e0c91e45402ebf4215066e4a61143896e831049.zip gdb-4e0c91e45402ebf4215066e4a61143896e831049.tar.gz gdb-4e0c91e45402ebf4215066e4a61143896e831049.tar.bz2 |
Bind defined symbol locally in PIE
Symbols defined in PIE should be bound locally, the same as -shared
-Bsymbolic.
bfd/
PR ld/19827
* elf32-i386.c (elf_i386_check_relocs): Bind defined symbol
locally in PIE.
(elf_i386_relocate_section): Likewise.
* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
(elf_x86_64_relocate_section): Likewise.
ld/
PR ld/19827
* testsuite/ld-i386/i386.exp: Run PR ld/19827 tests.
* testsuite/ld-x86-64/x86-64.exp: Likewise.
* testsuite/ld-i386/pr19827.rd: New file.
* testsuite/ld-i386/pr19827a.S: Likewise.
* testsuite/ld-i386/pr19827b.S: Likewise.
* testsuite/ld-x86-64/pr19827.rd: Likewise.
* testsuite/ld-x86-64/pr19827a.S: Likewise.
* testsuite/ld-x86-64/pr19827b.S: Likewise.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/i386.exp | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pr19827.rd | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pr19827a.S | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pr19827b.S | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19827.rd | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19827a.S | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19827b.S | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/x86-64.exp | 8 |
9 files changed, 58 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index d3172dc..04b484c 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,5 +1,17 @@ 2016-03-15 H.J. Lu <hongjiu.lu@intel.com> + PR ld/19827 + * testsuite/ld-i386/i386.exp: Run PR ld/19827 tests. + * testsuite/ld-x86-64/x86-64.exp: Likewise. + * testsuite/ld-i386/pr19827.rd: New file. + * testsuite/ld-i386/pr19827a.S: Likewise. + * testsuite/ld-i386/pr19827b.S: Likewise. + * testsuite/ld-x86-64/pr19827.rd: Likewise. + * testsuite/ld-x86-64/pr19827a.S: Likewise. + * testsuite/ld-x86-64/pr19827b.S: Likewise. + +2016-03-15 H.J. Lu <hongjiu.lu@intel.com> + PR ld/19807 * Makefile.am (ELF_X86_DEPS): Add $(srcdir)/emulparams/reloc_overflow.sh. diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index 1e52cdb..2b7a09e 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -195,6 +195,14 @@ set i386tests { "--32" {pr17709a.s} {} "libpr17709.so"} {"PR ld/17709 (2)" "-melf_i386 tmpdir/libpr17709.so" "" "--32" {pr17709b.s} {{readelf -r pr17709.rd}} "pr17709"} + {"Build pr19827a.o" "" "" + "--32" { pr19827a.S }} + {"Build pr19827b.so" "-melf_i386 -shared" "" + "--32" { pr19827b.S } {} "pr19827b.so"} + {"Build pr19827" "-melf_i386 -pie tmpdir/pr19827a.o tmpdir/pr19827b.so" "" + "--32" { dummy.s } {{readelf {-rW} pr19827.rd}} "pr19827"} + {"Build pr19827.so" "-melf_i386 -shared -Bsymbolic" "" + "--32" { pr19827a.S } {{readelf {-rW} pr19827.rd}} "pr19827.so"} } # So as to avoid rewriting every last test case here in a nacl variant, diff --git a/ld/testsuite/ld-i386/pr19827.rd b/ld/testsuite/ld-i386/pr19827.rd new file mode 100644 index 0000000..5d2a885 --- /dev/null +++ b/ld/testsuite/ld-i386/pr19827.rd @@ -0,0 +1,5 @@ +#readelf: -r --wide + +Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 1 entries: + Offset Info Type Sym. Value Symbol's Name +[0-9a-f]+ +[0-9a-f]+ +R_386_RELATIVE + diff --git a/ld/testsuite/ld-i386/pr19827a.S b/ld/testsuite/ld-i386/pr19827a.S new file mode 100644 index 0000000..cdf1d4b --- /dev/null +++ b/ld/testsuite/ld-i386/pr19827a.S @@ -0,0 +1,8 @@ + .text + .global _start +_start: + .dc.a foo + .data + .globl foo +foo: + .byte 0 diff --git a/ld/testsuite/ld-i386/pr19827b.S b/ld/testsuite/ld-i386/pr19827b.S new file mode 100644 index 0000000..bb46e1d --- /dev/null +++ b/ld/testsuite/ld-i386/pr19827b.S @@ -0,0 +1,2 @@ + .data + .dc.a foo diff --git a/ld/testsuite/ld-x86-64/pr19827.rd b/ld/testsuite/ld-x86-64/pr19827.rd new file mode 100644 index 0000000..67eaacc --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19827.rd @@ -0,0 +1,5 @@ +#readelf: -r --wide + +Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries: + Offset Info Type Symbol's Value Symbol's Name \+ Addend +[0-9a-f]+ +[0-9a-f]+ +R_X86_64_RELATIVE +[0-9a-f]+ diff --git a/ld/testsuite/ld-x86-64/pr19827a.S b/ld/testsuite/ld-x86-64/pr19827a.S new file mode 100644 index 0000000..cdf1d4b --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19827a.S @@ -0,0 +1,8 @@ + .text + .global _start +_start: + .dc.a foo + .data + .globl foo +foo: + .byte 0 diff --git a/ld/testsuite/ld-x86-64/pr19827b.S b/ld/testsuite/ld-x86-64/pr19827b.S new file mode 100644 index 0000000..bb46e1d --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19827b.S @@ -0,0 +1,2 @@ + .data + .dc.a foo diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index 8f29761..603ef37 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -148,6 +148,14 @@ set x86_64tests { "--64" {pr17709a.s} {} "libpr17709.so"} {"PR ld/17709 (2)" "-melf_x86_64 tmpdir/libpr17709.so" "" "--64" {pr17709b.s} {{readelf -rW pr17709.rd}} "pr17709"} + {"Build pr19827a.o" "" "" + "--64" { pr19827a.S }} + {"Build pr19827b.so" "-melf_x86_64 -shared" "" + "--64" { pr19827b.S } {} "pr19827b.so"} + {"Build pr19827" "-melf_x86_64 -pie tmpdir/pr19827a.o tmpdir/pr19827b.so" "" + "--64" { dummy.s } {{readelf {-rW} pr19827.rd}} "pr19827"} + {"Build pr19827.so" "-melf_x86_64 -shared -Bsymbolic" "" + "--64" { pr19827a.S } {{readelf {-rW} pr19827.rd}} "pr19827.so"} } # So as to avoid rewriting every last test case here in a nacl variant, |