old-cross-binutils/ld/emulparams
Will Newton 1419bbe571 aarch64: Add support for GNU indirect functions.
Add support for STT_GNU_IFUNC symbols to the AArch64 bfd backend. The tests
are ported from the ld-ifunc tests but are enabled for cross builds so can
be run easily without hardware or a simulator.

bfd/ChangeLog:

2013-10-03  Will Newton  <will.newton@linaro.org>

	* configure: Regenerate.
	* configure.in: Build elf-ifunc.o for AArch64.
	* elfnn-aarch64.c: Include objalloc.h.
	(elfNN_aarch64_local_htab_hash): New function.
	(elfNN_aarch64_local_htab_eq): New function.
	(elfNN_aarch64_get_local_sym_hash): New function.
	(elfNN_aarch64_link_hash_table_create): Initialize local STT_GNU_IFUNC
	symbol hash.
	(elfNN_aarch64_hash_table_free): Free local STT_GNU_IFUNC symbol hash.
	(elfNN_aarch64_final_link_relocate): Add sym argument.  Add support
	for handling STT_GNU_IFUNC symbols.
	(elfNN_aarch64_gc_sweep_hook): Add support for garbage collecting
	references to STT_GNU_IFUNC symbols.
	(elfNN_aarch64_adjust_dynamic_symbol): Add support for handling
	STT_GNU_IFUNC symbols.
	(elfNN_aarch64_check_relocs): Add support for handling STT_GNU_IFUNC
	symbols.  Ensure we don't increase plt.refcount from -1 to 0.
	(elfNN_aarch64_post_process_headers): Call _bfd_elf_set_osabi.
	(elfNN_aarch64_is_function_type): Remove function.
	(elfNN_aarch64_allocate_dynrelocs): Handle STT_GNU_IFUNC symbols.
	(elfNN_aarch64_allocate_ifunc_dynrelocs): New function.
	(elfNN_aarch64_allocate_local_dynrelocs): New function.
	(elfNN_aarch64_allocate_local_ifunc_dynrelocs): New function.
	(elfNN_aarch64_size_dynamic_sections): Call
	elfNN_aarch64_allocate_local_dynrelocs.
	(elfNN_aarch64_create_small_pltn_entry): Add info argument.
	Add support for creating .iplt entries for STT_GNU_IFUNC symbols.
	(elfNN_aarch64_finish_dynamic_symbol): Add support for handling
	STT_GNU_IFUNC symbols and .iplt.
	(elfNN_aarch64_finish_local_dynamic_symbol): New function.
	(elfNN_aarch64_finish_dynamic_sections): Call
	elfNN_aarch64_finish_local_dynamic_symbol.

ld/ChangeLog:

2013-10-03  Will Newton  <will.newton@linaro.org>

	* emulparams/aarch64elf.sh: Add IREL_IN_PLT.
	* emulparams/aarch64elf32.sh: Likewise.

ld/testsuite/ChangeLog:

