Browse Source

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.
gdb-7.8-branch
H.J. Lu 13 years ago
parent
commit
818d220a6f
  1. 7
      bfd/ChangeLog
  2. 7
      bfd/elf32-i386.c
  3. 7
      bfd/elf64-x86-64.c

7
bfd/ChangeLog

@ -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> 2014-01-14 H.J. Lu <hongjiu.lu@intel.com>
* elf32-i386.c (elf_i386_allocate_dynrelocs): Revert the last * elf32-i386.c (elf_i386_allocate_dynrelocs): Revert the last

7
bfd/elf32-i386.c

@ -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 /* 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 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) if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
eh->dyn_relocs = NULL; eh->dyn_relocs = NULL;

7
bfd/elf64-x86-64.c

@ -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 /* 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 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) if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
eh->dyn_relocs = NULL; eh->dyn_relocs = NULL;

Loading…
Cancel
Save