Subversion Repositories Kolibri OS

Rev

Rev 5191 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* TILE-Gx ELF support for BFD.
  2.    Copyright (C) 2011-2015 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.