diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3722f31b604..ac8230d05f6 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2016-08-10 Maciej W. Rozycki + + * elfxx-mips.c (mips_elf_calculate_relocation): Set the ISA bit + in microMIPS LA25 stub references. + 2016-08-09 Jiaming Wei * elf64-alpha.c (elf64_alpha_copy_indirect_symbol): Fix thinko diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index cdc5d962897..cfb9a52af02 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -5577,9 +5577,13 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, else if (h != NULL && h->la25_stub && mips_elf_relocation_needs_la25_stub (input_bfd, r_type, target_is_16_bit_code_p)) - symbol = (h->la25_stub->stub_section->output_section->vma - + h->la25_stub->stub_section->output_offset - + h->la25_stub->offset); + { + symbol = (h->la25_stub->stub_section->output_section->vma + + h->la25_stub->stub_section->output_offset + + h->la25_stub->offset); + if (ELF_ST_IS_MICROMIPS (h->root.other)) + symbol |= 1; + } /* For direct MIPS16 and microMIPS calls make sure the compressed PLT entry is used if a standard PLT entry has also been made. In this case the symbol will have been set by mips_elf_set_plt_sym_value