Home | History | Annotate | Download | only in elf
      1 /* TILE-Gx ELF support for BFD.
      2    Copyright (C) 2011-2014 Free Software Foundation, Inc.
      3 
      4    This file is part of BFD, the Binary File Descriptor library.
      5 
      6    This program is free software; you can redistribute it and/or modify
      7    it under the terms of the GNU General Public License as published by
      8    the Free Software Foundation; either version 3 of the License, or
      9    (at your option) any later version.
     10 
     11    This program is distributed in the hope that it will be useful,
     12    but WITHOUT ANY WARRANTY; without even the implied warranty of
     13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14    GNU General Public License for more details.
     15 
     16    You should have received a copy of the GNU General Public License
     17    along with this program; if not, write to the Free Software
     18    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
     19    MA 02110-1301, USA.  */
     20 
     21 #ifndef _ELF_TILEGX_H
     22 #define _ELF_TILEGX_H
     23 
     24 #include "elf/reloc-macros.h"
     25 
     26 /* Relocations.  */
     27 START_RELOC_NUMBERS (elf_tilegx_reloc_type)
     28   RELOC_NUMBER (R_TILEGX_NONE,              0)
     29 
     30   /* Standard relocations */
     31   RELOC_NUMBER (R_TILEGX_64,                1)
     32   RELOC_NUMBER (R_TILEGX_32,                2)
     33   RELOC_NUMBER (R_TILEGX_16,                3)
     34   RELOC_NUMBER (R_TILEGX_8,                 4)
     35   RELOC_NUMBER (R_TILEGX_64_PCREL,          5)
     36   RELOC_NUMBER (R_TILEGX_32_PCREL,          6)
     37   RELOC_NUMBER (R_TILEGX_16_PCREL,          7)
     38   RELOC_NUMBER (R_TILEGX_8_PCREL,           8)
     39 
     40   /* Custom relocations */
     41 
     42   RELOC_NUMBER (R_TILEGX_HW0,               9)
     43   RELOC_NUMBER (R_TILEGX_HW1,               10)
     44   RELOC_NUMBER (R_TILEGX_HW2,               11)
     45   RELOC_NUMBER (R_TILEGX_HW3,               12)
     46   RELOC_NUMBER (R_TILEGX_HW0_LAST,          13)
     47   RELOC_NUMBER (R_TILEGX_HW1_LAST,          14)
     48   RELOC_NUMBER (R_TILEGX_HW2_LAST,          15)
     49 
     50   RELOC_NUMBER (R_TILEGX_COPY,              16)
     51   RELOC_NUMBER (R_TILEGX_GLOB_DAT,          17)
     52   RELOC_NUMBER (R_TILEGX_JMP_SLOT,          18)
     53   RELOC_NUMBER (R_TILEGX_RELATIVE,          19)
     54 
     55   /* Branch/jump offsets */
     56   RELOC_NUMBER (R_TILEGX_BROFF_X1,          20)
     57   RELOC_NUMBER (R_TILEGX_JUMPOFF_X1,        21)
     58   RELOC_NUMBER (R_TILEGX_JUMPOFF_X1_PLT,    22)
     59 
     60   /* Immediate operands. */
     61   RELOC_NUMBER (R_TILEGX_IMM8_X0,           23)
     62   RELOC_NUMBER (R_TILEGX_IMM8_Y0,           24)
     63   RELOC_NUMBER (R_TILEGX_IMM8_X1,           25)
     64   RELOC_NUMBER (R_TILEGX_IMM8_Y1,           26)
     65   RELOC_NUMBER (R_TILEGX_DEST_IMM8_X1,      27)
     66   RELOC_NUMBER (R_TILEGX_MT_IMM14_X1,       28)
     67   RELOC_NUMBER (R_TILEGX_MF_IMM14_X1,       29)
     68   RELOC_NUMBER (R_TILEGX_MMSTART_X0,        30)
     69   RELOC_NUMBER (R_TILEGX_MMEND_X0,          31)
     70   RELOC_NUMBER (R_TILEGX_SHAMT_X0,          32)
     71   RELOC_NUMBER (R_TILEGX_SHAMT_X1,          33)
     72   RELOC_NUMBER (R_TILEGX_SHAMT_Y0,          34)
     73   RELOC_NUMBER (R_TILEGX_SHAMT_Y1,          35)
     74 
     75   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0,       36)
     76   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0,       37)
     77   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1,       38)
     78   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1,       39)
     79   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2,       40)
     80   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2,       41)
     81   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW3,       42)
     82   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW3,       43)
     83   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST,  44)
     84   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST,  45)
     85   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST,  46)
     86   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST,  47)
     87   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_LAST,  48)
     88   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_LAST,  49)
     89 
     90   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_PCREL,        50)
     91   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_PCREL,        51)
     92   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_PCREL,        52)
     93   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_PCREL,        53)
     94   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_PCREL,        54)
     95   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_PCREL,        55)
     96   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW3_PCREL,        56)
     97   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW3_PCREL,        57)
     98   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_PCREL,   58)
     99   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_PCREL,   59)
    100   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_PCREL,   60)
    101   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_PCREL,   61)
    102   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_LAST_PCREL,   62)
    103   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_LAST_PCREL,   63)
    104 
    105   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_GOT,          64)
    106   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_GOT,          65)
    107 
    108   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_PLT_PCREL,    66)
    109   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_PLT_PCREL,    67)
    110   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_PLT_PCREL,    68)
    111   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_PLT_PCREL,    69)
    112   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_PLT_PCREL,    70)
    113   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_PLT_PCREL,    71)
    114 
    115   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_GOT,     72)
    116   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_GOT,     73)
    117   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_GOT,     74)
    118   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_GOT,     75)
    119 
    120   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW3_PLT_PCREL,    76)
    121   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW3_PLT_PCREL,    77)
    122 
    123   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_TLS_GD,       78)
    124   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_TLS_GD,       79)
    125   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_TLS_LE,       80)
    126   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_TLS_LE,       81)
    127   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE,  82)
    128   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE,  83)
    129   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE,  84)
    130   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE,  85)
    131   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD,  86)
    132   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD,  87)
    133   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD,  88)
    134   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD,  89)
    135   /* Relocs 90-91 are currently not defined.  */
    136 
    137   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_TLS_IE,       92)
    138   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_TLS_IE,       93)
    139 
    140   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL, 94)
    141   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL, 95)
    142   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL, 96)
    143   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL, 97)
    144   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL, 98)
    145   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL, 99)
    146 
    147   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE, 100)
    148   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE, 101)
    149   RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE, 102)
    150   RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE, 103)
    151   /* Relocs 104-105 are currently not defined.  */
    152 
    153   RELOC_NUMBER (R_TILEGX_TLS_DTPMOD64,             106)
    154   RELOC_NUMBER (R_TILEGX_TLS_DTPOFF64,             107)
    155   RELOC_NUMBER (R_TILEGX_TLS_TPOFF64,              108)
    156   RELOC_NUMBER (R_TILEGX_TLS_DTPMOD32,             109)
    157   RELOC_NUMBER (R_TILEGX_TLS_DTPOFF32,             110)
    158   RELOC_NUMBER (R_TILEGX_TLS_TPOFF32,              111)
    159 
    160   RELOC_NUMBER (R_TILEGX_TLS_GD_CALL,              112)
    161   RELOC_NUMBER (R_TILEGX_IMM8_X0_TLS_GD_ADD,       113)
    162   RELOC_NUMBER (R_TILEGX_IMM8_X1_TLS_GD_ADD,       114)
    163   RELOC_NUMBER (R_TILEGX_IMM8_Y0_TLS_GD_ADD,       115)
    164   RELOC_NUMBER (R_TILEGX_IMM8_Y1_TLS_GD_ADD,       116)
    165   RELOC_NUMBER (R_TILEGX_TLS_IE_LOAD,              117)
    166   RELOC_NUMBER (R_TILEGX_IMM8_X0_TLS_ADD,          118)
    167   RELOC_NUMBER (R_TILEGX_IMM8_X1_TLS_ADD,          119)
    168   RELOC_NUMBER (R_TILEGX_IMM8_Y0_TLS_ADD,          120)
    169   RELOC_NUMBER (R_TILEGX_IMM8_Y1_TLS_ADD,          121)
    170 
    171 /* These are GNU extensions to enable C++ vtable garbage collection.  */
    172   RELOC_NUMBER (R_TILEGX_GNU_VTINHERIT, 128)
    173   RELOC_NUMBER (R_TILEGX_GNU_VTENTRY, 129)
    174 END_RELOC_NUMBERS (R_TILEGX_max)
    175 
    176 #endif /* _ELF_TILEGX_H */
    177