* elflink.c (_bfd_elf_merge_symbol): Also override the version
a dynamic symbol defaulted to if preempted with a hidden or internal definition.
This commit is contained in:
parent
18c1b81abe
commit
aed81c4e9c
2 changed files with 22 additions and 14 deletions
|
@ -1,3 +1,9 @@
|
|||
2012-08-28 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* elflink.c (_bfd_elf_merge_symbol): Also override the version
|
||||
a dynamic symbol defaulted to if preempted with a hidden or
|
||||
internal definition.
|
||||
|
||||
2012-08-28 Walter Lee <walt@tilera.com>
|
||||
|
||||
* elf32-tilepro.c (allocate_dynrelocs): Use PLT_ENTRY_SIZE as size
|
||||
|
|
|
@ -1210,23 +1210,25 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
|||
vh->root.type = h->root.type;
|
||||
h->root.type = bfd_link_hash_indirect;
|
||||
(*bed->elf_backend_copy_indirect_symbol) (info, vh, h);
|
||||
/* Protected symbols will override the dynamic definition
|
||||
with default version. */
|
||||
if (ELF_ST_VISIBILITY (sym->st_other) == STV_PROTECTED)
|
||||
|
||||
h->root.u.i.link = (struct bfd_link_hash_entry *) vh;
|
||||
if (ELF_ST_VISIBILITY (sym->st_other) != STV_PROTECTED)
|
||||
{
|
||||
h->root.u.i.link = (struct bfd_link_hash_entry *) vh;
|
||||
vh->dynamic_def = 1;
|
||||
vh->ref_dynamic = 1;
|
||||
/* If the new symbol is hidden or internal, completely undo
|
||||
any dynamic link state. */
|
||||
(*bed->elf_backend_hide_symbol) (info, h, TRUE);
|
||||
h->forced_local = 0;
|
||||
h->ref_dynamic = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
h->root.type = vh->root.type;
|
||||
vh->ref_dynamic = 0;
|
||||
/* We have to hide it here since it was made dynamic
|
||||
global with extra bits when the symbol info was
|
||||
copied from the old dynamic definition. */
|
||||
(*bed->elf_backend_hide_symbol) (info, vh, TRUE);
|
||||
}
|
||||
h->ref_dynamic = 1;
|
||||
|
||||
h->def_dynamic = 0;
|
||||
h->dynamic_def = 0;
|
||||
/* FIXME: Should we check type and size for protected symbol? */
|
||||
h->size = 0;
|
||||
h->type = 0;
|
||||
|
||||
h = vh;
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue