* elf32-v850.c (enum reloc_type): Add R_V850_SDA_OFFSET,
authorJeff Law <law@redhat.com>
Thu, 17 Oct 1996 04:45:29 +0000 (04:45 +0000)
committerJeff Law <law@redhat.com>
Thu, 17 Oct 1996 04:45:29 +0000 (04:45 +0000)
        R_V850_TDA_OFFSET and R_V850_ZDA_OFFSET.
        (elf_v850_howto_table): Corresponding changes.
        (elf_v850_reloc_map): Corresponding changes.
        * reloc.c: Add additional V850 relocations.
        * bfd-in2.h, libbfd.h: Rebuilt.

bfd/ChangeLog
bfd/bfd-in2.h
bfd/elf32-v850.c
bfd/libbfd.h
bfd/reloc.c

index 29f8ff9e51c6a2f159b2ae4e882772ed44a57b13..0cb700abc236fdc8b01c38934c5053867506a479 100644 (file)
@@ -6,6 +6,14 @@ Wed Oct 16 11:24:35 1996  Jeffrey A Law  (law@cygnus.com)
        which are being discarded.
 
 start-sanitize-v850
+
+       * elf32-v850.c (enum reloc_type): Add R_V850_SDA_OFFSET,
+       R_V850_TDA_OFFSET and R_V850_ZDA_OFFSET.
+       (elf_v850_howto_table): Corresponding changes.
+       (elf_v850_reloc_map): Corresponding changes.
+       * reloc.c: Add additional V850 relocations.
+       * bfd-in2.h, libbfd.h: Rebuilt.
+
        * elf32-v850.c (bfd_elf32_v850_reloc): Mask out bits we
        no longer want in pc-relative relocs.
 
index 4767c0c48456aae551a36e6773c0a4a3e0656635..220ed5b8c05567b9b408d4fb17f4731dc961ad1e 100644 (file)
@@ -1864,6 +1864,15 @@ This is a 24 bit address. */
 
 /* This is a 22-bit reloc */
   BFD_RELOC_V850_22_PCREL,
+
+/* This is an offset from the short data area pointer.. */
+  BFD_RELOC_V850_SDA_OFFSET,
+
+/* This is an offset from the zero data area pointer.. */
+  BFD_RELOC_V850_ZDA_OFFSET,
+
+/* This is an offset from the tiny data area pointer.. */
+  BFD_RELOC_V850_TDA_OFFSET,
 /* end-sanitize-v850 */
 
   BFD_RELOC_UNUSED };
index 1640375903d34f2de48d0788ad512836a68b647e..f4c22ee42f7035b746b4f5f7beec9d2d5cd3e75b 100644 (file)
@@ -46,6 +46,9 @@ enum reloc_type
   R_V850_32,
   R_V850_16,
   R_V850_8,
+  R_V850_SDA_OFFSET,
+  R_V850_ZDA_OFFSET,
+  R_V850_TDA_OFFSET,
   R_V850_max
 };
 
@@ -185,6 +188,52 @@ static reloc_howto_type elf_v850_howto_table[] =
          0xff,                /* src_mask */
          0xff,                /* dst_mask */
          false),                /* pcrel_offset */
+
+  /* Offset from the short data area pointer.  */
+  HOWTO (R_V850_SDA_OFFSET,     /* type */
+         0,                     /* rightshift */
+         1,                     /* size (0 = byte, 1 = short, 2 = long) */
+         16,                    /* bitsize */
+         false,                 /* pc_relative */
+         0,                     /* bitpos */
+         complain_overflow_dont,/* complain_on_overflow */
+         bfd_elf_generic_reloc, /* special_function */
+         "R_V850_SDA_OFFSET",   /* name */
+         true,                  /* partial_inplace */
+         0xffff,                /* src_mask */
+         0xffff,                /* dst_mask */
+         false),                /* pcrel_offset */
+
+  /* Offset from the tiny data area pointer.  */
+  HOWTO (R_V850_TDA_OFFSET,     /* type */
+         0,                     /* rightshift */
+         1,                     /* size (0 = byte, 1 = short, 2 = long) */
+         16,                    /* bitsize */
+         false,                 /* pc_relative */
+         0,                     /* bitpos */
+         complain_overflow_dont,/* complain_on_overflow */
+         bfd_elf_generic_reloc, /* special_function */
+         "R_V850_TDA_OFFSET",   /* name */
+         true,                  /* partial_inplace */
+         0xffff,                /* src_mask */
+         0xffff,                /* dst_mask */
+         false),                /* pcrel_offset */
+
+  /* Offset from the zero data area pointer.  */
+  HOWTO (R_V850_ZDA_OFFSET,     /* type */
+         0,                     /* rightshift */
+         1,                     /* size (0 = byte, 1 = short, 2 = long) */
+         16,                    /* bitsize */
+         false,                 /* pc_relative */
+         0,                     /* bitpos */
+         complain_overflow_dont,/* complain_on_overflow */
+         bfd_elf_generic_reloc, /* special_function */
+         "R_V850_ZDA_OFFSET",   /* name */
+         true,                  /* partial_inplace */
+         0xffff,                /* src_mask */
+         0xffff,                /* dst_mask */
+         false),                /* pcrel_offset */
+
 };
 
 /* Map BFD reloc types to V850 ELF reloc types.  */
@@ -206,6 +255,9 @@ static const struct v850_reloc_map v850_reloc_map[] =
   { BFD_RELOC_32, R_V850_32, },
   { BFD_RELOC_16, R_V850_16, },
   { BFD_RELOC_8, R_V850_8, },
+  { BFD_RELOC_V850_TDA_OFFSET, R_V850_TDA_OFFSET, },
+  { BFD_RELOC_V850_SDA_OFFSET, R_V850_SDA_OFFSET, },
+  { BFD_RELOC_V850_ZDA_OFFSET, R_V850_ZDA_OFFSET, },
 };
 
 static reloc_howto_type *
index 02d127918d8ce03114f59608ad2d2fd06070e966..aa3dd61cdb6ee42c94291ecf84a5c14a873a5bef 100644 (file)
@@ -756,6 +756,9 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
 /* start-sanitize-v850 */
   "BFD_RELOC_V850_9_PCREL",
   "BFD_RELOC_V850_22_PCREL",
+  "BFD_RELOC_V850_SDA_OFFSET",
+  "BFD_RELOC_V850_ZDA_OFFSET",
+  "BFD_RELOC_V850_TDA_OFFSET",
 /* end-sanitize-v850 */
 
  "@@overflow: BFD_RELOC_UNUSED@@",
index cf0674af1380587c1358fd642f4c85f08be6260b..20be20d7dce23fe7ba494a80b04fa269ed4aebe8 100644 (file)
@@ -2281,6 +2281,18 @@ ENUM
   BFD_RELOC_V850_22_PCREL
 ENUMDOC
   This is a 22-bit reloc
+ENUM
+  BFD_RELOC_V850_SDA_OFFSET
+ENUMDOC
+  This is an offset from the short data area pointer..
+ENUM
+  BFD_RELOC_V850_ZDA_OFFSET
+ENUMDOC
+  This is an offset from the zero data area pointer..
+ENUM
+  BFD_RELOC_V850_TDA_OFFSET
+ENUMDOC
+  This is an offset from the tiny data area pointer..
 COMMENT
 {* end-sanitize-v850 *}