(elf32_thumb_to_arm_stub): Include section VMAs in computation of offset to
authorNick Clifton <nickc@redhat.com>
Thu, 13 Feb 2003 19:35:22 +0000 (19:35 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 13 Feb 2003 19:35:22 +0000 (19:35 +0000)
insert into BL instruction.

bfd/ChangeLog
bfd/elf32-arm.h

index f58ec795ba586b8476bddc9bb5c51b9315935787..f5c91e58aea2b1ca4efb10f709d5e8ac165a7003 100644 (file)
@@ -1,3 +1,8 @@
+2003-02-13  Nick Clifton  <nickc@redhat.com>
+
+       * elf32-arm.h (elf32_thumb_to_arm_stub): Include section VMAs
+       in computation of offset to insert into BL instruction.
+
 2003-02-11  Uwe Stieber  <uwe@wwws.de>
 
        * config.bfd: Add support for kaOS as cross build target system.
index effe7e6af05172c47657f6d842cae90b6ce65deb..509b481557441bc96e8a5d7606d007edc51905b9 100644 (file)
@@ -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);