Don't discard relocs against __ehdr_start

__ehdr_start will be defined by assign_file_positions_for_non_load_sections
later.

	PR ld/16428
	* elf32-i386.c (elf_i386_allocate_dynrelocs): Don't discard relocs
	against __ehdr_start.
	* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
This commit is contained in:
H.J. Lu 2014-01-14 16:42:35 -08:00
parent c3ce498cbd
commit 818d220a6f
3 changed files with 17 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2014-01-14 H.J. Lu <hongjiu.lu@intel.com>
PR ld/16428
* elf32-i386.c (elf_i386_allocate_dynrelocs): Don't discard relocs
against __ehdr_start.
* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
2014-01-14 H.J. Lu <hongjiu.lu@intel.com>
* elf32-i386.c (elf_i386_allocate_dynrelocs): Revert the last

View File

@ -2390,9 +2390,12 @@ elf_i386_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
}
/* Also discard relocs on undefined weak syms with non-default
visibility. */
visibility. Don't discard relocs against __ehdr_start which
will be defined by assign_file_positions_for_non_load_sections
later. */
if (eh->dyn_relocs != NULL
&& h->root.type == bfd_link_hash_undefweak)
&& h->root.type == bfd_link_hash_undefweak
&& strcmp (h->root.root.string, "__ehdr_start") != 0)
{
if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
eh->dyn_relocs = NULL;

View File

@ -2473,9 +2473,12 @@ elf_x86_64_allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
}
/* Also discard relocs on undefined weak syms with non-default
visibility. */
visibility. Don't discard relocs against __ehdr_start which
will be defined by assign_file_positions_for_non_load_sections
later. */
if (eh->dyn_relocs != NULL
&& h->root.type == bfd_link_hash_undefweak)
&& h->root.type == bfd_link_hash_undefweak
&& strcmp (h->root.root.string, "__ehdr_start") != 0)
{
if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
eh->dyn_relocs = NULL;