* 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.
|
||
|---|---|---|
| .. | ||
| a29k.sc | ||
| aix.sc | ||
| alpha.sc | ||
| aout.sc | ||
| armaout.sc | ||
| armbpabi.sc | ||
| armcoff.sc | ||
| avr.sc | ||
| crisaout.sc | ||
| delta68.sc | ||
| dlx.sc | ||
| ebmon29k.sc | ||
| elf32cr16.sc | ||
| elf32cr16c.sc | ||
| elf32crx.sc | ||
| elf32msp430_3.sc | ||
| elf32msp430.sc | ||
| elf32sh-symbian.sc | ||
| elf32xc16x.sc | ||
| elf32xc16xl.sc | ||
| elf32xc16xs.sc | ||
| elf_chaos.sc | ||
| elf.sc | ||
| elfd10v.sc | ||
| elfd30v.sc | ||
| elfi370.sc | ||
| elfm68hc11.sc | ||
| elfm68hc12.sc | ||
| elfxtensa.sc | ||
| epocpe.sc | ||
| h8300.sc | ||
| h8300h.sc | ||
| h8300hn.sc | ||
| h8300s.sc | ||
| h8300sn.sc | ||
| h8300sx.sc | ||
| h8300sxn.sc | ||
| h8500.sc | ||
| h8500b.sc | ||
| h8500c.sc | ||
| h8500m.sc | ||
| h8500s.sc | ||
| hppaelf.sc | ||
| i386beos.sc | ||
| i386coff.sc | ||
| i386go32.sc | ||
| i386msdos.sc | ||
| i860coff.sc | ||
| i960.sc | ||
| ip2k.sc | ||
| iq2000.sc | ||
| m68kaux.sc | ||
| m68kcoff.sc | ||
| m68klynx.sc | ||
| m88kbcs.sc | ||
| maxqcoff.sc | ||
| mcorepe.sc | ||
| mep.sc | ||
| mips.sc | ||
| mipsbsd.sc | ||
| mmo.sc | ||
| nw.sc | ||
| or32.sc | ||
| pe.sc | ||
| pep.sc | ||
| pj.sc | ||
| ppcpe.sc | ||
| psos.sc | ||
| README | ||
| riscix.sc | ||
| sa29200.sc | ||
| sh.sc | ||
| sparccoff.sc | ||
| sparclynx.sc | ||
| st2000.sc | ||
| tic4xcoff.sc | ||
| tic30aout.sc | ||
| tic30coff.sc | ||
| tic54xcoff.sc | ||
| tic80coff.sc | ||
| v850.sc | ||
| vanilla.sc | ||
| w65.sc | ||
| xstormy16.sc | ||
| z80.sc | ||
| z8000.sc | ||
The files in this directory are linker script templates.
genscripts.sh sets some shell variables, then sources
EMULATION.sc, to generate EMULATION.{x,xr,xu,xn,xbn} -- the script
files for default, -r, -Ur, -n, -N.