Return reloc_class_ifunc for reloc against IFUNC
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 18 Aug 2015 16:47:59 +0000 (09:47 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 18 Aug 2015 16:50:08 +0000 (09:50 -0700)
commitcae1fbbb7e3d770702a0d7a5027b46835e6adc13
tree892f4044f4c7e0e5bcd830f51fa7b0728e63050f
parent2b4bf6afd4506165007c0e76bc7c4381031cfaf6
Return reloc_class_ifunc for reloc against IFUNC

elf_XXX_reloc_type_class should return reloc_class_ifunc for relocation
against STT_GNU_IFUNC symbol.

bfd/

PR ld/18841
* elf-bfd.h (elf_link_hash_table): Add dynsym.
* elf32-i386.c (elf_i386_reloc_type_class): Return
reloc_class_ifunc for relocation against STT_GNU_IFUNC symbol.
* elf64-x86-64.c (elf_x86_64_reloc_type_class): Likewise.
* elflink.c (_bfd_elf_link_create_dynamic_sections): Set dynsym.
(bfd_elf_size_dynsym_hash_dynstr): Use dynsym.
(elf_final_link_info): Remove dynsym_sec.
(elf_link_output_extsym): Replace dynsym_sec with dynsym.
(bfd_elf_final_link): Remove reference to dynsym_sec.  Replace
dynsym_sec with dynsym.

ld/testsuite/

PR ld/18841
* ld-ifunc/ifunc.exp: Add a test for PR ld/18841.
* ld-ifunc/pr18841.out: New file.
* ld-ifunc/pr18841a.c: Likewise.
* ld-ifunc/pr18841b.c: Likewise.
bfd/ChangeLog
bfd/elf-bfd.h
bfd/elf32-i386.c
bfd/elf64-x86-64.c
bfd/elflink.c
ld/testsuite/ChangeLog
ld/testsuite/ld-ifunc/ifunc.exp
ld/testsuite/ld-ifunc/pr18841.out [new file with mode: 0644]
ld/testsuite/ld-ifunc/pr18841a.c [new file with mode: 0644]
ld/testsuite/ld-ifunc/pr18841b.c [new file with mode: 0644]