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