diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-03-20 18:16:38 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-03-20 18:16:38 +0000 |
commit | bdb892b99584bfd481ed23c90ad7ceafb31ca791 (patch) | |
tree | fa9fe2766f8ceecd5d85314aa12e6acb635a3cff /ld/testsuite/ld-x86-64 | |
parent | e278ad5be65114f92eba2b2609bddd7c058376a8 (diff) | |
download | gdb-bdb892b99584bfd481ed23c90ad7ceafb31ca791.zip gdb-bdb892b99584bfd481ed23c90ad7ceafb31ca791.tar.gz gdb-bdb892b99584bfd481ed23c90ad7ceafb31ca791.tar.bz2 |
Handle relocation against protected function for -Bsymbolic
bfd/
2012-03-20 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13880
* elf32-i386.c (elf_i386_relocate_section): Don't issue an error
for R_386_GOTOFF relocation against protected function if
SYMBOLIC_BIND is true.
* elf64-x86-64.c (elf_x86_64_relocate_section): Don't issue an
error for R_X86_64_GOTOFF64 relocation against protected function
when building executable or SYMBOLIC_BIND is true.
ld/testsuite/
2012-03-20 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13880
* ld-i386/i386.exp: Run protected4 and protected5.
* ld-x86-64/x86-64.exp: Likewise.
* ld-i386/protected4.d: New.
* ld-i386/protected4.s: Likewise.
* ld-i386/protected5.d: Likewise.
* ld-i386/protected5.s: Likewise.
* ld-x86-64/protected4.d: Likewise.
* ld-x86-64/protected4.s: Likewise.
* ld-x86-64/protected5.d: Likewise.
* ld-x86-64/protected5.s: Likewise.
Diffstat (limited to 'ld/testsuite/ld-x86-64')
-rw-r--r-- | ld/testsuite/ld-x86-64/protected4.d | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/protected4.s | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/protected5.d | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/protected5.s | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/x86-64.exp | 2 |
5 files changed, 36 insertions, 0 deletions
diff --git a/ld/testsuite/ld-x86-64/protected4.d b/ld/testsuite/ld-x86-64/protected4.d new file mode 100644 index 0000000..a8a8980 --- /dev/null +++ b/ld/testsuite/ld-x86-64/protected4.d @@ -0,0 +1,5 @@ +#as: --64 +#ld: -shared -Bsymbolic -melf_x86_64 +#readelf: -r + +There are no relocations in this file. diff --git a/ld/testsuite/ld-x86-64/protected4.s b/ld/testsuite/ld-x86-64/protected4.s new file mode 100644 index 0000000..c6e41ec --- /dev/null +++ b/ld/testsuite/ld-x86-64/protected4.s @@ -0,0 +1,12 @@ + .text + .protected foo + .globl foo + .type foo, @function +foo: + ret + .size foo, .-foo + .globl bar + .type bar, @function +bar: + movabsq $foo@GOTOFF, %rax + .size bar, .-bar diff --git a/ld/testsuite/ld-x86-64/protected5.d b/ld/testsuite/ld-x86-64/protected5.d new file mode 100644 index 0000000..afe172a --- /dev/null +++ b/ld/testsuite/ld-x86-64/protected5.d @@ -0,0 +1,5 @@ +#as: --64 +#ld: -pie -melf_x86_64 +#readelf: -r + +There are no relocations in this file. diff --git a/ld/testsuite/ld-x86-64/protected5.s b/ld/testsuite/ld-x86-64/protected5.s new file mode 100644 index 0000000..8e14138 --- /dev/null +++ b/ld/testsuite/ld-x86-64/protected5.s @@ -0,0 +1,12 @@ + .text + .protected foo + .globl foo + .type foo, @function +foo: + ret + .size foo, .-foo + .globl _start + .type _start, @function +_start: + movabsq $foo@GOTOFF, %rax + .size _start, .-_start diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index f713ca5..c258251 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -158,6 +158,8 @@ run_dump_test "protected2" run_dump_test "protected2-l1om" run_dump_test "protected3" run_dump_test "protected3-l1om" +run_dump_test "protected4" +run_dump_test "protected5" run_dump_test "tlsle1" run_dump_test "tlspie1" run_dump_test "unique1" |