Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/gpl3/binutils/dist/bfd When trying to decide the st...



details:   https://anonhg.NetBSD.org/src/rev/3d3e3b04e4b8
branches:  trunk
changeset: 831380:3d3e3b04e4b8
user:      joerg <joerg%NetBSD.org@localhost>
date:      Tue Mar 27 23:39:23 2018 +0000

description:
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.

diffstat:

 external/gpl3/binutils/dist/bfd/elflink.c |  7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diffs (23 lines):

diff -r bb25b877d95d -r 3d3e3b04e4b8 external/gpl3/binutils/dist/bfd/elflink.c
--- a/external/gpl3/binutils/dist/bfd/elflink.c Tue Mar 27 23:11:25 2018 +0000
+++ b/external/gpl3/binutils/dist/bfd/elflink.c Tue Mar 27 23:39:23 2018 +0000
@@ -2675,14 +2675,17 @@
      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;



Home | Main Index | Thread Index | Old Index