aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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))
{