-static reloc_howto_type *v850_elf_reloc_type_lookup
- PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
-static void v850_elf_info_to_howto_rel
- PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
-static void v850_elf_info_to_howto_rela
- PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
-static bfd_reloc_status_type v850_elf_reloc
- PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-static bfd_boolean v850_elf_is_local_label_name
- PARAMS ((bfd *, const char *));
-static bfd_boolean v850_elf_relocate_section
- PARAMS((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
- Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
-static bfd_reloc_status_type v850_elf_perform_relocation
- PARAMS ((bfd *, unsigned int, bfd_vma, bfd_byte *));
-static bfd_boolean v850_elf_check_relocs
- PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *));
-static void remember_hi16s_reloc
- PARAMS ((bfd *, bfd_vma, bfd_byte *));
-static bfd_byte * find_remembered_hi16s_reloc
- PARAMS ((bfd_vma, bfd_boolean *));
-static bfd_reloc_status_type v850_elf_final_link_relocate
- PARAMS ((reloc_howto_type *, bfd *, bfd *, asection *, bfd_byte *, bfd_vma,
- bfd_vma, bfd_vma, struct bfd_link_info *, asection *, int));
-static bfd_boolean v850_elf_object_p
- PARAMS ((bfd *));
-static bfd_boolean v850_elf_fake_sections
- PARAMS ((bfd *, Elf_Internal_Shdr *, asection *));
-static void v850_elf_final_write_processing
- PARAMS ((bfd *, bfd_boolean));
-static bfd_boolean v850_elf_set_private_flags
- PARAMS ((bfd *, flagword));
-static bfd_boolean v850_elf_merge_private_bfd_data
- PARAMS ((bfd *, bfd *));
-static bfd_boolean v850_elf_print_private_bfd_data
- PARAMS ((bfd *, PTR));
-static bfd_boolean v850_elf_section_from_bfd_section
- PARAMS ((bfd *, asection *, int *));
-static void v850_elf_symbol_processing
- PARAMS ((bfd *, asymbol *));
-static bfd_boolean v850_elf_add_symbol_hook
- PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Sym *,
- const char **, flagword *, asection **, bfd_vma *));
-static bfd_boolean v850_elf_link_output_symbol_hook
- PARAMS ((struct bfd_link_info *, const char *, Elf_Internal_Sym *,
- asection *, struct elf_link_hash_entry *));
-static bfd_boolean v850_elf_gc_sweep_hook
- PARAMS ((bfd *, struct bfd_link_info *, asection *,
- const Elf_Internal_Rela *));
-static asection * v850_elf_gc_mark_hook
- PARAMS ((asection *, struct bfd_link_info *,
- Elf_Internal_Rela *, struct elf_link_hash_entry *,
- Elf_Internal_Sym *));
-static bfd_reloc_status_type v850_elf_ignore_reloc
- PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-static bfd_boolean v850_elf_relax_delete_bytes
- PARAMS ((bfd *, asection *, bfd_vma, bfd_vma, int));
-static bfd_boolean v850_elf_relax_section
- PARAMS ((bfd *, asection *, struct bfd_link_info *, bfd_boolean *));
-
-/* Note: It is REQUIRED that the 'type' value of each entry
- in this array match the index of the entry in the array. */
-static reloc_howto_type v850_elf_howto_table[] =
-{
- /* This reloc does nothing. */
- HOWTO (R_V850_NONE, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_bitfield, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
- "R_V850_NONE", /* name */
- FALSE, /* partial_inplace */
- 0, /* src_mask */
- 0, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* A PC relative 9 bit branch. */
- HOWTO (R_V850_9_PCREL, /* type */
- 2, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 26, /* bitsize */
- TRUE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_bitfield, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_9_PCREL", /* name */
- FALSE, /* partial_inplace */
- 0x00ffffff, /* src_mask */
- 0x00ffffff, /* dst_mask */
- TRUE), /* pcrel_offset */
-
- /* A PC relative 22 bit branch. */
- HOWTO (R_V850_22_PCREL, /* type */
- 2, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 22, /* bitsize */
- TRUE, /* pc_relative */
- 7, /* bitpos */
- complain_overflow_signed, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_22_PCREL", /* name */
- FALSE, /* partial_inplace */
- 0x07ffff80, /* src_mask */
- 0x07ffff80, /* dst_mask */
- TRUE), /* pcrel_offset */
-
- /* High 16 bits of symbol value. */
- HOWTO (R_V850_HI16_S, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_HI16_S", /* name */
- FALSE, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* High 16 bits of symbol value. */
- HOWTO (R_V850_HI16, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_HI16", /* name */
- FALSE, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* Low 16 bits of symbol value. */
- HOWTO (R_V850_LO16, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_LO16", /* name */
- FALSE, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* Simple 32bit reloc. */
- HOWTO (R_V850_ABS32, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_ABS32", /* name */
- FALSE, /* partial_inplace */
- 0xffffffff, /* 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 */
- 0xffff, /* 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 */
- 0xff, /* src_mask */
- 0xff, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 16 bit offset from the short data area pointer. */
- HOWTO (R_V850_SDA_16_16_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 */
- v850_elf_reloc, /* special_function */
- "R_V850_SDA_16_16_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 15 bit offset from the short data area pointer. */
- HOWTO (R_V850_SDA_15_16_OFFSET, /* type */
- 1, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- FALSE, /* pc_relative */
- 1, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_SDA_15_16_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0xfffe, /* src_mask */
- 0xfffe, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 16 bit offset from the zero data area pointer. */
- HOWTO (R_V850_ZDA_16_16_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 */
- v850_elf_reloc, /* special_function */
- "R_V850_ZDA_16_16_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 15 bit offset from the zero data area pointer. */
- HOWTO (R_V850_ZDA_15_16_OFFSET, /* type */
- 1, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- FALSE, /* pc_relative */
- 1, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_ZDA_15_16_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0xfffe, /* src_mask */
- 0xfffe, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 6 bit offset from the tiny data area pointer. */
- HOWTO (R_V850_TDA_6_8_OFFSET, /* type */
- 2, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 8, /* bitsize */
- FALSE, /* pc_relative */
- 1, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_TDA_6_8_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0x7e, /* src_mask */
- 0x7e, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 8 bit offset from the tiny data area pointer. */
- HOWTO (R_V850_TDA_7_8_OFFSET, /* type */
- 1, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 8, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_TDA_7_8_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0x7f, /* src_mask */
- 0x7f, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 7 bit offset from the tiny data area pointer. */
- HOWTO (R_V850_TDA_7_7_OFFSET, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 7, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_TDA_7_7_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0x7f, /* src_mask */
- 0x7f, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 16 bit offset from the tiny data area pointer! */
- HOWTO (R_V850_TDA_16_16_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 */
- v850_elf_reloc, /* special_function */
- "R_V850_TDA_16_16_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xfff, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 5 bit offset from the tiny data area pointer. */
- HOWTO (R_V850_TDA_4_5_OFFSET, /* type */
- 1, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 5, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_TDA_4_5_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0x0f, /* src_mask */
- 0x0f, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 4 bit offset from the tiny data area pointer. */
- HOWTO (R_V850_TDA_4_4_OFFSET, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 4, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_TDA_4_4_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0x0f, /* src_mask */
- 0x0f, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 16 bit offset from the short data area pointer. */
- HOWTO (R_V850_SDA_16_16_SPLIT_OFFSET, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_SDA_16_16_SPLIT_OFFSET",/* name */
- FALSE, /* partial_inplace */
- 0xfffe0020, /* src_mask */
- 0xfffe0020, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 16 bit offset from the zero data area pointer. */
- HOWTO (R_V850_ZDA_16_16_SPLIT_OFFSET, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_ZDA_16_16_SPLIT_OFFSET",/* name */
- FALSE, /* partial_inplace */
- 0xfffe0020, /* src_mask */
- 0xfffe0020, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 6 bit offset from the call table base pointer. */
- HOWTO (R_V850_CALLT_6_7_OFFSET, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 7, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_CALLT_6_7_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0x3f, /* src_mask */
- 0x3f, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* 16 bit offset from the call table base pointer. */
- HOWTO (R_V850_CALLT_16_16_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 */
- v850_elf_reloc, /* special_function */
- "R_V850_CALLT_16_16_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* GNU extension to record C++ vtable hierarchy */
- HOWTO (R_V850_GNU_VTINHERIT, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 0, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- NULL, /* special_function */
- "R_V850_GNU_VTINHERIT", /* name */
- FALSE, /* partial_inplace */
- 0, /* src_mask */
- 0, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* GNU extension to record C++ vtable member usage */
- HOWTO (R_V850_GNU_VTENTRY, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 0, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- _bfd_elf_rel_vtable_reloc_fn, /* special_function */
- "R_V850_GNU_VTENTRY", /* name */
- FALSE, /* partial_inplace */
- 0, /* src_mask */
- 0, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* Indicates a .longcall pseudo-op. The compiler will generate a .longcall
- pseudo-op when it finds a function call which can be relaxed. */
- HOWTO (R_V850_LONGCALL, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- TRUE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_signed, /* complain_on_overflow */
- v850_elf_ignore_reloc, /* special_function */
- "R_V850_LONGCALL", /* name */
- FALSE, /* partial_inplace */
- 0, /* src_mask */
- 0, /* dst_mask */
- TRUE), /* pcrel_offset */
-
- /* Indicates a .longjump pseudo-op. The compiler will generate a
- .longjump pseudo-op when it finds a branch which can be relaxed. */
- HOWTO (R_V850_LONGJUMP, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- TRUE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_signed, /* complain_on_overflow */
- v850_elf_ignore_reloc, /* special_function */
- "R_V850_LONGJUMP", /* name */
- FALSE, /* partial_inplace */
- 0, /* src_mask */
- 0, /* dst_mask */
- TRUE), /* pcrel_offset */
-
- HOWTO (R_V850_ALIGN, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 0, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_unsigned, /* complain_on_overflow */
- v850_elf_ignore_reloc, /* special_function */
- "R_V850_ALIGN", /* name */
- FALSE, /* partial_inplace */
- 0, /* src_mask */
- 0, /* dst_mask */
- TRUE), /* pcrel_offset */
-
- /* Simple pc-relative 32bit reloc. */
- HOWTO (R_V850_REL32, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- TRUE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_REL32", /* name */
- FALSE, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
-
- /* An ld.bu version of R_V850_LO16. */
- HOWTO (R_V850_LO16_SPLIT_OFFSET, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- v850_elf_reloc, /* special_function */
- "R_V850_LO16_SPLIT_OFFSET", /* name */
- FALSE, /* partial_inplace */
- 0xfffe0020, /* src_mask */
- 0xfffe0020, /* dst_mask */
- FALSE), /* pcrel_offset */
-};
-
-/* Map BFD reloc types to V850 ELF reloc types. */
-
-struct v850_elf_reloc_map
-{
- /* BFD_RELOC_V850_CALLT_16_16_OFFSET is 258, which will not fix in an
- unsigned char. */
- bfd_reloc_code_real_type bfd_reloc_val;
- unsigned int elf_reloc_val;
-};
-
-static const struct v850_elf_reloc_map v850_elf_reloc_map[] =
-{
- { BFD_RELOC_NONE, R_V850_NONE },
- { BFD_RELOC_V850_9_PCREL, R_V850_9_PCREL },
- { BFD_RELOC_V850_22_PCREL, R_V850_22_PCREL },
- { 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_ABS32 },
- { BFD_RELOC_32_PCREL, R_V850_REL32 },
- { BFD_RELOC_16, R_V850_16 },
- { BFD_RELOC_8, R_V850_8 },
- { BFD_RELOC_V850_SDA_16_16_OFFSET, R_V850_SDA_16_16_OFFSET },
- { BFD_RELOC_V850_SDA_15_16_OFFSET, R_V850_SDA_15_16_OFFSET },
- { BFD_RELOC_V850_ZDA_16_16_OFFSET, R_V850_ZDA_16_16_OFFSET },
- { BFD_RELOC_V850_ZDA_15_16_OFFSET, R_V850_ZDA_15_16_OFFSET },
- { BFD_RELOC_V850_TDA_6_8_OFFSET, R_V850_TDA_6_8_OFFSET },
- { BFD_RELOC_V850_TDA_7_8_OFFSET, R_V850_TDA_7_8_OFFSET },
- { BFD_RELOC_V850_TDA_7_7_OFFSET, R_V850_TDA_7_7_OFFSET },
- { BFD_RELOC_V850_TDA_16_16_OFFSET, R_V850_TDA_16_16_OFFSET },
- { BFD_RELOC_V850_TDA_4_5_OFFSET, R_V850_TDA_4_5_OFFSET },
- { BFD_RELOC_V850_TDA_4_4_OFFSET, R_V850_TDA_4_4_OFFSET },
- { BFD_RELOC_V850_LO16_SPLIT_OFFSET, R_V850_LO16_SPLIT_OFFSET },
- { BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET, R_V850_SDA_16_16_SPLIT_OFFSET },
- { BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET, R_V850_ZDA_16_16_SPLIT_OFFSET },
- { BFD_RELOC_V850_CALLT_6_7_OFFSET, R_V850_CALLT_6_7_OFFSET },
- { BFD_RELOC_V850_CALLT_16_16_OFFSET, R_V850_CALLT_16_16_OFFSET },
- { BFD_RELOC_VTABLE_INHERIT, R_V850_GNU_VTINHERIT },
- { BFD_RELOC_VTABLE_ENTRY, R_V850_GNU_VTENTRY },
- { BFD_RELOC_V850_LONGCALL, R_V850_LONGCALL },
- { BFD_RELOC_V850_LONGJUMP, R_V850_LONGJUMP },
- { BFD_RELOC_V850_ALIGN, R_V850_ALIGN },
-
-};
-\f
-/* Map a bfd relocation into the appropriate howto structure. */
-
-static reloc_howto_type *
-v850_elf_reloc_type_lookup (abfd, code)
- bfd *abfd ATTRIBUTE_UNUSED;
- bfd_reloc_code_real_type code;
-{
- unsigned int i;
-
- for (i = ARRAY_SIZE (v850_elf_reloc_map); i --;)
- if (v850_elf_reloc_map[i].bfd_reloc_val == code)
- {
- unsigned int elf_reloc_val = v850_elf_reloc_map[i].elf_reloc_val;
-
- BFD_ASSERT (v850_elf_howto_table[elf_reloc_val].type == elf_reloc_val);
-
- return v850_elf_howto_table + elf_reloc_val;
- }
-
- return NULL;
-}
-\f
-/* Set the howto pointer for an V850 ELF reloc. */
-
-static void
-v850_elf_info_to_howto_rel (abfd, cache_ptr, dst)
- bfd *abfd ATTRIBUTE_UNUSED;
- arelent *cache_ptr;
- Elf_Internal_Rela *dst;
-{
- unsigned int r_type;
-
- r_type = ELF32_R_TYPE (dst->r_info);
- BFD_ASSERT (r_type < (unsigned int) R_V850_max);
- cache_ptr->howto = &v850_elf_howto_table[r_type];
-}