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 /bfd/elf64-x86-64.c | |
parent | e278ad5be65114f92eba2b2609bddd7c058376a8 (diff) | |
download | fsf-binutils-gdb-bdb892b99584bfd481ed23c90ad7ceafb31ca791.zip fsf-binutils-gdb-bdb892b99584bfd481ed23c90ad7ceafb31ca791.tar.gz fsf-binutils-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 'bfd/elf64-x86-64.c')
-rw-r--r-- | bfd/elf64-x86-64.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index f2f803a..cc5ee42 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -3464,8 +3464,9 @@ elf_x86_64_relocate_section (bfd *output_bfd, /* Check to make sure it isn't a protected function symbol for shared library since it may not be local when used as function address. */ - if (info->shared + if (!info->executable && h + && !SYMBOLIC_BIND (info, h) && h->def_regular && h->type == STT_FUNC && ELF_ST_VISIBILITY (h->other) == STV_PROTECTED) |