mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 01:50:24 +08:00
2003-05-04 H.J. Lu <hjl@gnu.org>
* elflink.h (elf_merge_symbol): Don't record a hidden/internal symbol dynamic. Check indirection when removing the old definition for symbols with non-default visibility. (elf_add_default_symbol): Skip when told by elf_merge_symbol.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2003-05-04 H.J. Lu <hjl@gnu.org>
|
||||||
|
|
||||||
|
* elflink.h (elf_merge_symbol): Don't record a hidden/internal
|
||||||
|
symbol dynamic. Check indirection when removing the old
|
||||||
|
definition for symbols with non-default visibility.
|
||||||
|
(elf_add_default_symbol): Skip when told by elf_merge_symbol.
|
||||||
|
|
||||||
2003-05-02 Nick Clifton <nickc@redhat.com>
|
2003-05-02 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* elf32-xstormy16.c (xstormy16_elf_howto_table): Make the
|
* elf32-xstormy16.c (xstormy16_elf_howto_table): Make the
|
||||||
|
@ -639,8 +639,14 @@ elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash, skip,
|
|||||||
*skip = TRUE;
|
*skip = TRUE;
|
||||||
/* Make sure this symbol is dynamic. */
|
/* Make sure this symbol is dynamic. */
|
||||||
h->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC;
|
h->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC;
|
||||||
/* FIXME: Should we check type and size for protected symbol? */
|
/* A protected symbol has external availability. Make sure it is
|
||||||
return _bfd_elf_link_record_dynamic_symbol (info, h);
|
recorded as dynamic.
|
||||||
|
|
||||||
|
FIXME: Should we check type and size for protected symbol? */
|
||||||
|
if (ELF_ST_VISIBILITY (h->other) == STV_PROTECTED)
|
||||||
|
return _bfd_elf_link_record_dynamic_symbol (info, h);
|
||||||
|
else
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (!newdyn
|
else if (!newdyn
|
||||||
&& ELF_ST_VISIBILITY (sym->st_other)
|
&& ELF_ST_VISIBILITY (sym->st_other)
|
||||||
@ -649,10 +655,15 @@ elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash, skip,
|
|||||||
/* If the new symbol with non-default visibility comes from a
|
/* If the new symbol with non-default visibility comes from a
|
||||||
relocatable file and the old definition comes from a dynamic
|
relocatable file and the old definition comes from a dynamic
|
||||||
object, we remove the old definition. */
|
object, we remove the old definition. */
|
||||||
|
if ((*sym_hash)->root.type == bfd_link_hash_indirect)
|
||||||
|
h = *sym_hash;
|
||||||
h->root.type = bfd_link_hash_new;
|
h->root.type = bfd_link_hash_new;
|
||||||
h->root.u.undef.abfd = NULL;
|
h->root.u.undef.abfd = NULL;
|
||||||
h->elf_link_hash_flags &= ~ELF_LINK_HASH_DEF_DYNAMIC;
|
if (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC)
|
||||||
h->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC;
|
{
|
||||||
|
h->elf_link_hash_flags &= ~ELF_LINK_HASH_DEF_DYNAMIC;
|
||||||
|
h->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC;
|
||||||
|
}
|
||||||
/* FIXME: Should we check type and size for protected symbol? */
|
/* FIXME: Should we check type and size for protected symbol? */
|
||||||
h->size = 0;
|
h->size = 0;
|
||||||
h->type = 0;
|
h->type = 0;
|
||||||
@ -1049,6 +1060,9 @@ elf_add_default_symbol (abfd, info, h, name, sym, psec, value,
|
|||||||
&size_change_ok, dt_needed))
|
&size_change_ok, dt_needed))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
if (skip)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
if (! override)
|
if (! override)
|
||||||
{
|
{
|
||||||
bh = &hi->root;
|
bh = &hi->root;
|
||||||
@ -1158,6 +1172,9 @@ elf_add_default_symbol (abfd, info, h, name, sym, psec, value,
|
|||||||
&size_change_ok, dt_needed))
|
&size_change_ok, dt_needed))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
if (skip)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
if (override)
|
if (override)
|
||||||
{
|
{
|
||||||
/* Here SHORTNAME is a versioned name, so we don't expect to see
|
/* Here SHORTNAME is a versioned name, so we don't expect to see
|
||||||
|
Reference in New Issue
Block a user