newlib/include/elf
Will Newton 0d284dd0c1 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-06-07  Will Newton  <will.newton@linaro.org>

	* configure: Regenerate.
	* configure.in: Build elf-ifunc.o for AArch64.
	* elf64-aarch64.c: Include objalloc.h.
	(elf64_aarch64_howto_dynrelocs): Add R_AARCH64_IRELATIVE howto.
	(struct elf64_aarch64_link_hash_table): Add members for handling
	R_AARCH64_IRELATIVE relocations.
	(elf_aarch64_local_htab_hash): New function.
	(elf_aarch64_local_htab_eq): New function.
	(elf_aarch64_get_local_sym_hash): New function.
	(elf64_aarch64_link_hash_table_create): Initialize local STT_GNU_IFUNC
	symbol hash.
	(elf64_aarch64_hash_table_free): Free local STT_GNU_IFUNC symbol hash.
	(elf64_aarch64_final_link_relocate): Add sym argument.  Add support
	for handling STT_GNU_IFUNC symbols.
	(elf64_aarch64_gc_sweep_hook): Add support for garbage collecting
	references to STT_GNU_IFUNC symbols.
	(elf64_aarch64_adjust_dynamic_symbol): Add support for handling
	STT_GNU_IFUNC symbols.
	(elf64_aarch64_check_relocs): Add support for handling STT_GNU_IFUNC
	symbols.  Ensure we don't increase plt.refcount from -1 to 0.
	(elf64_aarch64_post_process_headers): Call _bfd_elf_set_osabi.
	(elf64_aarch64_is_function_type): Remove function.
	(elf64_aarch64_allocate_dynrelocs): Call
	_bfd_elf_allocate_ifunc_dyn_relocs for STT_GNU_IFUNC symbols.
	(elf_aarch64_allocate_local_dynrelocs): New function.
	(elf64_aarch64_size_dynamic_sections): Call
	elf_aarch64_allocate_local_dynrelocs.  Initialize next_irelative_index.
	(elf64_aarch64_create_small_pltn_entry): Add info argument.
	Add support for creating .iplt entries for STT_GNU_IFUNC symbols.
	(elf64_aarch64_finish_dynamic_symbol): Add support for handling
	STT_GNU_IFUNC symbols and .iplt.
	(elf_aarch64_finish_local_dynamic_symbol): New function.
	(elf64_aarch64_finish_dynamic_sections): Call
	elf_aarch64_finish_local_dynamic_symbol.
	(elf64_aarch64_add_symbol_hook): New function.

include/elf/ChangeLog:

2013-06-07  Will Newton  <will.newton@linaro.org>

	* aarch64.h: Add R_AARCH64_IRELATIVE reloc.

ld/ChangeLog:

2013-06-07  Will Newton  <will.newton@linaro.org>

	* emulparams/aarch64elf.sh: Add IREL_IN_PLT.

ld/testsuite/ChangeLog:

2013-06-07  Will Newton  <will.newton@linaro.org>

	* ld-ifunc/ifunc.exp: Enable ifunc tests for AArch64.
	* ld-aarch64/aarch64-elf.exp: Add 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-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-06-07 18:57:00 +00:00
..
ChangeLog aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:00 +00:00
ChangeLog-9103 Add copyright notices 2012-12-10 12:48:00 +00:00
aarch64.h aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:00 +00:00
alpha.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
arc.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
arm.h bfd: 2012-10-30 12:44:57 +00:00
avr.h PR 13503 2012-05-16 14:52:16 +00:00
bfin.h blackfin: add support for L1 code/data flags 2010-11-15 22:30:47 +00:00
common.h Add EM_INTEL205 to EM_INTEL209 2013-05-22 17:02:35 +00:00
cr16.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
cr16c.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
cris.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
crx.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
d10v.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
d30v.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
dlx.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
dwarf.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
epiphany.h bfd: 2011-10-27 14:27:16 +00:00
external.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
fr30.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
frv.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
h8.h * elf32-h8300 (h8_relax_section): Add new relaxation of mov 2013-03-21 16:08:06 +00:00
hppa.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
i370.h Implement generic SHF_EXCLUDE. 2010-05-18 03:31:06 +00:00
i386.h Define R_386_SIZE32/R_X86_64_SIZE32/R_X86_64_SIZE64 2013-01-16 20:31:57 +00:00
i860.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
i960.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
ia64.h 2011-06-09 Tristan Gingold <gingold@adacore.com> 2011-06-09 08:53:05 +00:00
internal.h include/elf/ 2011-03-14 15:54:57 +00:00
ip2k.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
iq2000.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
lm32.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
m32c.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
m32r.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
m68hc11.h * m68hc11.h: #define E_M68HC11_NO_BANK_WARNING 2012-08-02 20:08:54 +00:00
m68k.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
mcore.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
mep.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
metag.h * common.h: Fix case of "Meta". 2013-01-10 09:49:18 +00:00
microblaze.h Microblaze: Add support for handling TLS symbol suffixes and generating 2012-12-11 16:56:53 +00:00
mips.h * mips.h (ELF_ST_SET_MIPS_PIC): Clear any STO_MIPS16 setting. 2013-06-06 22:09:07 +00:00
mmix.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
mn10200.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
mn10300.h * mn10300.h (elf_mn10300_reloc_type): Add R_MN10300_TLS_GD, 2012-03-07 17:51:56 +00:00
moxie.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
msp430.h * archures.c: Add some more MSP430 machine numbers. 2013-05-02 21:06:14 +00:00
mt.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
nios2.h 2013-02-06 Sandra Loosemore <sandra@codesourcery.com> 2013-02-06 23:22:18 +00:00
openrisc.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
or32.h Implement generic SHF_EXCLUDE. 2010-05-18 03:31:06 +00:00
pj.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
ppc.h Add support for PowerPC VLE. 2012-05-14 19:45:27 +00:00
ppc64.h include/elf/ 2011-10-10 13:21:05 +00:00
reloc-macros.h Fix spelling mistakes. 2011-06-02 13:43:23 +00:00
rl78.h [bfd] 2011-12-23 01:49:37 +00:00
rx.h 2012-11-09 Nick Clifton <nickc@redhat.com> 2012-11-09 17:00:42 +00:00
s390.h 2012-07-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> 2012-07-13 15:47:25 +00:00
score.h Add support for Score7 architecture. 2009-03-02 10:33:07 +00:00
sh.h 2010-05-21 Daniel Jacobowitz <dan@codesourcery.com> 2010-05-25 14:12:41 +00:00
sparc.h Add new ELF_SPARC_HWCAP_* defines for features found on SPARC-T4. 2012-04-27 18:00:52 +00:00
spu.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
tic6x-attrs.h bfd: 2010-11-02 14:36:37 +00:00
tic6x.h 2011-05-09 Paul Brook <paul@codesourcery.com> 2011-05-09 13:17:58 +00:00
tilegx.h Add support for constructing pc-relative addresses to the plt, by 2012-08-28 02:43:22 +00:00
tilepro.h Improve TLS support on TILE-Gx/TILEPro: 2012-02-25 22:24:21 +00:00
v850.h Add support for V850E3V5 architecture 2013-01-24 11:14:01 +00:00
vax.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
vxworks.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
x86-64.h Define R_386_SIZE32/R_X86_64_SIZE32/R_X86_64_SIZE64 2013-01-16 20:31:57 +00:00
xc16x.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
xgate.h Add support for Motorola XGATE embedded CPU 2012-05-03 13:12:06 +00:00
xstormy16.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00
xtensa.h Upgrade header files to use GPLv3 2010-04-15 10:26:09 +00:00