|
|
|
@ -1434,6 +1434,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd, |
|
|
|
upper_insn = (upper_insn & ~(bfd_vma) 0x7ff) | ((relocation >> 12) & 0x7ff); |
|
|
|
lower_insn = (lower_insn & ~(bfd_vma) 0x7ff) | ((relocation >> 1) & 0x7ff); |
|
|
|
|
|
|
|
#ifndef OLD_ARM_ABI |
|
|
|
if (r_type == R_ARM_THM_XPC22 |
|
|
|
&& ((lower_insn & 0x1800) == 0x0800)) |
|
|
|
/* Remove bit zero of the adjusted offset. Bit zero can only be
|
|
|
|
@ -1444,7 +1445,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd, |
|
|
|
corresponding bit one in the target address will be set from bit |
|
|
|
one of the source address. */ |
|
|
|
lower_insn &= ~1; |
|
|
|
|
|
|
|
#endif |
|
|
|
/* Put the relocated value back in the object file: */ |
|
|
|
bfd_put_16 (input_bfd, upper_insn, hit_data); |
|
|
|
bfd_put_16 (input_bfd, lower_insn, hit_data + 2); |
|
|
|
|