From 47a9f4fcab30d2f9a1485a7a2634f40feb22bd60 Mon Sep 17 00:00:00 2001 From: Vladimir Radosavljevic Date: Thu, 17 Mar 2016 15:07:49 -0700 Subject: Add MIPS-64 support. 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. --- gold/ChangeLog | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) (limited to 'gold/ChangeLog') diff --git a/gold/ChangeLog b/gold/ChangeLog index 71464e1..e0728c7 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,5 +1,100 @@ 2016-03-17 Vladimir Radosavljevic + * 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. + +2016-03-17 Vladimir Radosavljevic + * mips.cc (class Mips_output_data_la25_stub): Add do_print_to_mapfile function. -- cgit v1.1