[PATCH v2] aarch64: Add support for GNU indirect functions.
Jiong Wang
jiong.wang@foss.arm.com
Mon May 9 10:27:00 GMT 2016
On 27/09/13 10:39, Will Newton wrote:
> 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.
>
> This version of the patch uses two passes over the symbols to ensure that
> the dynamic relocs are output in the correct order.
>
>
> (elfNN_aarch64_allocate_ifunc_dynrelocs): New function.
> (elfNN_aarch64_allocate_local_ifunc_dynrelocs): New function.
>
>
> /* This is the most important function of all . Innocuosly named
> though ! */
> @@ -5987,6 +6421,20 @@ elfNN_aarch64_size_dynamic_sections (bfd
*output_bfd ATTRIBUTE_UNUSED,
> elf_link_hash_traverse (&htab->root,
elfNN_aarch64_allocate_dynrelocs,
> info);
>
> + /* Allocate global ifunc sym .plt and .got entries, and space for
global
> + ifunc sym dynamic relocs. */
> + elf_link_hash_traverse (&htab->root,
elfNN_aarch64_allocate_ifunc_dynrelocs,
> + info);
> +
> + /* Allocate .plt and .got entries, and space for local symbols. */
> + htab_traverse (htab->loc_hash_table,
> + elfNN_aarch64_allocate_local_dynrelocs,
> + info);
> +
> + /* Allocate .plt and .got entries, and space for local ifunc
symbols. */
> + htab_traverse (htab->loc_hash_table,
> + elfNN_aarch64_allocate_local_ifunc_dynrelocs,
> + info);
Hi Will,
I came across above code where extra traverses are introduced for
IFUNC symbol, any particular
reason we need them? purely to make sure IFUNC runtime relocations
happens last? If it is, I
noticed you are using next_jump_slot_index/next_irelative_index
mechanism to solve the relocation
order issue in your initial aarch64 IFUNC support, why it's dropped
in your final version?
thanks.
Regards,
Jiong
More information about the Binutils
mailing list