aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-v850.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1996-08-31 16:24:18 +0000
committerJeff Law <law@redhat.com>1996-08-31 16:24:18 +0000
commit237b5c4c9a06de328ad591ef904d73d47f9344d7 (patch)
tree7864aeeaaad83db3ce9334c7e1b27996f444334c /bfd/elf32-v850.c
parent69ae4b82dccc467ad7d23a0c90b04ee4b884e39e (diff)
downloadgdb-237b5c4c9a06de328ad591ef904d73d47f9344d7.zip
gdb-237b5c4c9a06de328ad591ef904d73d47f9344d7.tar.gz
gdb-237b5c4c9a06de328ad591ef904d73d47f9344d7.tar.bz2
* elf32-v850.c (enum reloc_type): Add R_V850_{32,16,8}.
(elf_v850_howto_table): Add support for R_V850_{32,16,8}. (v850_reloc_map): Add translation from BFD_RELOC_{32,16,8} to R_V850_{32,16,8}. So we don't get "reloc XXX not supported" messages anymore.
Diffstat (limited to 'bfd/elf32-v850.c')
-rw-r--r--bfd/elf32-v850.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c
index d1c1d00..22921b7 100644
--- a/bfd/elf32-v850.c
+++ b/bfd/elf32-v850.c
@@ -40,6 +40,9 @@ enum reloc_type
R_V850_HI16_S,
R_V850_HI16,
R_V850_LO16,
+ R_V850_32,
+ R_V850_16,
+ R_V850_8,
R_V850_max
};
@@ -134,6 +137,51 @@ static reloc_howto_type elf_v850_howto_table[] =
0xffff, /* src_mask */
0xffff, /* dst_mask */
false), /* pcrel_offset */
+
+ /* Simple 32bit reloc. */
+ HOWTO (R_V850_32, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont,/* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_V850_32", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ false), /* pcrel_offset */
+
+ /* Simple 16bit reloc. */
+ HOWTO (R_V850_16, /* 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_16", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xffff, /* dst_mask */
+ false), /* pcrel_offset */
+
+ /* Simple 8bit reloc. */
+ HOWTO (R_V850_8, /* type */
+ 0, /* rightshift */
+ 0, /* size (0 = byte, 1 = short, 2 = long) */
+ 8, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont,/* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_V850_8", /* name */
+ false, /* partial_inplace */
+ 0, /* src_mask */
+ 0xff, /* dst_mask */
+ false), /* pcrel_offset */
};
/* Map BFD reloc types to V850 ELF reloc types. */
@@ -152,6 +200,9 @@ static const struct v850_reloc_map v850_reloc_map[] =
{ BFD_RELOC_HI16_S, R_V850_HI16_S, },
{ BFD_RELOC_HI16, R_V850_HI16, },
{ BFD_RELOC_LO16, R_V850_LO16, },
+ { BFD_RELOC_32, R_V850_32, },
+ { BFD_RELOC_16, R_V850_16, },
+ { BFD_RELOC_8, R_V850_8, },
};
static reloc_howto_type *