aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2014-12-24 11:52:26 +1030
committerAlan Modra <amodra@gmail.com>2014-12-24 13:02:42 +1030
commitd5111a0e037c732029879829ca4d18ae2ae0d3e5 (patch)
tree430f2333eeb40e4175080e6698264edfabc5b076
parent931804de6cec4ba55de1bf8b2f893879ebbf1537 (diff)
downloadgdb-d5111a0e037c732029879829ca4d18ae2ae0d3e5.zip
gdb-d5111a0e037c732029879829ca4d18ae2ae0d3e5.tar.gz
gdb-d5111a0e037c732029879829ca4d18ae2ae0d3e5.tar.bz2
Fix generic linker symbol output when weak is overridden by strong
Yes, I know this also affects bfd_link_hash_indirect, but output of indirect and warning symbols looks quite broken anyway. * linker.c (_bfd_generic_link_output_symbols): Remove BSF_WEAK flag from bfd_link_hash_defined symbols.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/linker.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8e6fa09..7b0ad1d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-24 Alan Modra <amodra@gmail.com>
+
+ * linker.c (_bfd_generic_link_output_symbols): Remove BSF_WEAK
+ flag from bfd_link_hash_defined symbols.
+
2014-12-23 Andrew Burgess <andrew.burgess@embecosm.com>
* elf32-avr.c (bfd_elf_avr_final_write_processing): Don't set
diff --git a/bfd/linker.c b/bfd/linker.c
index 9223810..083a250 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -2136,7 +2136,7 @@ _bfd_generic_link_output_symbols (bfd *output_bfd,
/* fall through */
case bfd_link_hash_defined:
sym->flags |= BSF_GLOBAL;
- sym->flags &=~ BSF_CONSTRUCTOR;
+ sym->flags &=~ (BSF_WEAK | BSF_CONSTRUCTOR);
sym->value = h->root.u.def.value;
sym->section = h->root.u.def.section;
break;