aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-v850.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1996-10-17 04:45:29 +0000
committerJeff Law <law@redhat.com>1996-10-17 04:45:29 +0000
commitb6d08fce22121e4e551dfa9ae7eb8578354685b8 (patch)
treefd077cc25b70803d8c6e1175c71ee070f425d056 /bfd/elf32-v850.c
parent148b365e90b66dd279048529c8c551af793964db (diff)
downloadgdb-b6d08fce22121e4e551dfa9ae7eb8578354685b8.zip
gdb-b6d08fce22121e4e551dfa9ae7eb8578354685b8.tar.gz
gdb-b6d08fce22121e4e551dfa9ae7eb8578354685b8.tar.bz2
* 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.
Diffstat (limited to 'bfd/elf32-v850.c')
-rw-r--r--bfd/elf32-v850.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c
index 1640375..f4c22ee 100644
--- a/bfd/elf32-v850.c
+++ b/bfd/elf32-v850.c
@@ -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 *