[Bug 237068] /usr/local/bin/ld: BFD (GNU Binutils) 2.30 assertion fail elflink.c:2824

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Jul 9 23:33:36 UTC 2019


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=237068

--- Comment #52 from Mark Millard <marklmi26-fbsd at yahoo.com> ---
(In reply to Justin Hibbits from comment #51)

I do not know.

 if (h->is_weakalias)
   {
     struct elf_link_hash_entry *def = weakdef (h);

// Here, so that def->def_regular is not based on bfd_link_hash_indirect ?
// (Not a "real definition"?)

     /* 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 (def->def_regular)
       {
         h = def;
         while ((h = h->u.alias) != def)
           h->is_weakalias = 0;
       }
     else
       {
         while (h->root.type == bfd_link_hash_indirect)
           h = (struct elf_link_hash_entry *) h->root.u.i.link;

// Here instead?

         BFD_ASSERT (h->root.type == bfd_link_hash_defined
                     || h->root.type == bfd_link_hash_defweak);
         BFD_ASSERT (def->def_dynamic);
         BFD_ASSERT (def->root.type == bfd_link_hash_defined);
         (*bed->elf_backend_copy_indirect_symbol) (eif->info, def, h);
       }
   }


Might:

         while (def->root.type == bfd_link_hash_indirect)
           def = (struct elf_link_hash_entry *) def->root.u.i.link;

(validly) reach something else that is not an example of bfd_link_hash_defined?
Should def->root.type == bfd_link_hash_indirect have been possible in the
first place?

I did not figure out that much about the context for the code.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-toolchain mailing list