diff options
author | Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com> | 2017-03-15 15:52:12 -0700 |
---|---|---|
committer | Cary Coutant <ccoutant@gmail.com> | 2017-03-15 16:51:35 -0700 |
commit | 1e1247c89ca2ce10dbf2c3ed61fba942f9c536ca (patch) | |
tree | ba90950a6e82582dba458f99dc03369fdee56463 | |
parent | 1728969e93010862fe0ef7985cabe03a4494a63e (diff) | |
download | gdb-1e1247c89ca2ce10dbf2c3ed61fba942f9c536ca.zip gdb-1e1247c89ca2ce10dbf2c3ed61fba942f9c536ca.tar.gz gdb-1e1247c89ca2ce10dbf2c3ed61fba942f9c536ca.tar.bz2 |
Remove redundant checks for relocatable link (MIPS).
gold/
* mips.cc (Target_mips::Relocate::relocate): Remove redundant
checks for relocatable link.
(Mips_relocate_functions::reljalr): Likewise.
-rw-r--r-- | gold/ChangeLog | 36 | ||||
-rw-r--r-- | gold/mips.cc | 13 |
2 files changed, 25 insertions, 24 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 140114e..2426b0a 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,26 +1,32 @@ 2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com> - * mips.cc (class Mips_output_section_options): New class. - (Target_mips::do_make_output_section): New method. + * mips.cc (Target_mips::Relocate::relocate): Remove redundant + checks for relocatable link. + (Mips_relocate_functions::reljalr): Likewise. 2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com> - * mips.cc (Mips_relocate_functions::rel26): Don't print relocation - overflow error message. - (Target_mips::relocate_special_relocatable): Improve relocation - overflow error message. - (Target_mips::Relocate::relocate): Likewise. + * mips.cc (class Mips_output_section_options): New class. + (Target_mips::do_make_output_section): New method. 2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com> - * mips.cc (symbol_refs_local): Return false if a symbol - is from a dynamic object. - (Target_mips::got_section): Make _GLOBAL_OFFSET_TABLE_ STV_HIDDEN. - (Target_mips::set_gp): Refactor. Make _gp STT_NOTYPE and - STB_LOCAL. - (Target_mips::do_finalize_sections): Set _gp after all the checks - for creating .got are done. - (Target_mips::Scan::global): Remove unused code. + * mips.cc (Mips_relocate_functions::rel26): Don't print relocation + overflow error message. + (Target_mips::relocate_special_relocatable): Improve relocation + overflow error message. + (Target_mips::Relocate::relocate): Likewise. + +2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com> + + * mips.cc (symbol_refs_local): Return false if a symbol + is from a dynamic object. + (Target_mips::got_section): Make _GLOBAL_OFFSET_TABLE_ STV_HIDDEN. + (Target_mips::set_gp): Refactor. Make _gp STT_NOTYPE and + STB_LOCAL. + (Target_mips::do_finalize_sections): Set _gp after all the checks + for creating .got are done. + (Target_mips::Scan::global): Remove unused code. 2017-02-22 Alan Modra <amodra@gmail.com> diff --git a/gold/mips.cc b/gold/mips.cc index 4ea2e1d..de43e1d 100644 --- a/gold/mips.cc +++ b/gold/mips.cc @@ -4539,8 +4539,7 @@ class Mips_relocate_functions : public Relocate_functions<size, big_endian> Valtype32 val = elfcpp::Swap<32, big_endian>::readval(wv); // Try converting J(AL)R to B(AL), if the target is in range. - if (!parameters->options().relocatable() - && r_type == elfcpp::R_MIPS_JALR + if (r_type == elfcpp::R_MIPS_JALR && !cross_mode_jump && ((jalr_to_bal && val == 0x0320f809) // jalr t9 || (jr_to_b && val == 0x03200008))) // jr t9 @@ -11570,7 +11569,6 @@ Target_mips<size, big_endian>::Relocate::relocate( // // (c) the section allows direct references to MIPS16 functions. if (r_type != elfcpp::R_MIPS16_26 - && !parameters->options().relocatable() && ((mips_sym != NULL && mips_sym->has_mips16_fn_stub() && (r_type != elfcpp::R_MIPS16_CALL16 || mips_sym->need_fn_stub())) @@ -11606,7 +11604,7 @@ Target_mips<size, big_endian>::Relocate::relocate( // to a standard MIPS function, we need to redirect the call to the stub. // Note that we specifically exclude R_MIPS16_CALL16 from this behavior; // indirect calls should use an indirect stub instead. - else if (r_type == elfcpp::R_MIPS16_26 && !parameters->options().relocatable() + else if (r_type == elfcpp::R_MIPS16_26 && ((mips_sym != NULL && (mips_sym->has_mips16_call_stub() || mips_sym->has_mips16_call_fp_stub())) @@ -11668,7 +11666,6 @@ Target_mips<size, big_endian>::Relocate::relocate( // entry is used if a standard PLT entry has also been made. else if ((r_type == elfcpp::R_MIPS16_26 || r_type == elfcpp::R_MICROMIPS_26_S1) - && !parameters->options().relocatable() && mips_sym != NULL && mips_sym->has_plt_offset() && mips_sym->has_comp_plt_offset() @@ -11697,8 +11694,7 @@ Target_mips<size, big_endian>::Relocate::relocate( // symbol would be 16-bit code, and that direct jumps were therefore // acceptable. cross_mode_jump = - (!parameters->options().relocatable() - && !(gsym != NULL && gsym->is_weak_undefined()) + (!(gsym != NULL && gsym->is_weak_undefined()) && ((r_type == elfcpp::R_MIPS16_26 && !target_is_16_bit_code) || (r_type == elfcpp::R_MICROMIPS_26_S1 && !target_is_micromips_code) || ((r_type == elfcpp::R_MIPS_26 || r_type == elfcpp::R_MIPS_JALR) @@ -12252,8 +12248,7 @@ Target_mips<size, big_endian>::Relocate::relocate( r_addend = calculated_value; } - bool jal_shuffle = jal_reloc(r_type) ? !parameters->options().relocatable() - : false; + bool jal_shuffle = jal_reloc(r_type); Reloc_funcs::mips_reloc_shuffle(view, r_type, jal_shuffle); // Report any errors. |