This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC, PATCH] aarch64: Add support for GNU indirect functions.


Will,

Looks like this patch causes wide spread failures in the g++ and
libstdc++ regression testsuites for aarch64-linux-gnu.  These failures
seem to be unrelated to the subsequent fix to ELF64_R_SYM.

/Marcus


On 7 June 2013 22:55, Will Newton <will.newton@linaro.org> wrote:
> On 7 June 2013 15:24, Nick Clifton <nick@nickclifton.clara.co.uk> wrote:
>> Hi Will,
>>
>>
>>>> bfd/ChangeLog:
>>>>
>>>> 2013-05-17  Will Newton  <will.newton@linaro.org>
>>>>
>>>>          * 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-05-17  Will Newton  <will.newton@linaro.org>
>>>>
>>>>          * aarch64.h: Add R_AARCH64_IRELATIVE reloc.
>>>>
>>>> ld/testsuite/ChangeLog:
>>>>
>>>> 2013-05-17  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.
>>
>>
>> Approved - please apply.
>
> Thanks, applied.
>
> --
> Will Newton
> Toolchain Working Group, Linaro


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]