Check info->executable for symbols which need copy relocs

* elf64-x86-64.c (elf_x86_64_relocate_section): Check
	info->executable for symbols which need copy relocs.
This commit is contained in:
H.J. Lu 2014-12-02 16:57:45 -08:00
parent 7c5fdd25eb
commit fd9edc9089
2 changed files with 8 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2014-12-02 H.J. Lu <hongjiu.lu@intel.com>
* elf64-x86-64.c (elf_x86_64_relocate_section): Check
info->executable for symbols which need copy relocs.
2014-12-02 H.J. Lu <hongjiu.lu@intel.com>
* elf64-x86-64.c (elf_x86_64_check_relocs): Revert the last

View File

@ -4059,7 +4059,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
defined locally or for a branch. */
fail = !h->def_regular && !branch;
}
else if (!h->needs_copy)
else if (!(info->executable && h->needs_copy))
{
/* Symbol doesn't need copy reloc and isn't referenced
locally. We only allow branch to symbol with
@ -4120,7 +4120,8 @@ direct:
/* Don't copy a pc-relative relocation into the output file
if the symbol needs copy reloc. */
if ((info->shared
&& !(h != NULL
&& !(info->executable
&& h != NULL
&& h->needs_copy
&& IS_X86_64_PCREL_TYPE (r_type))
&& (h == NULL