diff options
author | Nick Clifton <nickc@redhat.com> | 2003-02-13 19:35:22 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2003-02-13 19:35:22 +0000 |
commit | 427bfd905da0f6acce66519e17ba5ccbbef19677 (patch) | |
tree | 8a5564eed18692cc3483ffc495922487de617127 /bfd/elf32-arm.h | |
parent | fcd7c7c9fd660414a8f86e4dd8733e6c1058c9f0 (diff) | |
download | gdb-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.h | 17 |
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); |