• Yufeng Zhang's avatar
    [AArch64, ILP32] 2/6 Parametrize elfnn-aarch64.c and add basic support in ld · cec5225b
    Yufeng Zhang authored
    and gas.
    
    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 paramaterization.
    	* 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.
    cec5225b
bfd-in2.h 225 KB