From 94b6c40a1afad9d51ec6f7c4d6c55dd55e5ccbf6 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 5 Jun 2000 17:21:32 +0000 Subject: [PATCH] 2000-06-05 H.J. Lu * 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. --- bfd/ChangeLog | 7 +++++++ bfd/elflink.h | 9 +++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a9befba0744..4d07a187df2 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2000-06-05 H.J. Lu + + * 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 * config.bfd (i[3456]86-*-netbsdelf*): New target. diff --git a/bfd/elflink.h b/bfd/elflink.h index d09ad172a2b..a1390d30b2d 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -3289,6 +3289,9 @@ elf_fix_symbol_flags (h, eif) an ELF dynamic object. */ 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 && h->root.type != bfd_link_hash_defweak) h->elf_link_hash_flags |= (ELF_LINK_HASH_REF_REGULAR @@ -5030,10 +5033,8 @@ elf_link_output_extsym (h, data) 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 which points to foo@@GNU_1.2. We ignore these symbols, - since the indirected symbol is already in the hash table. If - the indirect symbol is non-ELF, fall through and output it. */ - if ((h->elf_link_hash_flags & ELF_LINK_NON_ELF) == 0) - return true; + since the indirected symbol is already in the hash table. */ + return true; /* Fall through. */ case bfd_link_hash_warning: -- 2.30.2