This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [Patch, AArch64, ILP32] 2/5 Parametrize elfnn-aarch64.c and add basic support in ld and gas
- From: Andrew Pinski <pinskia at gmail dot com>
- To: Yufeng Zhang <Yufeng dot Zhang at arm dot com>
- Cc: binutils <binutils at sourceware dot org>, Marcus Shawcroft <Marcus dot Shawcroft at arm dot com>
- Date: Fri, 21 Jun 2013 19:33:41 -0700
- Subject: Re: [Patch, AArch64, ILP32] 2/5 Parametrize elfnn-aarch64.c and add basic support in ld and gas
- References: <51C4919B dot 1010407 at arm dot com> <51C49532 dot 4010309 at arm dot com>
On Fri, Jun 21, 2013 at 11:02 AM, Yufeng Zhang <Yufeng.Zhang@arm.com> wrote:
> Hi,
>
> This patch makes basic parametrization in bfd/elfnn-aarch64.c and adds basic
> support for ILP32 in ld and gas.
>
> OK for the trunk?
>
> Thanks,
> Yufeng
>
>
> bfd/
>
> * Makefile.am (BFD64_BACKENDS): Add elf32-aarch64.lo.
> (BUILD_CFILES): Add elf32-aarch64.c.
> (elf32-aarch64.c): New rule for generating from elfnn-aarch64.c.
> * Makefile.in: Re-generated.
> * archures.c (bfd_mach_aarch64_ilp32): New define.
> * bfd-in.h (bfd_elf32_aarch64_init_maps): New declaration.
> (bfd_elf32_aarch64_set_options): Ditto.
> (elf32_aarch64_setup_section_lists): Ditto.
> (elf32_aarch64_next_input_section): Ditto.
> (elf32_aarch64_size_stubs): Ditto.
> (elf32_aarch64_build_stubs): Ditto.
> * bfd-in2.h: Re-generated.
> * config.bfd (aarch64-*-elf): Add bfd_elf32_littleaarch64_vec
> and bfd_elf32_bigaarch64_vec.
> (aarch64-*-linux*): Likewise.
> (aarch64_be-*-elf): Likewise.
> (aarch64_be-*-linux*): Likewise.
> * configure.in (bfd_elf32_bigaarch64_vec)
> (bfd_elf32_littleaarch64_vec): New.
> * configure: Re-generated.
> * cpu-aarch64.c (compatible): Don't allow mixing ilp32 objects with
> lp64 ones.
> (bfd_aarch64_arch_ilp32): New.
> (bfd_aarch64_arch): Link to bfd_aarch64_arch_ilp32.
> * elfnn-aarch64.c (ARCH_SIZE): New define.
> (AARCH64_R, AARCH64_R_STR, LOG_FILE_ALIGN): New defines.
> (GOT_ENTRY_SIZE): Re-define as (ARCH_SIZE / 8).
> (elf64_aarch64_*): Rename to elfNN_aarch64_*.
> (ELF64_R_*): Rename to ELFNN_R_*.
> Plus other parametrization.
> * targets.c (bfd_elf32_bigaarch64_vec, bfd_elf32_littleaarch64_vec):
> New declarations.
> (_bfd_target_vector): Add bfd_elf32_bigaarch64_vec and
> bfd_elf32_littleaarch64_vec.
>
> gas/
> * config/tc-aarch64.c (ilp32_p): New static variable.
> (elf64_aarch64_target_format): Return the target according to the
> value of 'ilp32_p'.
> (md_begin): Determine 'mach' according to the value of 'ilp32_p'.
> (aarch64_opts): Add support for options '-milp32' and '-mlp64'.
> (aarch64_dwarf2_addr_size): New function.
> * config/tc-aarch64.h (aarch64_dwarf2_addr_size): New declaration.
> (DWARF2_ADDR_SIZE): New define.
>
> ld/
>
> * Makefile.am (ALL_64_EMULATION_SOURCES): Add eaarch64elf32.c.
> (eaarch64elf32.c): New dependency and rule.
> * Makefile.in: Re-generated.
> * configure.tgt (aarch64-*-elf): Add aarch64elf32.
> (aarch64_be-*-elf, aarch64_be-*-linux*, aarch64-*-linux*): Likewise.
> * emulparams/aarch64elf32.sh: New file.
Is there a reason why you don't have a big-endian ilp32 linker target here?
Thanks,
Andrew Pinski