* common.h (STT_IFUNC): Define.
elfcpp/
* elfcpp.h (enum STT): Add STT_IFUNC.
bfd/
* syms.c (struct bfd_symbol): Add new flag BSF_INDIRECT_FUNCTION.
Remove redundant flag BFD_FORT_COMM_DEFAULT_VALUE. Renumber flags
to remove gaps.
(bfd_print_symbol_vandf): Return 'i' for BSF_INDIRECT_FUNCTION.
(bfd_decode_symclass): Likewise.
* elf.c (swap_out_syms): Translate BSF_INDIRECT_FUNCTION into
STT_IFUNC.
(elf_find_function): Treat STT_IFUNC in the same way as STT_FUNC.
(_bfd_elf_is_function_type): Likewise.
* elf32-arm.c (arm_elf_find_function): Likewise.
(elf32_arm_adjust_dynamic_symbol): Likewise.
(elf32_arm_swap_symbol_in): Likewise.
(elf32_arm_additional_program_headers): Likewise.
* elf32-i386.c (is_indirect_symbol): New function.
(elf_i386_check_relocs): Also generate dynamic relocs for
relocations against STT_IFUNC symbols.
(allocate_dynrelocs): Likewise.
(elf_i386_relocate_section): Likewise.
* elf64-x86-64.c (is_indirect_symbol): New function.
(elf64_x86_64_check_relocs): Also generate dynamic relocs for
relocations against STT_IFUNC symbols.
(allocate_dynrelocs): Likewise.
(elf64_x86_64_relocate_section): Likewise.
* elfcode.h (elf_slurp_symbol_table): Translate STT_IFUNC into
BSF_INDIRECT_FUNCTION.
* elflink.c (_bfd_elf_adjust_dynamic_reloc_section): Add support
for STT_IFUNC symbols.
(get_ifunc_reloc_section_name): New function.
(_bfd_elf_make_ifunc_reloc_section): New function.
* elf-bfd.h (struct bfd_elf_section_data): Add indirect_relocs field.
* bfd-in2.h: Regenerate.
gas/
* config/obj-elf.c (obj_elf_type): Add support for STT_IFUNC type.
* doc/as.texinfo: Document new feature.
* NEWS: Mention new feature.
gas/testsuite/
* gas/elf/type.s: Add test of STT_IFUNC symbol type.
* gas/elf/type.e: Update expected disassembly.
* gas/elf/elf.exp: Update grep of symbol types.
ld/
* NEWS: Mention new feature.
* pe-dll.c (process_def_file): Replace use of redundant
BFD_FORT_COMM_DEFAULT_VALUE with 0.
* scripttempl/elf.sc: Add .rel.ifunc.dyn and .rela.ifunc.dyn
sections.
ld/testsuite/
* ld-mips-elf/reloc-1-n32.d: Updated expected output for reloc
descriptions.
* ld-mips-elf/reloc-1-n64.d: Likewise.
* ld-i386/ifunc.d: New test.
* ld-i386/ifunc.s: Source file for the new test.
* ld-i386/i386.exp: Run the new test.
|
||
|---|---|---|
| .. | ||
| alpha.h | ||
| arc.h | ||
| arm.h | ||
| avr.h | ||
| bfin.h | ||
| ChangeLog | ||
| ChangeLog-9103 | ||
| common.h | ||
| cr16.h | ||
| cr16c.h | ||
| cris.h | ||
| crx.h | ||
| d10v.h | ||
| d30v.h | ||
| dlx.h | ||
| dwarf2.h | ||
| dwarf.h | ||
| external.h | ||
| fr30.h | ||
| frv.h | ||
| h8.h | ||
| hppa.h | ||
| i370.h | ||
| i386.h | ||
| i860.h | ||
| i960.h | ||
| ia64.h | ||
| internal.h | ||
| ip2k.h | ||
| iq2000.h | ||
| m32c.h | ||
| m32r.h | ||
| m68hc11.h | ||
| m68k.h | ||
| mcore.h | ||
| mep.h | ||
| mips.h | ||
| mmix.h | ||
| mn10200.h | ||
| mn10300.h | ||
| msp430.h | ||
| mt.h | ||
| openrisc.h | ||
| or32.h | ||
| pj.h | ||
| ppc64.h | ||
| ppc.h | ||
| reloc-macros.h | ||
| s390.h | ||
| score.h | ||
| sh.h | ||
| sparc.h | ||
| spu.h | ||
| v850.h | ||
| vax.h | ||
| vxworks.h | ||
| x86-64.h | ||
| xc16x.h | ||
| xstormy16.h | ||
| xtensa.h | ||