Fix resolution of R_ARM_THM_ALU_PREL_11_0 relocation against Thumb symbols.
PR ld/21458 * elf32-arm.c (elf32_arm_final_link_relocate): Set the bottom bit of the value when resolving a R_ARM_THM_ALU_PREL_11_0 relocation and the destination is a Thumb symbol.
This commit is contained in:
parent
d2732b697f
commit
e645cf40b1
|
@ -1,3 +1,10 @@
|
|||
2017-05-09 Andrew Goedhart <Andrewgoedhart@simplepowersolutions.co.za>
|
||||
|
||||
PR ld/21458
|
||||
* elf32-arm.c (elf32_arm_final_link_relocate): Set the bottom bit
|
||||
of the value when resolving a R_ARM_THM_ALU_PREL_11_0 relocation
|
||||
and the destination is a Thumb symbol.
|
||||
|
||||
2017-05-08 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf32-i386.c (elf_i386_get_synthetic_symtab): Add missing
|
||||
|
|
|
@ -10511,6 +10511,10 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
|
|||
if (value >= 0x1000)
|
||||
return bfd_reloc_overflow;
|
||||
|
||||
/* Destination is Thumb. Force bit 0 to 1 to reflect this. */
|
||||
if (branch_type == ST_BRANCH_TO_THUMB)
|
||||
value |= 1;
|
||||
|
||||
insn = (insn & 0xfb0f8f00) | (value & 0xff)
|
||||
| ((value & 0x700) << 4)
|
||||
| ((value & 0x800) << 15);
|
||||
|
|
Loading…
Reference in New Issue