forked from Imagelibrary/binutils-gdb
Clear non_elf on ELF linker defined symbols.
2010-09-30 H.J. Lu <hongjiu.lu@intel.com> PR ld/11812 * elf32-i386.c (elf_i386_size_dynamic_sections): Don't allocate .got.plt section if there are no GOT nor PLT entries and there is no refeence to _GLOBAL_OFFSET_TABLE_. * elf64-x86-64.c (elf64_x86_64_size_dynamic_sections): Li.kewise. * elflink.c (_bfd_elf_define_linkage_sym): Clear non_elf.
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
2010-09-30 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/11812
|
||||
* elf32-i386.c (elf_i386_size_dynamic_sections): Don't
|
||||
allocate .got.plt section if there are no GOT nor PLT
|
||||
entries and there is no refeence to _GLOBAL_OFFSET_TABLE_.
|
||||
* elf64-x86-64.c (elf64_x86_64_size_dynamic_sections): Li.kewise.
|
||||
|
||||
* elflink.c (_bfd_elf_define_linkage_sym): Clear non_elf.
|
||||
|
||||
2010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
||||
@@ -2559,9 +2559,16 @@ elf_i386_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
if (htab->elf.sgotplt)
|
||||
{
|
||||
struct elf_link_hash_entry *got;
|
||||
got = elf_link_hash_lookup (elf_hash_table (info),
|
||||
"_GLOBAL_OFFSET_TABLE_",
|
||||
FALSE, FALSE, FALSE);
|
||||
|
||||
/* Don't allocate .got.plt section if there are no GOT nor PLT
|
||||
entries. */
|
||||
if ((htab->elf.sgotplt->size
|
||||
entries and there is no refeence to _GLOBAL_OFFSET_TABLE_. */
|
||||
if ((got == NULL
|
||||
|| !got->ref_regular_nonweak)
|
||||
&& (htab->elf.sgotplt->size
|
||||
== get_elf_backend_data (output_bfd)->got_header_size)
|
||||
&& (htab->elf.splt == NULL
|
||||
|| htab->elf.splt->size == 0)
|
||||
|
||||
@@ -2378,9 +2378,16 @@ elf64_x86_64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
if (htab->elf.sgotplt)
|
||||
{
|
||||
struct elf_link_hash_entry *got;
|
||||
got = elf_link_hash_lookup (elf_hash_table (info),
|
||||
"_GLOBAL_OFFSET_TABLE_",
|
||||
FALSE, FALSE, FALSE);
|
||||
|
||||
/* Don't allocate .got.plt section if there are no GOT nor PLT
|
||||
entries. */
|
||||
if ((htab->elf.sgotplt->size
|
||||
entries and there is no refeence to _GLOBAL_OFFSET_TABLE_. */
|
||||
if ((got == NULL
|
||||
|| !got->ref_regular_nonweak)
|
||||
&& (htab->elf.sgotplt->size
|
||||
== get_elf_backend_data (output_bfd)->got_header_size)
|
||||
&& (htab->elf.splt == NULL
|
||||
|| htab->elf.splt->size == 0)
|
||||
|
||||
@@ -86,6 +86,7 @@ _bfd_elf_define_linkage_sym (bfd *abfd,
|
||||
return NULL;
|
||||
h = (struct elf_link_hash_entry *) bh;
|
||||
h->def_regular = 1;
|
||||
h->non_elf = 0;
|
||||
h->type = STT_OBJECT;
|
||||
h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user