This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH v2][gold] Mips: Add support for .MIPS.abiflags and .gnu.attributes sections.
- From: Cary Coutant <ccoutant at gmail dot com>
- To: Vladimir Radosavljevic <Vladimir dot Radosavljevic at imgtec dot com>
- Cc: "binutils at sourceware dot org" <binutils at sourceware dot org>, Petar Jovanovic <Petar dot Jovanovic at imgtec dot com>
- Date: Sat, 11 Jun 2016 10:11:04 -0700
- Subject: Re: [PATCH v2][gold] Mips: Add support for .MIPS.abiflags and .gnu.attributes sections.
- Authentication-results: sourceware.org; auth=none
- References: <3060420525346945A0ADBD567348A917237417CB at BADAG02 dot ba dot imgtec dot org>
> elfcpp/
> * elfcpp.h (SHT_MIPS_ABIFLAGS): New enum constant.
> * mips.h (EF_MIPS_FP64, EF_MIPS_NAN2008): New enum constants for
> processor-specific flags.
> (E_MIPS_MACH_5900): New enum constant for machine variant.
> (AFL_REG_NONE, AFL_REG_32, AFL_REG_64, AFL_REG_128): New enum
> constants.
> (AFL_ASE_DSP, AFL_ASE_DSPR2, AFL_ASE_EVA, AFL_ASE_MCU,
> AFL_ASE_MDMX, AFL_ASE_MIPS3D, AFL_ASE_MT, AFL_ASE_SMARTMIPS,
> AFL_ASE_VIRT, AFL_ASE_MSA, AFL_ASE_MIPS16, AFL_ASE_MICROMIPS,
> AFL_ASE_XPA): Likewise.
> (AFL_EXT_XLR, AFL_EXT_OCTEON2, AFL_EXT_OCTEONP,
> AFL_EXT_LOONGSON_3A, AFL_EXT_OCTEON, AFL_EXT_5900, AFL_EXT_4650,
> AFL_EXT_4010, AFL_EXT_4100, AFL_EXT_3900, AFL_EXT_10000,
> AFL_EXT_SB1, AFL_EXT_4111, AFL_EXT_4120, AFL_EXT_5400,
> AFL_EXT_5500, AFL_EXT_LOONGSON_2E, AFL_EXT_LOONGSON_2F,
> AFL_EXT_OCTEON3): Likewise.
> (Tag_GNU_MIPS_ABI_FP, Tag_GNU_MIPS_ABI_MSA): Likewise.
> (Val_GNU_MIPS_ABI_FP_ANY, Val_GNU_MIPS_ABI_FP_DOUBLE,
> Val_GNU_MIPS_ABI_FP_SINGLE, Val_GNU_MIPS_ABI_FP_SOFT,
> Val_GNU_MIPS_ABI_FP_OLD_64,Val_GNU_MIPS_ABI_FP_XX,
> Val_GNU_MIPS_ABI_FP_64, Val_GNU_MIPS_ABI_FP_64A,
> Val_GNU_MIPS_ABI_FP_NAN2008, Val_GNU_MIPS_ABI_MSA_ANY,
> Val_GNU_MIPS_ABI_MSA_128): Likewise.
> (AFL_FLAGS1_ODDSPREG): New enum constant.
> gold/
> * mips.cc (struct Mips_abiflags): New struct.
> (Mips_relobj::Mips_relobj): Initialize attributes_section_data_
> and abiflags_.
> (Mips_relobj::~Mips_relobj): Delete object pointed by
> attributes_section_data_.
> (Mips_relobj::abiflags): New method.
> (Mips_relobj::attributes_section_data): Likewise.
> (Mips_relobj::attributes_section_data_): New data member.
> (Mips_relobj::abiflags_): Likewise.
> (class Mips_output_section_abiflags): New class.
> (Target_mips::Target_mips): Initialize attributes_section_data_,
> abiflags_ and has_abiflags_section_.
> (Target_mips::do_should_include_section): Don't emit input
> .MIPS.abiflags sections to output .MIPS.abiflags.
> (Target_mips::Mips_mach): Add new enum constants.
> (Target_mips::mips_isa_ext_mach): New method.
> (Target_mips::mips_isa_ext): Likewise.
> (Target_mips::update_abiflags_isa): Likewise.
> (Target_mips::infer_abiflags): Likewise.
> (Target_mips::create_abiflags): Likewise.
> (Target_mips::fp_abi_string): Likewise.
> (Target_mips::select_fp_abi): Likewise.
> (Target_mips::merge_obj_attributes): Likewise.
> (Target_mips::merge_obj_abiflags): Likewise.
> (Target_mips::level_rev): Likewise.
> (Target_mips::merge_obj_e_flags): Rename from
> merge_processor_specific_flags. Remove dyn_obj argument,
> call update_abiflags_isa when needed, compare NaN encodings and
> compare FP64 state.
> (Target_mips::add_machine_extensions): Add two machine extensions
> and fix one.
> (Target_mips::attributes_section_data_): New data member.
> (Target_mips::abiflags_): Likewise.
> (Target_mips::has_abiflags_section_): Likewise.
> (Mips_relobj::do_read_symbols): Read .gnu.attributes and
> .MIPS.abiflags sections if they exists.
> (Target_mips::elf_mips_mach): Add E_MIPS_MACH_5900 and
> E_MIPS_MACH_OCTEON3 support.
> (Target_mips::do_adjust_elf_header): Setup EI_ABIVERSION flag.
> (Target_mips::do_finalize_sections): Merge .gnu.attributes and
> .MIPS.abiflags sections from input. Create these sections if
> needed.
> (Target_mips::elf_mips_mach_name): Add E_MIPS_MACH_5900 and
> E_MIPS_MACH_OCTEON3 support, and change strings for
> E_MIPS_MACH_LS2E, E_MIPS_MACH_LS2F and E_MIPS_MACH_LS3A just
> to match bfd.
I've committed this patch on your behalf.
Thanks!
-cary