This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH v5] gold: Add Mips64 support.
- 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: Thu, 17 Mar 2016 15:10:15 -0700
- Subject: Re: [PATCH v5] gold: Add Mips64 support.
- Authentication-results: sourceware.org; auth=none
- References: <3060420525346945A0ADBD567348A91723740A33 at BADAG02 dot ba dot imgtec dot org>
> * gold/mips.cc (enum Special_relocation_symbol): New enum type.
> (is_readonly_section): New function.
> (eh_reloc): Likewise.
> (Mips_got_entry::is_section_symbol_): New member.
> (Mips_got_entry::is_section_symbol): New method.
> (Mips_got_info::record_local_got_symbol): Add is_section_symbol
> argument.
> (Mips_relobj::mips_elf_options_section_name): New method.
> (Mips_output_data_got::record_local_got_symbol): Add
> is_section_symbol argument, and pass it to
> Mips_got_info::record_local_got_symbol.
> (Mips_output_data_got::got_offset): Add addend argument, and pass
> it to Relobj::local_got_offset.
> (struct Mips_output_reloc_writer): New type.
> (class Mips_output_data_reloc): New class.
> (Mips_output_data_plt::Reloc_section): Change type to
> Mips_output_data_reloc.
> (Target_mips::Reloc_section): Likewise.
> (Mips_reloc_types::get_r_addend): Remove unsigned from return type.
> (Mips_classify_reloc::get_r_type2): New method.
> (Mips_classify_reloc::get_r_type3): Likewise.
> (Mips_classify_reloc::get_r_ssym): Likewise.
> (Target_mips::Reloca_section): Remove.
> (Relocate::should_apply_static_reloc): Rename from
> should_apply_r_mips_32_reloc.
> (Target_mips::copy_reloc): Replace Reltype parameter with r_type
> and r_offset.
> (Mips_relocate_functions::Valtype): New type.
> (Mips_relocate_functions::Valtype64): New type.
> (Mips_relocate_functions::check_overflow): New method.
> (Mips_relocate_functions::mips_reloc_unshuffle): Move to public
> interface.
> (Mips_relocate_functions::mips_reloc_shuffle): Likewise.
> (Mips_relocate_functions::rel16): Add support for resolving
> relocations for Mips64.
> (Mips_relocate_functions::rel32): Likewise.
> (Mips_relocate_functions::reljalr): Likewise.
> (Mips_relocate_functions::relpc32): Likewise.
> (Mips_relocate_functions::rel26): Likewise.
> (Mips_relocate_functions::relpc16): Likewise.
> (Mips_relocate_functions::relmicromips_pc7_s1): Likewise.
> (Mips_relocate_functions::relmicromips_pc10_s1): Likewise.
> (Mips_relocate_functions::relmicromips_pc16_s1): Likewise.
> (Mips_relocate_functions::do_relhi16): Likewise.
> (Mips_relocate_functions::do_relgot16_local): Likewise.
> (Mips_relocate_functions::rello16): Likewise.
> (Mips_relocate_functions::relgot): Likewise.
> (Mips_relocate_functions::relgotpage): Likewise.
> (Mips_relocate_functions::relgotofst): Likewise.
> (Mips_relocate_functions::relgot_hi16): Likewise.
> (Mips_relocate_functions::relgot_lo16): Likewise.
> (Mips_relocate_functions::relgprel): Likewise.
> (Mips_relocate_functions::relgprel32): Likewise.
> (Mips_relocate_functions::tlsrelhi16): Likewise.
> (Mips_relocate_functions::tlsrello16): Likewise.
> (Mips_relocate_functions::tlsrel32): Likewise.
> (Mips_relocate_functions::relsub): Likewise.
> (Mips_relocate_functions::releh): New method.
> (Mips_relocate_functions::rel64): Likewise.
> (Mips_got_info::record_local_got_symbol): Add is_section_symbol and
> pass it to Mips_got_entry.
> (Mips_got_info::add_local_entries): Pass addend argument
> to code functions, and for STT_SECTION symbols call
> add_symbolless_local_addend.
> (Mips_got_info::add_tls_entries): Pass addend argument to code
> functions.
> (Mips_relobj::do_read_symbols): Read gp value that was used to
> create object.
> (Mips_output_data_plt::plt_entry): Remove opcode from l[wd]
> instruction. Opcode for instruction will be selected later.
> (Target_mips::gc_process_relocs): Add case for SHT_RELA.
> (Target_mips::scan_relocatable_relocs): Likewise.
> (Target_mips::emit_relocs_scan): Likewise.
> (Target_mips::relocate_relocs): Likewise.
> (Target_mips::do_finalize_sections): Skip objects for merging
> processor specific flags in which all input sections will be
> discarded.
> (mips_get_size_for_reloc): Add case for R_MIPS_EH.
> (Target_mips::Scan::get_reference_flags): Likewise.
> (Target_mips::relocate_special_relocatable): Call rel26 method with
> calculate_only and calculated_value arguments.
> (Target_mips::Scan::local): Add case for R_MIPS_EH. Don't create a
> dynamic relocation against a readonly sections, and pass
> is_section_symbol to Mips_got_info::record_local_got_symbol.
> (Target_mips::Scan::global): Add case for R_MIPS_EH. Don't create a
> dynamic relocation against a readonly sections, and pass r_type
> and r_offset to Target_mips::copy_reloc.
> (Target_mips::Relocate::relocate): Add support for resolving
> relocations for Mips64.
> (Target_mips::mips_info): Add case for Mips64 default dynamic
> linker name.
> (Target_selector_mips): Correct emulation names.
Thanks! Committed.
-cary