aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2011-12-07 12:15:54 +0000
committerAlan Modra <amodra@gmail.com>2011-12-07 12:15:54 +0000
commit6673f753c019918af9fc3eb97543e2c3a90460b9 (patch)
treeb43c293608133bc516f464560e3df4795894589e
parentafbb9e17e41abd51e78f31bfaa1ade56cb232d39 (diff)
downloadbinutils-6673f753c019918af9fc3eb97543e2c3a90460b9.zip
binutils-6673f753c019918af9fc3eb97543e2c3a90460b9.tar.gz
binutils-6673f753c019918af9fc3eb97543e2c3a90460b9.tar.bz2
PR ld/12772
* elflink.c (elf_gc_sweep_symbol): Discard unmarked symbols defined in shared libraries.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elflink.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index a6f8c6f..6b1e88a 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2011-12-07 Alan Modra <amodra@gmail.com>
+
+ PR ld/12772
+ * elflink.c (elf_gc_sweep_symbol): Discard unmarked symbols
+ defined in shared libraries.
+
2011-12-07 Tristan Gingold <gingold@adacore.com>
* mach-o.c (bfd_mach_o_canonicalize_symtab): Fix indentation.
diff --git a/bfd/elflink.c b/bfd/elflink.c
index ac95c22..1d1ca0b 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -11725,7 +11725,8 @@ elf_gc_sweep_symbol (struct elf_link_hash_entry *h, void *data)
if (!h->mark
&& (((h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
- && !h->root.u.def.section->gc_mark)
+ && !(h->def_regular
+ && h->root.u.def.section->gc_mark))
|| h->root.type == bfd_link_hash_undefined
|| h->root.type == bfd_link_hash_undefweak))
{