2000-06-05 H.J. Lu <hjl@gnu.org>

* elflink.h (elf_fix_symbol_flags): Follow the link for the
	indirect symbol for the ELF_LINK_NON_ELF bit.
	(elf_link_output_extsym): Don't output the indirect symbol even
	if the ELF_LINK_NON_ELF bit is set.
This commit is contained in:
H.J. Lu 2000-06-05 17:21:32 +00:00
parent e06cae3665
commit 94b6c40a1a
2 changed files with 12 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2000-06-05 H.J. Lu <hjl@gnu.org>
* elflink.h (elf_fix_symbol_flags): Follow the link for the
indirect symbol for the ELF_LINK_NON_ELF bit.
(elf_link_output_extsym): Don't output the indirect symbol even
if the ELF_LINK_NON_ELF bit is set.
2000-06-01 J.T. Conklin <jtc@redback.com> 2000-06-01 J.T. Conklin <jtc@redback.com>
* config.bfd (i[3456]86-*-netbsdelf*): New target. * config.bfd (i[3456]86-*-netbsdelf*): New target.

View File

@ -3289,6 +3289,9 @@ elf_fix_symbol_flags (h, eif)
an ELF dynamic object. */ an ELF dynamic object. */
if ((h->elf_link_hash_flags & ELF_LINK_NON_ELF) != 0) if ((h->elf_link_hash_flags & ELF_LINK_NON_ELF) != 0)
{ {
while (h->root.type == bfd_link_hash_indirect)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
if (h->root.type != bfd_link_hash_defined if (h->root.type != bfd_link_hash_defined
&& h->root.type != bfd_link_hash_defweak) && h->root.type != bfd_link_hash_defweak)
h->elf_link_hash_flags |= (ELF_LINK_HASH_REF_REGULAR h->elf_link_hash_flags |= (ELF_LINK_HASH_REF_REGULAR
@ -5030,9 +5033,7 @@ elf_link_output_extsym (h, data)
symbol foo@@GNU_1.2 is the default, which should be used when symbol foo@@GNU_1.2 is the default, which should be used when
foo is used with no version, then we add an indirect symbol foo is used with no version, then we add an indirect symbol
foo which points to foo@@GNU_1.2. We ignore these symbols, foo which points to foo@@GNU_1.2. We ignore these symbols,
since the indirected symbol is already in the hash table. If since the indirected symbol is already in the hash table. */
the indirect symbol is non-ELF, fall through and output it. */
if ((h->elf_link_hash_flags & ELF_LINK_NON_ELF) == 0)
return true; return true;
/* Fall through. */ /* Fall through. */