Philip Blundell <philb@gnu.org>
authorNick Clifton <nickc@redhat.com>
Sun, 30 May 1999 11:36:53 +0000 (11:36 +0000)
committerNick Clifton <nickc@redhat.com>
Sun, 30 May 1999 11:36:53 +0000 (11:36 +0000)
* elf32-arm.h (elf32_arm_relocate_section): Reinstate change of
1993-03-25 (!!).  Take into account the bitmasks for the reloc so
the addend does not overflow into the rest of the word

bfd/ChangeLog
bfd/elf32-arm.h

index 73d0c51232810a4982062ab5b46313878204e371..f69e51cab582708c60921bc47f3940d0af2c0903 100644 (file)
@@ -1,3 +1,9 @@
+1999-05-30  Philip Blundell  <philb@gnu.org>
+
+       * elf32-arm.h (elf32_arm_relocate_section): Reinstate change of
+       1993-03-25 (!!).  Take into account the bitmasks for the reloc so
+       the addend does not overflow into the rest of the word.
+
 1999-05-29  Nick Clifton  <nickc@cygnus.com>
 
        * bfd-in.h: Amend prototype for
index 0cf2f9ce4436588be868ec8436f8930e0891f6cc..f7ef578a1647cc9d47b0c89084354b67d76b31b9 100644 (file)
@@ -1631,8 +1631,14 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section,
 #ifdef USE_REL
                  {
                    bfd_vma val;
-                   val = bfd_get_32 (input_bfd, contents + rel->r_offset);
-                   val += (sec->output_offset + sym->st_value);
+                   bfd_vma insn;
+                   
+                   insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
+                   val = insn + ((sec->output_offset + sym->st_value) 
+                                 >> howto->rightshift);
+                   val &= howto->dst_mask;
+                   val |= insn & ~(howto->dst_mask);
+                   
                    bfd_put_32 (input_bfd, val, contents + rel->r_offset);
                  }
 #else