Module Name: src
Committed By: snj
Date: Sun Apr 8 05:54:40 UTC 2018
Modified Files:
src/external/gpl3/binutils/dist/bfd [netbsd-8]: elflink.c
Log Message:
Pull up following revision(s) (requested by joerg in ticket #698):
external/gpl3/binutils/dist/bfd/elflink.c: 1.14
When trying to decide the status of a weak symbol, resolve any
indirectness first. In the case of various Qt5 libraries, __bss_start
ends up with a Qt5 version, but it has to be resolved first to match the
actual (implicit) definition. This fixes the root cause of pkg/53089.
To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.13.6.1 src/external/gpl3/binutils/dist/bfd/elflink.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/gpl3/binutils/dist/bfd/elflink.c
diff -u src/external/gpl3/binutils/dist/bfd/elflink.c:1.13 src/external/gpl3/binutils/dist/bfd/elflink.c:1.13.6.1
--- src/external/gpl3/binutils/dist/bfd/elflink.c:1.13 Wed Oct 26 18:42:52 2016
+++ src/external/gpl3/binutils/dist/bfd/elflink.c Sun Apr 8 05:54:40 2018
@@ -2675,14 +2675,17 @@ _bfd_elf_fix_symbol_flags (struct elf_li
over to the real definition. */
if (h->u.weakdef != NULL)
{
+ struct elf_link_hash_entry *weakdef = h->u.weakdef;
+ while (weakdef->root.type == bfd_link_hash_indirect)
+ weakdef = (struct elf_link_hash_entry *) weakdef->root.u.i.link;
+
/* If the real definition is defined by a regular object file,
don't do anything special. See the longer description in
_bfd_elf_adjust_dynamic_symbol, below. */
- if (h->u.weakdef->def_regular)
+ if (weakdef->def_regular)
h->u.weakdef = NULL;
else
{
- struct elf_link_hash_entry *weakdef = h->u.weakdef;
while (h->root.type == bfd_link_hash_indirect)
h = (struct elf_link_hash_entry *) h->root.u.i.link;