2013-10-03  Will Newton  <will.newton@linaro.org>

	* ld-ifunc/ifunc.exp: Enable ifunc tests for AArch64.
	* ld-aarch64/aarch64-elf.exp: Run ifunc tests.
	* ld-aarch64/ifunc-1-local.d: New file.
	* ld-aarch64/ifunc-1-local.s: Likewise.
	* ld-aarch64/ifunc-1.d: Likewise.
	* ld-aarch64/ifunc-1.s: Likewise.
	* ld-aarch64/ifunc-10.d: Likewise.
	* ld-aarch64/ifunc-10.s: Likewise.
	* ld-aarch64/ifunc-11.d: Likewise.
	* ld-aarch64/ifunc-11.s: Likewise.
	* ld-aarch64/ifunc-12.d: Likewise.
	* ld-aarch64/ifunc-12.s: Likewise.
	* ld-aarch64/ifunc-13.d: Likewise.
	* ld-aarch64/ifunc-13a.s: Likewise.
	* ld-aarch64/ifunc-13b.s: Likewise.
	* ld-aarch64/ifunc-14a.d: Likewise.
	* ld-aarch64/ifunc-14a.s: Likewise.
	* ld-aarch64/ifunc-14b.d: Likewise.
	* ld-aarch64/ifunc-14b.s: Likewise.
	* ld-aarch64/ifunc-14c.d: Likewise.
	* ld-aarch64/ifunc-14c.s: Likewise.
	* ld-aarch64/ifunc-14d.d: Likewise.
	* ld-aarch64/ifunc-14e.d: Likewise.
	* ld-aarch64/ifunc-14f.d: Likewise.
	* ld-aarch64/ifunc-15.d: Likewise.
	* ld-aarch64/ifunc-15.s: Likewise.
	* ld-aarch64/ifunc-16.d: Likewise.
	* ld-aarch64/ifunc-16.s: Likewise.
	* ld-aarch64/ifunc-17a.d: Likewise.
	* ld-aarch64/ifunc-17a.s: Likewise.
	* ld-aarch64/ifunc-17b.d: Likewise.
	* ld-aarch64/ifunc-17b.s: Likewise.
	* ld-aarch64/ifunc-18a.d: Likewise.
	* ld-aarch64/ifunc-18a.s: Likewise.
	* ld-aarch64/ifunc-18b.d: Likewise.
	* ld-aarch64/ifunc-18b.s: Likewise.
	* ld-aarch64/ifunc-19a.d: Likewise.
	* ld-aarch64/ifunc-19a.s: Likewise.
	* ld-aarch64/ifunc-19b.d: Likewise.
	* ld-aarch64/ifunc-19b.s: Likewise.
	* ld-aarch64/ifunc-2-local.d: Likewise.
	* ld-aarch64/ifunc-2-local.s: Likewise.
	* ld-aarch64/ifunc-2.d: Likewise.
	* ld-aarch64/ifunc-2.s: Likewise.
	* ld-aarch64/ifunc-20.d: Likewise.
	* ld-aarch64/ifunc-20.s: Likewise.
	* ld-aarch64/ifunc-3.s: Likewise.
	* ld-aarch64/ifunc-3a.d: Likewise.
	* ld-aarch64/ifunc-3b.d: Likewise.
	* ld-aarch64/ifunc-4.d: Likewise.
	* ld-aarch64/ifunc-4.s: Likewise.
	* ld-aarch64/ifunc-4a.d: Likewise.
	* ld-aarch64/ifunc-5-local.s: Likewise.
	* ld-aarch64/ifunc-5.s: Likewise.
	* ld-aarch64/ifunc-5a-local.d: Likewise.
	* ld-aarch64/ifunc-5a.d: Likewise.
	* ld-aarch64/ifunc-5b-local.d: Likewise.
	* ld-aarch64/ifunc-5b.d: Likewise.
	* ld-aarch64/ifunc-5r-local.d: Likewise.
	* ld-aarch64/ifunc-6.s: Likewise.
	* ld-aarch64/ifunc-6a.d: Likewise.
	* ld-aarch64/ifunc-6b.d: Likewise.
	* ld-aarch64/ifunc-7.s: Likewise.
	* ld-aarch64/ifunc-7a.d: Likewise.
	* ld-aarch64/ifunc-7b.d: Likewise.
	* ld-aarch64/ifunc-7c.d: Likewise.
	* ld-aarch64/ifunc-8.d: Likewise.
	* ld-aarch64/ifunc-8a.s: Likewise.
	* ld-aarch64/ifunc-8b.s: Likewise.
	* ld-aarch64/ifunc-9.d: Likewise.
	* ld-aarch64/ifunc-9.s: Likewise.
