binutils-gdb/ld/testsuite/ld-aarch64
Will Newton 692e2b8bcd 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:03 +00:00
..
aarch64-elf.exp aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
aarch64.ld
eh-frame-bar.s
eh-frame-foo.s
eh-frame.d
emit-relocs1.s
emit-relocs-257-be.d
emit-relocs-257.d
emit-relocs-257.s
emit-relocs-260-be.d
emit-relocs-260.d
emit-relocs-260.s
emit-relocs-262.d
emit-relocs-262.s
emit-relocs-263.d
emit-relocs-263.s
emit-relocs-264.d opcodes/ 2013-01-04 14:59:33 +00:00
emit-relocs-264.s
emit-relocs-265.d
emit-relocs-265.s
emit-relocs-266.d opcodes/ 2013-01-04 14:59:33 +00:00
emit-relocs-266.s
emit-relocs-267.d
emit-relocs-267.s
emit-relocs-268.d opcodes/ 2013-01-04 14:59:33 +00:00
emit-relocs-268.s
emit-relocs-269.d opcodes/ 2013-01-04 14:59:33 +00:00
emit-relocs-269.s
emit-relocs-270-bad.d
emit-relocs-270.d opcodes/ 2013-01-04 14:59:33 +00:00
emit-relocs-270.s
emit-relocs-271.d opcodes/ 2013-01-04 14:59:33 +00:00
emit-relocs-271.s
emit-relocs-272.d opcodes/ 2013-01-04 14:59:33 +00:00
emit-relocs-272.s
emit-relocs-273.d
emit-relocs-273.s
emit-relocs-274.d
emit-relocs-274.s
emit-relocs-275.d
emit-relocs-275.s
emit-relocs-276.d
emit-relocs-276.s
emit-relocs-277.d
emit-relocs-277.s
emit-relocs-278.d
emit-relocs-278.s
emit-relocs-279-bad.d
emit-relocs-279.d
emit-relocs-279.s
emit-relocs-280.d
emit-relocs-280.s
emit-relocs-282.d
emit-relocs-282.s
emit-relocs-283.d
emit-relocs-283.s
emit-relocs-284.d
emit-relocs-284.s
emit-relocs-285.d
emit-relocs-285.s
emit-relocs-286-bad.d
emit-relocs-286.d
emit-relocs-286.s
emit-relocs-287.d
emit-relocs-287.s
emit-relocs-299.d
emit-relocs-299.s
emit-relocs-309-low-bad.d
emit-relocs-309-low.d 2012-09-19 Chris Schlumberger-Socha <chris.schlumberger-socha@arm.com> 2012-09-19 08:51:15 +00:00
emit-relocs-309-up-bad.d
emit-relocs-309-up.d 2012-09-19 Chris Schlumberger-Socha <chris.schlumberger-socha@arm.com> 2012-09-19 08:51:15 +00:00
emit-relocs-309.s
emit-relocs-311.d
emit-relocs-311.s
emit-relocs-312.d
emit-relocs-312.s
farcall-b-none-function.d
farcall-b-none-function.s
farcall-b.d
farcall-b.s
farcall-back.d
farcall-back.s
farcall-bl-none-function.d
farcall-bl-none-function.s
farcall-bl.d
farcall-bl.s
farcall-section.d
farcall-section.s
gc-got-relocs.d Handle big-endian for some aarch64 tests 2013-04-08 09:41:52 +00:00
gc-plt1.s 2013-04-10 Venkataramanan Kumar <venkataramanan.kumar@linaro.org> 2013-04-10 12:00:14 +00:00
gc-plt2.s 2013-04-10 Venkataramanan Kumar <venkataramanan.kumar@linaro.org> 2013-04-10 12:00:14 +00:00
gc-plt-hidden.s 2013-04-10 Venkataramanan Kumar <venkataramanan.kumar@linaro.org> 2013-04-10 12:00:14 +00:00
gc-plt-main.s 2013-04-10 Venkataramanan Kumar <venkataramanan.kumar@linaro.org> 2013-04-10 12:00:14 +00:00
gc-plt-relocs.d 2013-04-10 Venkataramanan Kumar <venkataramanan.kumar@linaro.org> 2013-04-10 12:00:14 +00:00
gc-relocs-257-dyn.d 2013-04-10 Venkataramanan Kumar <venkataramanan.kumar@linaro.org> 2013-04-10 12:00:14 +00:00
gc-relocs-257.d 2013-04-10 Venkataramanan Kumar <venkataramanan.kumar@linaro.org> 2013-04-10 12:00:14 +00:00
gc-relocs-257.s 2013-04-10 Venkataramanan Kumar <venkataramanan.kumar@linaro.org> 2013-04-10 12:00:14 +00:00
gc-relocs-309.s * elf64-aarch64.c (elf64_aarch64_gc_sweep_hook): Use 2013-04-03 14:21:18 +00:00
gc-relocs-311.s * elf64-aarch64.c (elf64_aarch64_gc_sweep_hook): Use 2013-04-03 14:21:18 +00:00
gc-relocs-312.s * elf64-aarch64.c (elf64_aarch64_gc_sweep_hook): Use 2013-04-03 14:21:18 +00:00
gc-relocs-tlsdesc.s * elf64-aarch64.c (elf64_aarch64_gc_sweep_hook): Use 2013-04-03 14:21:18 +00:00
gc-relocs-tlsgd.s * elf64-aarch64.c (elf64_aarch64_gc_sweep_hook): Use 2013-04-03 14:21:18 +00:00
gc-relocs-tlsie.s * elf64-aarch64.c (elf64_aarch64_gc_sweep_hook): Use 2013-04-03 14:21:18 +00:00
gc-relocs-tlsle.s * elf64-aarch64.c (elf64_aarch64_gc_sweep_hook): Use 2013-04-03 14:21:18 +00:00
gc-start.s * elf64-aarch64.c (elf64_aarch64_gc_sweep_hook): Use 2013-04-03 14:21:18 +00:00
gc-tls-relocs.d Handle big-endian for some aarch64 tests 2013-04-08 09:41:52 +00:00
ifunc-1-local.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-1-local.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-1.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-1.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-2-local.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-2-local.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-2.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-2.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-3.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-3a.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-3b.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-4.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-4.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-4a.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-5-local.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-5.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-5a-local.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-5a.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-5b-local.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-5b.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-5r-local.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-6.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-6a.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-6b.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-7.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-7a.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-7b.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-8.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-8a.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-8b.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-9.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-9.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-10.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-10.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-11.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-11.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-12.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-12.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-13.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-13a.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-13b.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-14a.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-14a.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-14b.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-14b.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-14c.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-14c.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-14d.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-14e.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-14f.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-15.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-15.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-16.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-16.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-17a.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-17a.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-17b.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-17b.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-18a.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-18a.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-18b.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-18b.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-19a.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-19a.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-19b.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-19b.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-20.d aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
ifunc-20.s aarch64: Add support for GNU indirect functions. 2013-06-07 18:57:03 +00:00
limit-b.d
limit-b.s
limit-bl.d
limit-bl.s
relocs.ld
tls-desc-ie.d
tls-desc-ie.s
tls-relax-all.d
tls-relax-all.s
tls-relax-gd-ie.d
tls-relax-gd-ie.s
tls-relax-gd-le.d
tls-relax-gd-le.s
tls-relax-gdesc-ie-2.d
tls-relax-gdesc-ie-2.s
tls-relax-gdesc-ie.d
tls-relax-gdesc-ie.s
tls-relax-gdesc-le-2.d
tls-relax-gdesc-le-2.s
tls-relax-gdesc-le.d
tls-relax-gdesc-le.s
tls-relax-ie-le-2.d
tls-relax-ie-le-2.s
tls-relax-ie-le-3.d
tls-relax-ie-le-3.s
tls-relax-ie-le.d
tls-relax-ie-le.s
tlsle-symbol-offset.d Fixed AArch64 TLS relocation resolution. 2012-10-16 16:36:50 +00:00
tlsle-symbol-offset.s Fixed AArch64 TLS relocation resolution. 2012-10-16 16:36:50 +00:00
weak-undefined.d
weak-undefined.s