aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2000-06-05 17:21:32 +0000
committerH.J. Lu <hjl.tools@gmail.com>2000-06-05 17:21:32 +0000
commit94b6c40a1afad9d51ec6f7c4d6c55dd55e5ccbf6 (patch)
tree739393955d90e3329df1fc2807815e84c6463fbb
parente06cae3665e66c3122d133939a76e25fd519ae26 (diff)
downloadgdb-94b6c40a1afad9d51ec6f7c4d6c55dd55e5ccbf6.zip
gdb-94b6c40a1afad9d51ec6f7c4d6c55dd55e5ccbf6.tar.gz
gdb-94b6c40a1afad9d51ec6f7c4d6c55dd55e5ccbf6.tar.bz2
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 a9befba..4d07a18 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 d09ad17..a1390d3 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: