1 /* TILEPro ELF support for BFD. 2 Copyright (C) 2011-2016 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_TILEPRO_H 22 #define _ELF_TILEPRO_H 23 24 #include "elf/reloc-macros.h" 25 26 /* Relocations. */ 27 START_RELOC_NUMBERS (elf_tilepro_reloc_type) 28 RELOC_NUMBER (R_TILEPRO_NONE, 0) 29 30 /* Standard relocations */ 31 RELOC_NUMBER (R_TILEPRO_32, 1) 32 RELOC_NUMBER (R_TILEPRO_16, 2) 33 RELOC_NUMBER (R_TILEPRO_8, 3) 34 RELOC_NUMBER (R_TILEPRO_32_PCREL, 4) 35 RELOC_NUMBER (R_TILEPRO_16_PCREL, 5) 36 RELOC_NUMBER (R_TILEPRO_8_PCREL, 6) 37 38 RELOC_NUMBER (R_TILEPRO_LO16, 7) 39 RELOC_NUMBER (R_TILEPRO_HI16, 8) 40 RELOC_NUMBER (R_TILEPRO_HA16, 9) 41 42 RELOC_NUMBER (R_TILEPRO_COPY, 10) 43 RELOC_NUMBER (R_TILEPRO_GLOB_DAT, 11) 44 RELOC_NUMBER (R_TILEPRO_JMP_SLOT, 12) 45 RELOC_NUMBER (R_TILEPRO_RELATIVE, 13) 46 47 /* Branch/jump offsets */ 48 RELOC_NUMBER (R_TILEPRO_BROFF_X1, 14) 49 RELOC_NUMBER (R_TILEPRO_JOFFLONG_X1, 15) 50 RELOC_NUMBER (R_TILEPRO_JOFFLONG_X1_PLT, 16) 51 52 /* Immediate operands. */ 53 RELOC_NUMBER (R_TILEPRO_IMM8_X0, 17) 54 RELOC_NUMBER (R_TILEPRO_IMM8_Y0, 18) 55 RELOC_NUMBER (R_TILEPRO_IMM8_X1, 19) 56 RELOC_NUMBER (R_TILEPRO_IMM8_Y1, 20) 57 RELOC_NUMBER (R_TILEPRO_MT_IMM15_X1, 21) 58 RELOC_NUMBER (R_TILEPRO_MF_IMM15_X1, 22) 59 60 RELOC_NUMBER (R_TILEPRO_IMM16_X0, 23) 61 RELOC_NUMBER (R_TILEPRO_IMM16_X1, 24) 62 RELOC_NUMBER (R_TILEPRO_IMM16_X0_LO, 25) 63 RELOC_NUMBER (R_TILEPRO_IMM16_X1_LO, 26) 64 RELOC_NUMBER (R_TILEPRO_IMM16_X0_HI, 27) 65 RELOC_NUMBER (R_TILEPRO_IMM16_X1_HI, 28) 66 RELOC_NUMBER (R_TILEPRO_IMM16_X0_HA, 29) 67 RELOC_NUMBER (R_TILEPRO_IMM16_X1_HA, 30) 68 69 RELOC_NUMBER (R_TILEPRO_IMM16_X0_PCREL, 31) 70 RELOC_NUMBER (R_TILEPRO_IMM16_X1_PCREL, 32) 71 RELOC_NUMBER (R_TILEPRO_IMM16_X0_LO_PCREL, 33) 72 RELOC_NUMBER (R_TILEPRO_IMM16_X1_LO_PCREL, 34) 73 RELOC_NUMBER (R_TILEPRO_IMM16_X0_HI_PCREL, 35) 74 RELOC_NUMBER (R_TILEPRO_IMM16_X1_HI_PCREL, 36) 75 RELOC_NUMBER (R_TILEPRO_IMM16_X0_HA_PCREL, 37) 76 RELOC_NUMBER (R_TILEPRO_IMM16_X1_HA_PCREL, 38) 77 78 RELOC_NUMBER (R_TILEPRO_IMM16_X0_GOT, 39) 79 RELOC_NUMBER (R_TILEPRO_IMM16_X1_GOT, 40) 80 RELOC_NUMBER (R_TILEPRO_IMM16_X0_GOT_LO, 41) 81 RELOC_NUMBER (R_TILEPRO_IMM16_X1_GOT_LO, 42) 82 RELOC_NUMBER (R_TILEPRO_IMM16_X0_GOT_HI, 43) 83 RELOC_NUMBER (R_TILEPRO_IMM16_X1_GOT_HI, 44) 84 RELOC_NUMBER (R_TILEPRO_IMM16_X0_GOT_HA, 45) 85 RELOC_NUMBER (R_TILEPRO_IMM16_X1_GOT_HA, 46) 86 87 RELOC_NUMBER (R_TILEPRO_MMSTART_X0, 47) 88 RELOC_NUMBER (R_TILEPRO_MMEND_X0, 48) 89 RELOC_NUMBER (R_TILEPRO_MMSTART_X1, 49) 90 RELOC_NUMBER (R_TILEPRO_MMEND_X1, 50) 91 92 RELOC_NUMBER (R_TILEPRO_SHAMT_X0, 51) 93 RELOC_NUMBER (R_TILEPRO_SHAMT_X1, 52) 94 RELOC_NUMBER (R_TILEPRO_SHAMT_Y0, 53) 95 RELOC_NUMBER (R_TILEPRO_SHAMT_Y1, 54) 96 97 RELOC_NUMBER (R_TILEPRO_DEST_IMM8_X1, 55) 98 99 /* Relocs 56-59 are currently not defined. */ 100 101 RELOC_NUMBER (R_TILEPRO_TLS_GD_CALL, 60) 102 RELOC_NUMBER (R_TILEPRO_IMM8_X0_TLS_GD_ADD, 61) 103 RELOC_NUMBER (R_TILEPRO_IMM8_X1_TLS_GD_ADD, 62) 104 RELOC_NUMBER (R_TILEPRO_IMM8_Y0_TLS_GD_ADD, 63) 105 RELOC_NUMBER (R_TILEPRO_IMM8_Y1_TLS_GD_ADD, 64) 106 RELOC_NUMBER (R_TILEPRO_TLS_IE_LOAD, 65) 107 108 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_GD, 66) 109 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_GD, 67) 110 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_GD_LO, 68) 111 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_GD_LO, 69) 112 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_GD_HI, 70) 113 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_GD_HI, 71) 114 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_GD_HA, 72) 115 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_GD_HA, 73) 116 117 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_IE, 74) 118 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_IE, 75) 119 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_IE_LO, 76) 120 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_IE_LO, 77) 121 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_IE_HI, 78) 122 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_IE_HI, 79) 123 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_IE_HA, 80) 124 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_IE_HA, 81) 125 126 RELOC_NUMBER (R_TILEPRO_TLS_DTPMOD32, 82) 127 RELOC_NUMBER (R_TILEPRO_TLS_DTPOFF32, 83) 128 RELOC_NUMBER (R_TILEPRO_TLS_TPOFF32, 84) 129 130 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_LE, 85) 131 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_LE, 86) 132 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_LE_LO, 87) 133 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_LE_LO, 88) 134 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_LE_HI, 89) 135 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_LE_HI, 90) 136 RELOC_NUMBER (R_TILEPRO_IMM16_X0_TLS_LE_HA, 91) 137 RELOC_NUMBER (R_TILEPRO_IMM16_X1_TLS_LE_HA, 92) 138 139 /* These are GNU extensions to enable C++ vtable garbage collection. */ 140 RELOC_NUMBER (R_TILEPRO_GNU_VTINHERIT, 128) 141 RELOC_NUMBER (R_TILEPRO_GNU_VTENTRY, 129) 142 END_RELOC_NUMBERS (R_TILEPRO_max) 143 144 #endif /* _ELF_TILEPRO_H */ 145