Tue Aug 26 16:39:49 2014 UTC ()
Allow STT_GNU_IFUNC to be a dynamic symbol.


(matt)
diff -r1.7 -r1.8 src/external/gpl3/binutils/dist/bfd/elfxx-mips.c

cvs diff -r1.7 -r1.8 src/external/gpl3/binutils/dist/bfd/elfxx-mips.c (expand / switch to unified diff)

--- src/external/gpl3/binutils/dist/bfd/elfxx-mips.c 2013/09/29 14:03:29 1.7
+++ src/external/gpl3/binutils/dist/bfd/elfxx-mips.c 2014/08/26 16:39:49 1.8
@@ -8616,26 +8616,27 @@ _bfd_mips_elf_adjust_dynamic_symbol (str @@ -8616,26 +8616,27 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
8616 bfd *dynobj; 8616 bfd *dynobj;
8617 struct mips_elf_link_hash_entry *hmips; 8617 struct mips_elf_link_hash_entry *hmips;
8618 struct mips_elf_link_hash_table *htab; 8618 struct mips_elf_link_hash_table *htab;
8619 8619
8620 htab = mips_elf_hash_table (info); 8620 htab = mips_elf_hash_table (info);
8621 BFD_ASSERT (htab != NULL); 8621 BFD_ASSERT (htab != NULL);
8622 8622
8623 dynobj = elf_hash_table (info)->dynobj; 8623 dynobj = elf_hash_table (info)->dynobj;
8624 hmips = (struct mips_elf_link_hash_entry *) h; 8624 hmips = (struct mips_elf_link_hash_entry *) h;
8625 8625
8626 /* Make sure we know what is going on here. */ 8626 /* Make sure we know what is going on here. */
8627 BFD_ASSERT (dynobj != NULL 8627 BFD_ASSERT (dynobj != NULL
8628 && (h->needs_plt 8628 && (h->needs_plt
 8629 || h->type == STT_GNU_IFUNC
8629 || h->u.weakdef != NULL 8630 || h->u.weakdef != NULL
8630 || (h->def_dynamic 8631 || (h->def_dynamic
8631 && h->ref_regular 8632 && h->ref_regular
8632 && !h->def_regular))); 8633 && !h->def_regular)));
8633 8634
8634 hmips = (struct mips_elf_link_hash_entry *) h; 8635 hmips = (struct mips_elf_link_hash_entry *) h;
8635 8636
8636 /* If there are call relocations against an externally-defined symbol, 8637 /* If there are call relocations against an externally-defined symbol,
8637 see whether we can create a MIPS lazy-binding stub for it. We can 8638 see whether we can create a MIPS lazy-binding stub for it. We can
8638 only do this if all references to the function are through call 8639 only do this if all references to the function are through call
8639 relocations, and in that case, the traditional lazy-binding stubs 8640 relocations, and in that case, the traditional lazy-binding stubs
8640 are much more efficient than PLT entries. 8641 are much more efficient than PLT entries.
8641 8642