This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v2 0/10] Tilera (and Linux asm-generic) support for glibc


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 directly, and are
prepared to do the work to support LE transparently when we get the
time to spend on it.)

2011-12-03  Chris Metcalf  <cmetcalf@tilera.com>

	* elf/elf.h: Include Tilera machine types and relocation values.

diff --git a/elf/elf.h b/elf/elf.h
index 7c64120..42c27c4 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -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,205 @@ 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_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
+/* Relocs 80-85 are currently not defined.  */
+#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_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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]