summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorM R Swami Reddy <MR.Swami.Reddy@nsc.com>2009-07-27 06:52:33 +0000
committerM R Swami Reddy <MR.Swami.Reddy@nsc.com>2009-07-27 06:52:33 +0000
commit86514226a5438800f5ad6df6959d530395e8e5df (patch)
treecdd32f44491899292303b832a951236d80b72ca3
parent305f7588d685d1e6a8f9d6577077bcfff0ca3d6b (diff)
downloadbinutils-gdb-86514226a5438800f5ad6df6959d530395e8e5df.tar.gz
2009-07-26 M R Swami Reddy <MR.Swami.Reddy@nsc.com>
* elf32-cr16.c (elf_cr16_final_link_relocate): Add code to handle to R_cr16_NUM32 relocation.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-cr16.c15
2 files changed, 20 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 5c338e9cfe5..8a1c0419ff9 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-27 M R Swami Reddy <MR.Swami.Reddy@nsc.com>
+
+ * elf32-cr16.c (elf_cr16_final_link_relocate): Add code to handle
+ to R_cr16_NUM32 relocation.
+
2009-07-26 Michael Eager <eager@eagercon.com>
* archures.c: Add bfd_mach_ppc_405
diff --git a/bfd/elf32-cr16.c b/bfd/elf32-cr16.c
index 795590c62df..085c671a3b7 100644
--- a/bfd/elf32-cr16.c
+++ b/bfd/elf32-cr16.c
@@ -1259,6 +1259,21 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
| (bfd_get_32 (input_bfd, hit_data) & 0xf0ff));
}
+ else if (r_type == R_CR16_NUM32)
+ {
+ Rvalue1 = (bfd_get_32 (input_bfd, hit_data));
+
+ /* Add or subtract the offset value */
+ if (Rvalue1 & 0x80000000)
+ Rvalue -= (~Rvalue1 + 1) & 0xffffffff;
+ else
+ Rvalue += Rvalue1;
+
+ /* Check for Ranga */
+ if (Rvalue > 0xffffffff)
+ return bfd_reloc_overflow;
+ }
+
bfd_put_32 (input_bfd, Rvalue, hit_data);
}
break;