1419bbe571
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. |
||
---|---|---|
.. | ||
aarch64-elf.exp | ||
aarch64.ld | ||
eh-frame-bar.s | ||
eh-frame-foo.s | ||
eh-frame.d | ||
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 | ||
emit-relocs-264.s | ||
emit-relocs-265.d | ||
emit-relocs-265.s | ||
emit-relocs-266.d | ||
emit-relocs-266.s | ||
emit-relocs-267.d | ||
emit-relocs-267.s | ||
emit-relocs-268.d | ||
emit-relocs-268.s | ||
emit-relocs-269.d | ||
emit-relocs-269.s | ||
emit-relocs-270-bad.d | ||
emit-relocs-270.d | ||
emit-relocs-270.s | ||
emit-relocs-271.d | ||
emit-relocs-271.s | ||
emit-relocs-272.d | ||
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 | ||
emit-relocs-309-up-bad.d | ||
emit-relocs-309-up.d | ||
emit-relocs-309.s | ||
emit-relocs-311.d | ||
emit-relocs-311.s | ||
emit-relocs-312.d | ||
emit-relocs-312.s | ||
emit-relocs1.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 | ||
gc-plt-hidden.s | ||
gc-plt-main.s | ||
gc-plt-relocs.d | ||
gc-plt1.s | ||
gc-plt2.s | ||
gc-relocs-257-dyn.d | ||
gc-relocs-257.d | ||
gc-relocs-257.s | ||
gc-relocs-309.s | ||
gc-relocs-311.s | ||
gc-relocs-312.s | ||
gc-relocs-tlsdesc.s | ||
gc-relocs-tlsgd.s | ||
gc-relocs-tlsie.s | ||
gc-relocs-tlsle.s | ||
gc-start.s | ||
gc-tls-relocs.d | ||
ifunc-1-local.d | ||
ifunc-1-local.s | ||
ifunc-1.d | ||
ifunc-1.s | ||
ifunc-2-local.d | ||
ifunc-2-local.s | ||
ifunc-2.d | ||
ifunc-2.s | ||
ifunc-3.s | ||
ifunc-3a.d | ||
ifunc-3b.d | ||
ifunc-4.d | ||
ifunc-4.s | ||
ifunc-4a.d | ||
ifunc-5-local.s | ||
ifunc-5.s | ||
ifunc-5a-local.d | ||
ifunc-5a.d | ||
ifunc-5b-local.d | ||
ifunc-5b.d | ||
ifunc-5r-local.d | ||
ifunc-6.s | ||
ifunc-6a.d | ||
ifunc-6b.d | ||
ifunc-7.s | ||
ifunc-7a.d | ||
ifunc-7b.d | ||
ifunc-7c.d | ||
ifunc-8.d | ||
ifunc-8a.s | ||
ifunc-8b.s | ||
ifunc-9.d | ||
ifunc-9.s | ||
ifunc-10.d | ||
ifunc-10.s | ||
ifunc-11.d | ||
ifunc-11.s | ||
ifunc-12.d | ||
ifunc-12.s | ||
ifunc-13.d | ||
ifunc-13a.s | ||
ifunc-13b.s | ||
ifunc-14a.d | ||
ifunc-14a.s | ||
ifunc-14b.d | ||
ifunc-14b.s | ||
ifunc-14c.d | ||
ifunc-14c.s | ||
ifunc-14d.d | ||
ifunc-14e.d | ||
ifunc-14f.d | ||
ifunc-15.d | ||
ifunc-15.s | ||
ifunc-16.d | ||
ifunc-16.s | ||
ifunc-17a.d | ||
ifunc-17a.s | ||
ifunc-17b.d | ||
ifunc-17b.s | ||
ifunc-18a.d | ||
ifunc-18a.s | ||
ifunc-18b.d | ||
ifunc-18b.s | ||
ifunc-19a.d | ||
ifunc-19a.s | ||
ifunc-19b.d | ||
ifunc-19b.s | ||
ifunc-20.d | ||
ifunc-20.s | ||
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 | ||
tlsle-symbol-offset.s | ||
weak-undefined.d | ||
weak-undefined.s |