2003-08-24 Jason Eckhardt <jle@rice.edu>
authorJason Eckhardt <jle@rice.edu>
Sun, 24 Aug 2003 18:16:46 +0000 (18:16 +0000)
committerJason Eckhardt <jle@rice.edu>
Sun, 24 Aug 2003 18:16:46 +0000 (18:16 +0000)
* elf32-i860.c (elf32_i860_relocate_pc16): Subtract 4 and
shift by 2 before storing the relocated value.

bfd/ChangeLog
bfd/elf32-i860.c

index dc7750a293f8a0dc2e020a811253000e6fc7827c..6fe12d577d5aaad3ee551461bcfa3b49f81d8325 100644 (file)
@@ -1,3 +1,8 @@
+2003-08-24  Jason Eckhardt  <jle@rice.edu>
+
+       * elf32-i860.c (elf32_i860_relocate_pc16): Subtract 4 and
+       shift by 2 before storing the relocated value.
+
 2003-08-23  Jason Eckhardt  <jle@rice.edu>
 
         * coff-i860.c (coff_i860_reloc_nyi): New function.
index fd68dc6336285afede28efa564cd9f184bbab985..0e013ef3a745d291020d68f4a998b5c057bad981 100644 (file)
@@ -712,7 +712,8 @@ elf32_i860_relocate_pc16 (bfd *input_bfd,
   /* Relocate.  */
   value += rello->r_addend;
 
-  /* Separate the fields and insert.  */
+  /* Adjust the value by 4, then separate the fields and insert.  */
+  value = (value - 4) >> howto->rightshift;
   value = (((value & 0xf800) << 5) | (value & 0x7ff)) & howto->dst_mask;
   insn = (insn & ~howto->dst_mask) | value;