diff options
author | Paul Brook <paul@codesourcery.com> | 2004-03-31 10:20:12 +0000 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2004-03-31 10:20:12 +0000 |
commit | 1f910fcd4bf377750a163a246bb6fe27fed29bb2 (patch) | |
tree | 1c582e0d5999eb01308f5029dcb0730f0cf738a7 /bfd/elf32-arm.h | |
parent | 0ba75efce7021f6ab455b566a1a9e21d07bb19a6 (diff) | |
download | gdb-1f910fcd4bf377750a163a246bb6fe27fed29bb2.tar.gz |
* elf32-arm.h (elf32_arm_final_link_relocate): Add R_ARM_ALU*.
* elfarm-nabi.c (elf32_arm_howto_table): Ditto.
Diffstat (limited to 'bfd/elf32-arm.h')
-rw-r--r-- | bfd/elf32-arm.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h index 97753a831ff..bc6904a26ed 100644 --- a/bfd/elf32-arm.h +++ b/bfd/elf32-arm.h @@ -1732,6 +1732,31 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd, return bfd_reloc_ok; } + case R_ARM_ALU_PCREL7_0: + case R_ARM_ALU_PCREL15_8: + case R_ARM_ALU_PCREL23_15: + { + bfd_vma insn; + bfd_vma relocation; + + insn = bfd_get_32 (input_bfd, hit_data); +#if USE_REL + /* Extract the addend. */ + addend = (insn & 0xff) << ((insn & 0xf00) >> 7); + signed_addend = addend; +#endif + relocation = value + signed_addend; + + relocation -= (input_section->output_section->vma + + input_section->output_offset + + rel->r_offset); + insn = (insn & ~0xfff) + | ((howto->bitpos << 7) & 0xf00) + | ((relocation >> howto->bitpos) & 0xff); + bfd_put_32 (input_bfd, value, hit_data); + } + return bfd_reloc_ok; + case R_ARM_GNU_VTINHERIT: case R_ARM_GNU_VTENTRY: return bfd_reloc_ok; |