summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl@lucon.org>2000-06-05 17:21:32 +0000
committerH.J. Lu <hjl@lucon.org>2000-06-05 17:21:32 +0000
commitf823539986211a0f5034c7e320d8e2dfb1c36a79 (patch)
tree3e8262df280dcfeb3b40de970649b01f6bf9e5a4
parent49f034a52246b059dc870cfcdb312a385ce3af9a (diff)
downloadgdb-f823539986211a0f5034c7e320d8e2dfb1c36a79.tar.gz
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.
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elflink.h9
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 <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>
* 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: