aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-arm.h
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2003-02-13 19:35:22 +0000
committerNick Clifton <nickc@redhat.com>2003-02-13 19:35:22 +0000
commit427bfd905da0f6acce66519e17ba5ccbbef19677 (patch)
tree8a5564eed18692cc3483ffc495922487de617127 /bfd/elf32-arm.h
parentfcd7c7c9fd660414a8f86e4dd8733e6c1058c9f0 (diff)
downloadgdb-427bfd905da0f6acce66519e17ba5ccbbef19677.zip
gdb-427bfd905da0f6acce66519e17ba5ccbbef19677.tar.gz
gdb-427bfd905da0f6acce66519e17ba5ccbbef19677.tar.bz2
(elf32_thumb_to_arm_stub): Include section VMAs in computation of offset to
insert into BL instruction.
Diffstat (limited to 'bfd/elf32-arm.h')
-rw-r--r--bfd/elf32-arm.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h
index effe7e6..509b481 100644
--- a/bfd/elf32-arm.h
+++ b/bfd/elf32-arm.h
@@ -929,13 +929,16 @@ elf32_thumb_to_arm_stub (info, name, input_bfd, output_bfd, input_section,
BFD_ASSERT (my_offset <= globals->thumb_glue_size);
- /* Now go back and fix up the original BL insn to point
- to here. */
- ret_offset = (s->output_offset
- + my_offset
- - (input_section->output_offset
- + offset + addend)
- - 8);
+ /* Now go back and fix up the original BL insn to point to here. */
+ ret_offset =
+ /* Address of where the stub is located. */
+ (s->output_section->vma + s->output_offset + my_offset)
+ /* Address of where the BL is located. */
+ - (input_section->output_section->vma + input_section->output_offset + offset)
+ /* Addend in the relocation. */
+ - addend
+ /* Biassing for PC-relative addressing. */
+ - 8;
tmp = bfd_get_32 (input_bfd, hit_data
- input_section->vma);