2013-10-03 14:46:09 +00:00
..
aarch64elf.sh
aarch64elf32.sh
aarch64elf32b.sh
aarch64elfb.sh
aarch64linux.sh
aarch64linuxb.sh
aix5ppc.sh
aix5rs6.sh
aixppc.sh
aixrs6.sh
alpha.sh
alphavms.sh
arcelf.sh
arm_epoc_pe.sh
arm_wince_pe.sh
armaoutb.sh
armaoutl.sh
armcoff.sh
armelf.sh
armelf_fbsd.sh
armelf_linux.sh
armelf_linux_eabi.sh
armelf_nacl.sh
armelf_nbsd.sh
armelf_vxworks.sh
armelfb.sh
armelfb_linux.sh
armelfb_linux_eabi.sh
armelfb_nacl.sh
armelfb_nbsd.sh
armnbsd.sh
armnto.sh
armpe.sh
armsymbian.sh
avr1.sh
avr2.sh
avr3.sh
avr4.sh
avr5.sh
avr6.sh
avr25.sh
avr31.sh
avr35.sh
avr51.sh
avrxmega1.sh
avrxmega2.sh
avrxmega3.sh
avrxmega4.sh
avrxmega5.sh
avrxmega6.sh
avrxmega7.sh
bfin.sh
coff_i860.sh
coff_sparc.sh
crisaout.sh
criself.sh
crislinux.sh
d10velf.sh
d30v_e.sh
d30v_o.sh
d30velf.sh
delta68.sh
elf32_dlx.sh
elf32_i860.sh
elf32_i960.sh
elf32_sparc.sh
elf32_sparc_sol2.sh
elf32_sparc_vxworks.sh
elf32_spu.sh
elf32_tic6x_be.sh
elf32_tic6x_elf_be.sh
elf32_tic6x_elf_le.sh
elf32_tic6x_le.sh
elf32_tic6x_linux_be.sh
elf32_tic6x_linux_le.sh
elf32_x86_64.sh
elf32_x86_64_nacl.sh
elf32am33lin.sh
elf32b4300.sh
elf32bfinfd.sh
elf32bmip.sh
elf32bmipn32-defs.sh
elf32bmipn32.sh
elf32bsmip.sh
elf32btsmip.sh
elf32btsmip_fbsd.sh
elf32btsmipn32.sh
elf32btsmipn32_fbsd.sh
elf32cr16.sh
elf32cr16c.sh
elf32crx.sh
elf32ebmip.sh
elf32ebmipvxworks.sh
elf32elmip.sh
elf32elmipvxworks.sh
elf32epiphany.sh
elf32epiphany_4x4.sh
elf32fr30.sh
elf32frv.sh
elf32frvfd.sh
elf32i370.sh
elf32ip2k.sh
elf32iq10.sh
elf32iq2000.sh
elf32l4300.sh
elf32lm32.sh
elf32lm32fd.sh
elf32lmip.sh
elf32lppc.sh
elf32lppclinux.sh
elf32lppcnto.sh
elf32lppcsim.sh
elf32lr5900.sh
elf32lr5900n32.sh
elf32lsmip.sh
elf32ltsmip.sh
elf32ltsmip_fbsd.sh
elf32ltsmipn32.sh
elf32ltsmipn32_fbsd.sh
elf32m32c.sh
elf32mb_linux.sh
elf32mbel_linux.sh
elf32mcore.sh
elf32mep.sh
elf32metag.sh
elf32microblaze.sh
elf32microblazeel.sh
elf32mipswindiss.sh
elf32moxie.sh
elf32mt.sh
elf32openrisc.sh
elf32ppc.sh
elf32ppc_fbsd.sh
elf32ppccommon.sh
elf32ppclinux.sh
elf32ppcnto.sh
elf32ppcsim.sh
elf32ppcvxworks.sh
elf32ppcwindiss.sh
elf32rl78.sh
elf32rx.sh
elf32tilegx.sh
elf32tilegx_be.sh
elf32tilepro.sh
elf32vax.sh
elf32xc16x.sh
elf32xc16xl.sh
elf32xc16xs.sh
elf32xstormy16.sh
elf32xtensa.sh
elf64_aix.sh
elf64_ia64.sh
elf64_ia64_fbsd.sh
elf64_ia64_vms.sh
elf64_s390.sh
elf64_sparc.sh
elf64_sparc_fbsd.sh
elf64_sparc_sol2.sh
elf64alpha.sh
elf64alpha_fbsd.sh
elf64alpha_nbsd.sh
elf64bmip-defs.sh
elf64bmip.sh
elf64btsmip.sh
elf64btsmip_fbsd.sh
elf64hppa.sh
elf64lppc.sh
elf64ltsmip.sh
elf64ltsmip_fbsd.sh
elf64mmix.sh
elf64ppc.sh
elf64ppc_fbsd.sh
elf64rdos.sh
elf64tilegx.sh
elf64tilegx_be.sh
elf_fbsd.sh
elf_i386.sh
elf_i386_be.sh
elf_i386_chaos.sh
elf_i386_fbsd.sh
elf_i386_ldso.sh
elf_i386_nacl.sh
elf_i386_sol2.sh
elf_i386_vxworks.sh
elf_k1om.sh
elf_k1om_fbsd.sh
elf_l1om.sh
elf_l1om_fbsd.sh
elf_nacl.sh
elf_s390.sh
elf_x86_64.sh
elf_x86_64_fbsd.sh
elf_x86_64_nacl.sh
elf_x86_64_sol2.sh
gld960.sh
gld960coff.sh
h8300.sh
h8300elf.sh
h8300h.sh
h8300helf.sh
h8300hn.sh
h8300hnelf.sh
h8300s.sh
h8300self.sh
h8300sn.sh
h8300snelf.sh
h8300sx.sh
h8300sxelf.sh
h8300sxn.sh
h8300sxnelf.sh
h8500.sh
h8500b.sh
h8500c.sh
h8500m.sh
h8500s.sh
hp3hpux.sh
hp300bsd.sh
hppa64linux.sh
hppaelf.sh
hppalinux.sh
hppanbsd.sh
hppaobsd.sh
i386aout.sh
i386beos.sh
i386bsd.sh
i386coff.sh
i386go32.sh
i386linux.sh
i386lynx.sh
i386mach.sh
i386moss.sh
i386msdos.sh
i386nbsd.sh
i386nto.sh
i386nw.sh
i386pe.sh
i386pe_posix.sh
i386pep.sh
lnk960.sh
m32relf.sh
m32relf_linux.sh
m32rlelf.sh
m32rlelf_linux.sh
m68hc11elf.sh
m68hc11elfb.sh
m68hc12elf.sh
m68hc12elfb.sh
m68k4knbsd.sh
m68kaout.sh
m68kaux.sh
m68kcoff.sh
m68kelf.sh
m68kelfnbsd.sh
m68klinux.sh
m68knbsd.sh
m68kpsos.sh
m88kbcs.sh
mcorepe.sh
mmo.sh
mn10200.sh
mn10300.sh
msp430all.sh
news.sh
nios2elf.sh
ns32knbsd.sh
or32.sh
or32elf.sh
pc532macha.sh
pdp11.sh
pjelf.sh
pjlelf.sh
plt_unwind.sh
ppclynx.sh
ppcmacos.sh
ppcnw.sh
ppcpe.sh
README
riscix.sh
scoreelf.sh
sh.sh
shelf.sh
shelf32.sh
shelf32_linux.sh
shelf32_nbsd.sh
shelf64.sh
shelf64_nbsd.sh
shelf_fd.sh
shelf_linux.sh
shelf_nbsd.sh
shelf_nto.sh
shelf_uclinux.sh
shelf_vxworks.sh
shl.sh
shlelf.sh
shlelf32.sh
shlelf32_linux.sh
shlelf32_nbsd.sh
shlelf64.sh
shlelf64_nbsd.sh
shlelf_fd.sh
shlelf_linux.sh
shlelf_nbsd.sh
shlelf_nto.sh
shlelf_vxworks.sh
shlsymbian.sh
shpe.sh
solaris2.sh
sparcaout.sh
sparclinux.sh
sparcnbsd.sh
st2000.sh
sun3.sh
sun4.sh
tic3xcoff.sh
tic3xcoff_onchip.sh
tic4xcoff.sh
tic30aout.sh
tic30coff.sh
tic54xcoff.sh
tic80coff.sh
v850.sh
v850_rh850.sh
vanilla.sh
vax.sh
vaxnbsd.sh
vsta.sh
vxworks.sh
w65.sh
xgateelf.sh
z80.sh
z8001.sh
z8002.sh

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

The files in this directory are read by genscripts.sh as shell commands.
They set parameters for the emulations.

Copyright (C) 2012 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.