From: Alan Modra Date: Wed, 7 Dec 2016 23:21:00 +0000 (+1030) Subject: PR20932, Internal error during record link assignment X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8e2a4f11d477986aa360a3b588d35a194efe58f8;p=binutils-gdb.git PR20932, Internal error during record link assignment PR ld/20932 * elflink.c (bfd_elf_record_link_assignment): Handle warning symbols. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7c21bb893b4..1c1dd90e75e 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2016-12-08 Alan Modra + + PR ld/20932 + * elflink.c (bfd_elf_record_link_assignment): Handle warning symbols. + 2016-12-07 Nick Clifton PR ld/20932 diff --git a/bfd/elflink.c b/bfd/elflink.c index 49c38032fe5..9b4482d952d 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -577,6 +577,9 @@ bfd_elf_record_link_assignment (bfd *output_bfd, if (h == NULL) return provide; + if (h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + if (h->versioned == unknown) { /* Set versioned if symbol version is unknown. */ @@ -624,11 +627,8 @@ bfd_elf_record_link_assignment (bfd *output_bfd, hv->root.u.i.link = (struct bfd_link_hash_entry *) h; (*bed->elf_backend_copy_indirect_symbol) (info, h, hv); break; - case bfd_link_hash_warning: - /* See PR 20932 for a reproducer. */ - _bfd_error_handler (_("%B: Attempt to assign a value to warning symbol '%s'"), - output_bfd, name); - bfd_set_error (bfd_error_invalid_operation); + default: + BFD_FAIL (); return FALSE; }