This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[tile] Add Tilera constants to elf/elf.h
- From: Chris Metcalf <cmetcalf at tilera dot com>
- To: Roland McGrath <roland at hack dot frob dot com>, libc-alpha at sourceware dot org
- Date: Wed, 25 Jan 2012 16:27:44 -0500
- Subject: [tile] Add Tilera constants to elf/elf.h
- References: <201111100054.pAA0sf6u025585@farm-0002.internal.tilera.com> <CAOPLpQeYkCxui8-tfzrwRzu1fTe8qbMQ7k4Ar5mM+Ja2VoUp8g@mail.gmail.com> <4EBD94B4.4050009@tilera.com> <20111111214214.BC66D2C0FE@topped-with-meat.com>
On 11/11/2011 4:42 PM, Roland McGrath wrote:
>> * elf/elf.h: This change adds the relevant Tilera ELF constants.
> elf.h always remains unified. If your constants and names are standardized
> to the extent that binutils trunk is using them, then we will harmonize.
Here's the final version, which matches what is in binutils. It has
changed slightly since the previous submission, since the tile gcc
maintainer and I worked out a somewhat better (forward-looking) model
for TLS support. (In particular, we now support IE and LE.)
2012-01-25 Chris Metcalf <cmetcalf@tilera.com>
* elf/elf.h (EM_NUM, EM_TILE*, R_TILE*): Add Tilera constants.
diff --git a/elf/elf.h b/elf/elf.h
index 7c64120..63659f3 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -1,5 +1,5 @@
/* This file defines standard ELF types, structures, and macros.
- Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009,2010,2011
+ Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009,2010,2011,2012
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -251,7 +251,9 @@ typedef struct
#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */
#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */
#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */
-#define EM_NUM 95
+#define EM_TILEPRO 188 /* Tilera TILEPro */
+#define EM_TILEGX 191 /* Tilera TILE-Gx */
+#define EM_NUM 192
/* If it is necessary to assign new unofficial EM_* values, please
pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the
@@ -2791,6 +2793,222 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_M32R_NUM 256 /* Keep this the last entry. */
+/* TILEPro relocations. */
+#define R_TILEPRO_NONE 0
+#define R_TILEPRO_32 1
+#define R_TILEPRO_16 2
+#define R_TILEPRO_8 3
+#define R_TILEPRO_32_PCREL 4
+#define R_TILEPRO_16_PCREL 5
+#define R_TILEPRO_8_PCREL 6
+#define R_TILEPRO_LO16 7
+#define R_TILEPRO_HI16 8
+#define R_TILEPRO_HA16 9
+#define R_TILEPRO_COPY 10
+#define R_TILEPRO_GLOB_DAT 11
+#define R_TILEPRO_JMP_SLOT 12
+#define R_TILEPRO_RELATIVE 13
+#define R_TILEPRO_BROFF_X1 14
+#define R_TILEPRO_JOFFLONG_X1 15
+#define R_TILEPRO_JOFFLONG_X1_PLT 16
+#define R_TILEPRO_IMM8_X0 17
+#define R_TILEPRO_IMM8_Y0 18
+#define R_TILEPRO_IMM8_X1 19
+#define R_TILEPRO_IMM8_Y1 20
+#define R_TILEPRO_MT_IMM15_X1 21
+#define R_TILEPRO_MF_IMM15_X1 22
+#define R_TILEPRO_IMM16_X0 23
+#define R_TILEPRO_IMM16_X1 24
+#define R_TILEPRO_IMM16_X0_LO 25
+#define R_TILEPRO_IMM16_X1_LO 26
+#define R_TILEPRO_IMM16_X0_HI 27
+#define R_TILEPRO_IMM16_X1_HI 28
+#define R_TILEPRO_IMM16_X0_HA 29
+#define R_TILEPRO_IMM16_X1_HA 30
+#define R_TILEPRO_IMM16_X0_PCREL 31
+#define R_TILEPRO_IMM16_X1_PCREL 32
+#define R_TILEPRO_IMM16_X0_LO_PCREL 33
+#define R_TILEPRO_IMM16_X1_LO_PCREL 34
+#define R_TILEPRO_IMM16_X0_HI_PCREL 35
+#define R_TILEPRO_IMM16_X1_HI_PCREL 36
+#define R_TILEPRO_IMM16_X0_HA_PCREL 37
+#define R_TILEPRO_IMM16_X1_HA_PCREL 38
+#define R_TILEPRO_IMM16_X0_GOT 39
+#define R_TILEPRO_IMM16_X1_GOT 40
+#define R_TILEPRO_IMM16_X0_GOT_LO 41
+#define R_TILEPRO_IMM16_X1_GOT_LO 42
+#define R_TILEPRO_IMM16_X0_GOT_HI 43
+#define R_TILEPRO_IMM16_X1_GOT_HI 44
+#define R_TILEPRO_IMM16_X0_GOT_HA 45
+#define R_TILEPRO_IMM16_X1_GOT_HA 46
+#define R_TILEPRO_MMSTART_X0 47
+#define R_TILEPRO_MMEND_X0 48
+#define R_TILEPRO_MMSTART_X1 49
+#define R_TILEPRO_MMEND_X1 50
+#define R_TILEPRO_SHAMT_X0 51
+#define R_TILEPRO_SHAMT_X1 52
+#define R_TILEPRO_SHAMT_Y0 53
+#define R_TILEPRO_SHAMT_Y1 54
+#define R_TILEPRO_DEST_IMM8_X1 55
+/* Relocs 56-59 are currently not defined. */
+#define R_TILEPRO_TLS_GD_CALL 60
+#define R_TILEPRO_IMM8_X0_TLS_GD_ADD 61
+#define R_TILEPRO_IMM8_X1_TLS_GD_ADD 62
+#define R_TILEPRO_IMM8_Y0_TLS_GD_ADD 63
+#define R_TILEPRO_IMM8_Y1_TLS_GD_ADD 64
+#define R_TILEPRO_TLS_IE_LOAD 65
+#define R_TILEPRO_IMM16_X0_TLS_GD 66
+#define R_TILEPRO_IMM16_X1_TLS_GD 67
+#define R_TILEPRO_IMM16_X0_TLS_GD_LO 68
+#define R_TILEPRO_IMM16_X1_TLS_GD_LO 69
+#define R_TILEPRO_IMM16_X0_TLS_GD_HI 70
+#define R_TILEPRO_IMM16_X1_TLS_GD_HI 71
+#define R_TILEPRO_IMM16_X0_TLS_GD_HA 72
+#define R_TILEPRO_IMM16_X1_TLS_GD_HA 73
+#define R_TILEPRO_IMM16_X0_TLS_IE 74
+#define R_TILEPRO_IMM16_X1_TLS_IE 75
+#define R_TILEPRO_IMM16_X0_TLS_IE_LO 76
+#define R_TILEPRO_IMM16_X1_TLS_IE_LO 77
+#define R_TILEPRO_IMM16_X0_TLS_IE_HI 78
+#define R_TILEPRO_IMM16_X1_TLS_IE_HI 79
+#define R_TILEPRO_IMM16_X0_TLS_IE_HA 80
+#define R_TILEPRO_IMM16_X1_TLS_IE_HA 81
+#define R_TILEPRO_TLS_DTPMOD32 82
+#define R_TILEPRO_TLS_DTPOFF32 83
+#define R_TILEPRO_TLS_TPOFF32 84
+#define R_TILEPRO_IMM16_X0_TLS_LE 85
+#define R_TILEPRO_IMM16_X1_TLS_LE 86
+#define R_TILEPRO_IMM16_X0_TLS_LE_LO 87
+#define R_TILEPRO_IMM16_X1_TLS_LE_LO 88
+#define R_TILEPRO_IMM16_X0_TLS_LE_HI 89
+#define R_TILEPRO_IMM16_X1_TLS_LE_HI 90
+#define R_TILEPRO_IMM16_X0_TLS_LE_HA 91
+#define R_TILEPRO_IMM16_X1_TLS_LE_HA 92
+
+
+#define R_TILEPRO_GNU_VTINHERIT 128
+#define R_TILEPRO_GNU_VTENTRY 129
+
+#define R_TILEPRO_NUM 130
+
+
+/* TILE-Gx relocations. */
+#define R_TILEGX_NONE 0
+#define R_TILEGX_64 1
+#define R_TILEGX_32 2
+#define R_TILEGX_16 3
+#define R_TILEGX_8 4
+#define R_TILEGX_64_PCREL 5
+#define R_TILEGX_32_PCREL 6
+#define R_TILEGX_16_PCREL 7
+#define R_TILEGX_8_PCREL 8
+#define R_TILEGX_HW0 9
+#define R_TILEGX_HW1 10
+#define R_TILEGX_HW2 11
+#define R_TILEGX_HW3 12
+#define R_TILEGX_HW0_LAST 13
+#define R_TILEGX_HW1_LAST 14
+#define R_TILEGX_HW2_LAST 15
+#define R_TILEGX_COPY 16
+#define R_TILEGX_GLOB_DAT 17
+#define R_TILEGX_JMP_SLOT 18
+#define R_TILEGX_RELATIVE 19
+#define R_TILEGX_BROFF_X1 20
+#define R_TILEGX_JUMPOFF_X1 21
+#define R_TILEGX_JUMPOFF_X1_PLT 22
+#define R_TILEGX_IMM8_X0 23
+#define R_TILEGX_IMM8_Y0 24
+#define R_TILEGX_IMM8_X1 25
+#define R_TILEGX_IMM8_Y1 26
+#define R_TILEGX_DEST_IMM8_X1 27
+#define R_TILEGX_MT_IMM14_X1 28
+#define R_TILEGX_MF_IMM14_X1 29
+#define R_TILEGX_MMSTART_X0 30
+#define R_TILEGX_MMEND_X0 31
+#define R_TILEGX_SHAMT_X0 32
+#define R_TILEGX_SHAMT_X1 33
+#define R_TILEGX_SHAMT_Y0 34
+#define R_TILEGX_SHAMT_Y1 35
+#define R_TILEGX_IMM16_X0_HW0 36
+#define R_TILEGX_IMM16_X1_HW0 37
+#define R_TILEGX_IMM16_X0_HW1 38
+#define R_TILEGX_IMM16_X1_HW1 39
+#define R_TILEGX_IMM16_X0_HW2 40
+#define R_TILEGX_IMM16_X1_HW2 41
+#define R_TILEGX_IMM16_X0_HW3 42
+#define R_TILEGX_IMM16_X1_HW3 43
+#define R_TILEGX_IMM16_X0_HW0_LAST 44
+#define R_TILEGX_IMM16_X1_HW0_LAST 45
+#define R_TILEGX_IMM16_X0_HW1_LAST 46
+#define R_TILEGX_IMM16_X1_HW1_LAST 47
+#define R_TILEGX_IMM16_X0_HW2_LAST 48
+#define R_TILEGX_IMM16_X1_HW2_LAST 49
+#define R_TILEGX_IMM16_X0_HW0_PCREL 50
+#define R_TILEGX_IMM16_X1_HW0_PCREL 51
+#define R_TILEGX_IMM16_X0_HW1_PCREL 52
+#define R_TILEGX_IMM16_X1_HW1_PCREL 53
+#define R_TILEGX_IMM16_X0_HW2_PCREL 54
+#define R_TILEGX_IMM16_X1_HW2_PCREL 55
+#define R_TILEGX_IMM16_X0_HW3_PCREL 56
+#define R_TILEGX_IMM16_X1_HW3_PCREL 57
+#define R_TILEGX_IMM16_X0_HW0_LAST_PCREL 58
+#define R_TILEGX_IMM16_X1_HW0_LAST_PCREL 59
+#define R_TILEGX_IMM16_X0_HW1_LAST_PCREL 60
+#define R_TILEGX_IMM16_X1_HW1_LAST_PCREL 61
+#define R_TILEGX_IMM16_X0_HW2_LAST_PCREL 62
+#define R_TILEGX_IMM16_X1_HW2_LAST_PCREL 63
+#define R_TILEGX_IMM16_X0_HW0_GOT 64
+#define R_TILEGX_IMM16_X1_HW0_GOT 65
+/* Relocs 66-71 are currently not defined. */
+#define R_TILEGX_IMM16_X0_HW0_LAST_GOT 72
+#define R_TILEGX_IMM16_X1_HW0_LAST_GOT 73
+#define R_TILEGX_IMM16_X0_HW1_LAST_GOT 74
+#define R_TILEGX_IMM16_X1_HW1_LAST_GOT 75
+/* Relocs 76-77 are currently not defined. */
+#define R_TILEGX_IMM16_X0_HW0_TLS_GD 78
+#define R_TILEGX_IMM16_X1_HW0_TLS_GD 79
+#define R_TILEGX_IMM16_X0_HW0_TLS_LE 80
+#define R_TILEGX_IMM16_X1_HW0_TLS_LE 81
+#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE 82
+#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE 83
+#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE 84
+#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE 85
+#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD 86
+#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD 87
+#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD 88
+#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD 89
+/* Relocs 90-91 are currently not defined. */
+#define R_TILEGX_IMM16_X0_HW0_TLS_IE 92
+#define R_TILEGX_IMM16_X1_HW0_TLS_IE 93
+/* Relocs 94-99 are currently not defined. */
+#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE 100
+#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE 101
+#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE 102
+#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE 103
+/* Relocs 104-105 are currently not defined. */
+#define R_TILEGX_TLS_DTPMOD64 106
+#define R_TILEGX_TLS_DTPOFF64 107
+#define R_TILEGX_TLS_TPOFF64 108
+#define R_TILEGX_TLS_DTPMOD32 109
+#define R_TILEGX_TLS_DTPOFF32 110
+#define R_TILEGX_TLS_TPOFF32 111
+#define R_TILEGX_TLS_GD_CALL 112
+#define R_TILEGX_IMM8_X0_TLS_GD_ADD 113
+#define R_TILEGX_IMM8_X1_TLS_GD_ADD 114
+#define R_TILEGX_IMM8_Y0_TLS_GD_ADD 115
+#define R_TILEGX_IMM8_Y1_TLS_GD_ADD 116
+#define R_TILEGX_TLS_IE_LOAD 117
+#define R_TILEGX_IMM8_X0_TLS_ADD 118
+#define R_TILEGX_IMM8_X1_TLS_ADD 119
+#define R_TILEGX_IMM8_Y0_TLS_ADD 120
+#define R_TILEGX_IMM8_Y1_TLS_ADD 121
+
+#define R_TILEGX_GNU_VTINHERIT 128
+#define R_TILEGX_GNU_VTENTRY 129
+
+#define R_TILEGX_NUM 130
+
+
__END_DECLS
#endif /* elf.h */
--
Chris Metcalf, Tilera Corp.
http://www.tilera.com