aboutsummaryrefslogtreecommitdiff
path: root/include/elf
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2012-11-09 17:36:19 +0000
committerNick Clifton <nickc@redhat.com>2012-11-09 17:36:19 +0000
commitde863c74750924a0c3e8fae251c49c69e3ddff36 (patch)
tree25a418f3ef70622c4e6665cc85f10b6f1d86045e /include/elf
parent708e2187a341e9eee46669dbb8c4d6603be5cf40 (diff)
downloadgdb-de863c74750924a0c3e8fae251c49c69e3ddff36.zip
gdb-de863c74750924a0c3e8fae251c49c69e3ddff36.tar.gz
gdb-de863c74750924a0c3e8fae251c49c69e3ddff36.tar.bz2
2012-11-09 Nick Clifton <nickc@redhat.com>
* Makefile.am (ALL_MACHINES): Add cpu-v850-rh850.lo. (ALL_MACHINES_CFILES): Add cpu-v850-rh850.c. * archures.c (bfd_arch_info): Add bfd_v850_rh850_arch. * config.bfd: Likewise. * configure.in: Add bfd_elf32_v850_rh850_vec. * cpu-v850.c: Update printed description. * cpu-v850_rh850.c: New file. * elf32-v850.c (v850_elf_check_relocs): Add support for RH850 ABI relocs. (v850_elf_perform_relocation): Likewise. (v850_elf_final_link_relocate): Likewise. (v850_elf_relocate_section): Likewise. (v850_elf_relax_section): Likewise. (v800_elf_howto_table): New. (v850_elf_object_p): Add support for RH850 ABI values. (v850_elf_final_write_processing): Likewise. (v850_elf_merge_private_bfd_data): Likewise. (v850_elf_print_private_bfd_data): Likewise. (v800_elf_reloc_map): New. (v800_elf_reloc_type_lookup): New. (v800_elf_reloc_name_lookup): New. (v800_elf_info_to_howto): New. (bfd_elf32_v850_rh850_vec): New. (bfd_arch_v850_rh850): New. * targets.c (_bfd_targets): Add bfd_elf32_v850_rh850_vec. * Makefile.in: Regenerate. * bfd-in2.h: Regenerate. * configure: Regenerate. * readelf.c (get_machine_flags): Add support for E_FLAG_RX_ABI. (guess_is_rela): Add EM_V800. (dump_relocations): Likewise. (get_machine_name): Update EM_V800. (get_machine_flags): Add support for RH850 ABI flags. (is_32bit_abs_reloc): Add support for RH850 ABI reloc. * config/tc-v850.c (v850_target_arch): New. (v850_target_format): New. (set_machine): Use v850_target_arch. (md_begin): Likewise. (md_show_usage): Document new switches. (md_parse_option): Add -mgcc-abi, -mrh850-abi, -m8byte-align and -m4byte-align. * config/tc-v850.c (TARGET_ARCH) Use v850_target_arch. (TARGET_FORMAT): Use v850_target_format. * doc/c-v850.texi: Document new options. * v850.h: Add RH850 ABI values. * Makefile.am: (ALL_EMULATION_SOURCES): Add ev850_rh850.c. * Makefile.in: Regenerate. * configure.tgt (v850*-*-*): Make v850_rh850 the default emulation. Add vanilla v850 as an extra emulation. * emulparams/v850_rh850.sh: New file. * scripttempl/v850_rh850.sc: New file. * configure.in: Add bfd_v850_rh850_arch. * configure: Regenerate. * disassemble.c (disassembler): Likewise.
Diffstat (limited to 'include/elf')
-rw-r--r--include/elf/ChangeLog2
-rw-r--r--include/elf/v850.h132
2 files changed, 133 insertions, 1 deletions
diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog
index e47ac9f..88e72c2 100644
--- a/include/elf/ChangeLog
+++ b/include/elf/ChangeLog
@@ -3,6 +3,8 @@
* rx.h (EF_RX_CPU_RX): Add comment.
(E_FLAG_RX_ABI): Define.
+ * v850.h: Add RH850 ABI values.
+
2012-11-08 Maciej W. Rozycki <macro@codesourcery.com>
* mips.h (EF_MIPS_32BITMODE): Move next to lower-order bits.
diff --git a/include/elf/v850.h b/include/elf/v850.h
index 2a0e03e..873825e 100644
--- a/include/elf/v850.h
+++ b/include/elf/v850.h
@@ -1,5 +1,5 @@
/* V850 ELF support for BFD.
- Copyright 1997, 1998, 2000, 2002, 2003, 2004, 2007, 2008, 2010
+ Copyright 1997, 1998, 2000, 2002, 2003, 2004, 2007, 2008, 2010, 2012
Free Software Foundation, Inc.
Created by Michael Meissner, Cygnus Support <meissner@cygnus.com>
@@ -148,4 +148,134 @@ END_RELOC_NUMBERS (R_V850_max)
/* This section must be in the zero data area (pointed to by R0). */
#define SHF_V850_R0REL 0x40000000
+/* Alternative versions of the above definitions, as specified by the RH850 ABI. */
+
+#define EF_RH850_ABI 0xF0000000
+
+#define EF_V800_850E3 0x00100000
+
+#define EF_RH850_FPU_DOUBLE 0x00000001 /* sizeof(double) == 8. */
+#define EF_RH850_FPU_SINGLE 0x00000002 /* sizeof(double) == 4. */
+#define EF_RH850_SIMD 0x00000004
+#define EF_RH850_CACHE 0x00000008
+#define EF_RH850_MMU 0x00000010
+#define EF_RH850_REGMODE22 0x00000020 /* Registers r15-r24 (inclusive) are not used. */
+#define EF_RH850_REGMODE32 0x00000040
+#define EF_RH850_DATA_ALIGN8 0x00000080 /* 8-byte alignment supported. */
+#define EF_RH850_GP_FIX 0x00000100 /* r4 is fixed. */
+#define EF_RH850_GP_NOFIX 0x00000200 /* r4 is callee save. */
+#define EF_RH850_EP_FIX 0x00000400 /* r30 is fixed. */
+#define EF_RH850_EP_NOFIX 0x00000800 /* r30 is callee save. */
+#define EF_RH850_TP_FIX 0x00001000 /* r5 is fixed. */
+#define EF_RH850_TP_NOFIX 0x00002000 /* r5 is callee save. */
+#define EF_RH850_REG2_RESERVE 0x00004000 /* r2 is fixed. */
+#define EF_RH850_REG2_NORESERVE 0x00008000 /* r2 is callee saved. */
+
+#define SHT_RNESAS_IOP SHT_LOUSER /* Used by Renesas linker. */
+
+#define SHF_RENESAS_ABS 0x80000000 /* Absolute section. */
+#define SHF_GHS_ABS 0x00000400 /* Use unknown. */
+
+#define STT_RENESAS_ENTRY 14 /* Set for functions called at reset time. */
+
+START_RELOC_NUMBERS (v800_reloc_type)
+
+ RELOC_NUMBER (R_V800_NONE, 0x00)
+ RELOC_NUMBER (R_V810_NONE, 0x30)
+ RELOC_NUMBER (R_V810_BYTE, 0x31)
+ RELOC_NUMBER (R_V810_HWORD, 0x32)
+ RELOC_NUMBER (R_V810_WORD, 0x33)
+ RELOC_NUMBER (R_V810_WLO, 0x34)
+ RELOC_NUMBER (R_V810_WHI, 0x35)
+ RELOC_NUMBER (R_V810_WHI1, 0x36)
+ RELOC_NUMBER (R_V810_GPBYTE, 0x37)
+ RELOC_NUMBER (R_V810_GPHWORD, 0x38)
+ RELOC_NUMBER (R_V810_GPWORD, 0x39)
+ RELOC_NUMBER (R_V810_GPWLO, 0x3a)
+ RELOC_NUMBER (R_V810_GPWHI, 0x3b)
+ RELOC_NUMBER (R_V810_GPWHI1, 0x3c)
+ RELOC_NUMBER (R_V850_HWLO, 0x3d)
+ FAKE_RELOC (R_V810_reserved1, 0x3e)
+ RELOC_NUMBER (R_V850_EP7BIT, 0x3f)
+ RELOC_NUMBER (R_V850_EPHBYTE, 0x40)
+ RELOC_NUMBER (R_V850_EPWBYTE, 0x41)
+ RELOC_NUMBER (R_V850_REGHWLO, 0x42)
+ FAKE_RELOC (R_V810_reserved2, 0x43)
+ RELOC_NUMBER (R_V850_GPHWLO, 0x44)
+ FAKE_RELOC (R_V810_reserved3, 0x45)
+ RELOC_NUMBER (R_V850_PCR22, 0x46)
+ RELOC_NUMBER (R_V850_BLO, 0x47)
+ RELOC_NUMBER (R_V850_EP4BIT, 0x48)
+ RELOC_NUMBER (R_V850_EP5BIT, 0x49)
+ RELOC_NUMBER (R_V850_REGBLO, 0x4a)
+ RELOC_NUMBER (R_V850_GPBLO, 0x4b)
+ RELOC_NUMBER (R_V810_WLO_1, 0x4c)
+ RELOC_NUMBER (R_V810_GPWLO_1, 0x4d)
+ RELOC_NUMBER (R_V850_BLO_1, 0x4e)
+ RELOC_NUMBER (R_V850_HWLO_1, 0x4f)
+ FAKE_RELOC (R_V810_reserved4, 0x50)
+ RELOC_NUMBER (R_V850_GPBLO_1, 0x51)
+ RELOC_NUMBER (R_V850_GPHWLO_1, 0x52)
+ FAKE_RELOC (R_V810_reserved5, 0x53)
+ RELOC_NUMBER (R_V850_EPBLO, 0x54)
+ RELOC_NUMBER (R_V850_EPHWLO, 0x55)
+ FAKE_RELOC (R_V810_reserved6, 0x56)
+ RELOC_NUMBER (R_V850_EPWLO_N, 0x57)
+ RELOC_NUMBER (R_V850_PC32, 0x58)
+ RELOC_NUMBER (R_V850_W23BIT, 0x59)
+ RELOC_NUMBER (R_V850_GPW23BIT, 0x5a)
+ RELOC_NUMBER (R_V850_EPW23BIT, 0x5b)
+ RELOC_NUMBER (R_V850_B23BIT, 0x5c)
+ RELOC_NUMBER (R_V850_GPB23BIT, 0x5d)
+ RELOC_NUMBER (R_V850_EPB23BIT, 0x5e)
+ RELOC_NUMBER (R_V850_PC16U, 0x5f)
+ RELOC_NUMBER (R_V850_PC17, 0x60)
+ RELOC_NUMBER (R_V850_DW8, 0x61)
+ RELOC_NUMBER (R_V850_GPDW8, 0x62)
+ RELOC_NUMBER (R_V850_EPDW8, 0x63)
+ RELOC_NUMBER (R_V850_PC9, 0x64)
+ RELOC_NUMBER (R_V810_REGBYTE, 0x65)
+ RELOC_NUMBER (R_V810_REGHWORD, 0x66)
+ RELOC_NUMBER (R_V810_REGWORD, 0x67)
+ RELOC_NUMBER (R_V810_REGWLO, 0x68)
+ RELOC_NUMBER (R_V810_REGWHI, 0x69)
+ RELOC_NUMBER (R_V810_REGWHI1, 0x6a)
+ RELOC_NUMBER (R_V850_REGW23BIT, 0x6b)
+ RELOC_NUMBER (R_V850_REGB23BIT, 0x6c)
+ RELOC_NUMBER (R_V850_REGDW8, 0x6d)
+ RELOC_NUMBER (R_V810_EPBYTE, 0x6e)
+ RELOC_NUMBER (R_V810_EPHWORD, 0x6f)
+ RELOC_NUMBER (R_V810_EPWORD, 0x70)
+ RELOC_NUMBER (R_V850_WLO23, 0x71)
+ RELOC_NUMBER (R_V850_WORD_E, 0x72)
+ RELOC_NUMBER (R_V850_REGWORD_E, 0x73)
+ RELOC_NUMBER (R_V850_WORD, 0x74)
+ RELOC_NUMBER (R_V850_GPWORD, 0x75)
+ RELOC_NUMBER (R_V850_REGWORD, 0x76)
+ RELOC_NUMBER (R_V850_EPWORD, 0x77)
+ RELOC_NUMBER (R_V810_TPBYTE, 0x78)
+ RELOC_NUMBER (R_V810_TPHWORD, 0x79)
+ RELOC_NUMBER (R_V810_TPWORD, 0x7a)
+ RELOC_NUMBER (R_V810_TPWLO, 0x7b)
+ RELOC_NUMBER (R_V810_TPWHI, 0x7c)
+ RELOC_NUMBER (R_V810_TPWHI1, 0x7d)
+ RELOC_NUMBER (R_V850_TPHWLO, 0x7e)
+ RELOC_NUMBER (R_V850_TPBLO, 0x7f)
+ RELOC_NUMBER (R_V810_TPWLO_1, 0x80)
+ RELOC_NUMBER (R_V850_TPBLO_1, 0x81)
+ RELOC_NUMBER (R_V850_TPHWLO_1, 0x82)
+ RELOC_NUMBER (R_V850_TP23BIT, 0x83)
+ RELOC_NUMBER (R_V850_TPW23BIT, 0x84)
+ RELOC_NUMBER (R_V850_TPDW8, 0x85)
+
+/* These are defined by the RH850 ABI, but not used. */
+ RELOC_NUMBER (R_V810_ABS32, 0xa0)
+ RELOC_NUMBER (R_V850_SYM, 0xe0)
+ RELOC_NUMBER (R_V850_OPadd, 0xe1)
+ RELOC_NUMBER (R_V850_OPsub, 0xe2)
+ RELOC_NUMBER (R_V850_OPsctsize, 0xe3)
+ RELOC_NUMBER (R_V850_OPscttop, 0xe4)
+
+END_RELOC_NUMBERS (R_V800_max)
+
#endif /* _ELF_V850_H */