175fd0b74Schristos /* TILE-Gx ELF support for BFD. 2*e992f068Schristos Copyright (C) 2011-2022 Free Software Foundation, Inc. 375fd0b74Schristos 475fd0b74Schristos This file is part of BFD, the Binary File Descriptor library. 575fd0b74Schristos 675fd0b74Schristos This program is free software; you can redistribute it and/or modify 775fd0b74Schristos it under the terms of the GNU General Public License as published by 875fd0b74Schristos the Free Software Foundation; either version 3 of the License, or 975fd0b74Schristos (at your option) any later version. 1075fd0b74Schristos 1175fd0b74Schristos This program is distributed in the hope that it will be useful, 1275fd0b74Schristos but WITHOUT ANY WARRANTY; without even the implied warranty of 1375fd0b74Schristos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1475fd0b74Schristos GNU General Public License for more details. 1575fd0b74Schristos 1675fd0b74Schristos You should have received a copy of the GNU General Public License 1775fd0b74Schristos along with this program; if not, write to the Free Software 1875fd0b74Schristos Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 1975fd0b74Schristos MA 02110-1301, USA. */ 2075fd0b74Schristos 2175fd0b74Schristos #ifndef _ELF_TILEGX_H 2275fd0b74Schristos #define _ELF_TILEGX_H 2375fd0b74Schristos 2475fd0b74Schristos #include "elf/reloc-macros.h" 2575fd0b74Schristos 2675fd0b74Schristos /* Relocations. */ 2775fd0b74Schristos START_RELOC_NUMBERS (elf_tilegx_reloc_type) 2875fd0b74Schristos RELOC_NUMBER (R_TILEGX_NONE, 0) 2975fd0b74Schristos 3075fd0b74Schristos /* Standard relocations */ 3175fd0b74Schristos RELOC_NUMBER (R_TILEGX_64, 1) 3275fd0b74Schristos RELOC_NUMBER (R_TILEGX_32, 2) 3375fd0b74Schristos RELOC_NUMBER (R_TILEGX_16, 3) 3475fd0b74Schristos RELOC_NUMBER (R_TILEGX_8, 4) 3575fd0b74Schristos RELOC_NUMBER (R_TILEGX_64_PCREL, 5) 3675fd0b74Schristos RELOC_NUMBER (R_TILEGX_32_PCREL, 6) 3775fd0b74Schristos RELOC_NUMBER (R_TILEGX_16_PCREL, 7) 3875fd0b74Schristos RELOC_NUMBER (R_TILEGX_8_PCREL, 8) 3975fd0b74Schristos 4075fd0b74Schristos /* Custom relocations */ 4175fd0b74Schristos 4275fd0b74Schristos RELOC_NUMBER (R_TILEGX_HW0, 9) 4375fd0b74Schristos RELOC_NUMBER (R_TILEGX_HW1, 10) 4475fd0b74Schristos RELOC_NUMBER (R_TILEGX_HW2, 11) 4575fd0b74Schristos RELOC_NUMBER (R_TILEGX_HW3, 12) 4675fd0b74Schristos RELOC_NUMBER (R_TILEGX_HW0_LAST, 13) 4775fd0b74Schristos RELOC_NUMBER (R_TILEGX_HW1_LAST, 14) 4875fd0b74Schristos RELOC_NUMBER (R_TILEGX_HW2_LAST, 15) 4975fd0b74Schristos 5075fd0b74Schristos RELOC_NUMBER (R_TILEGX_COPY, 16) 5175fd0b74Schristos RELOC_NUMBER (R_TILEGX_GLOB_DAT, 17) 5275fd0b74Schristos RELOC_NUMBER (R_TILEGX_JMP_SLOT, 18) 5375fd0b74Schristos RELOC_NUMBER (R_TILEGX_RELATIVE, 19) 5475fd0b74Schristos 5575fd0b74Schristos /* Branch/jump offsets */ 5675fd0b74Schristos RELOC_NUMBER (R_TILEGX_BROFF_X1, 20) 5775fd0b74Schristos RELOC_NUMBER (R_TILEGX_JUMPOFF_X1, 21) 5875fd0b74Schristos RELOC_NUMBER (R_TILEGX_JUMPOFF_X1_PLT, 22) 5975fd0b74Schristos 6075fd0b74Schristos /* Immediate operands. */ 6175fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_X0, 23) 6275fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_Y0, 24) 6375fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_X1, 25) 6475fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_Y1, 26) 6575fd0b74Schristos RELOC_NUMBER (R_TILEGX_DEST_IMM8_X1, 27) 6675fd0b74Schristos RELOC_NUMBER (R_TILEGX_MT_IMM14_X1, 28) 6775fd0b74Schristos RELOC_NUMBER (R_TILEGX_MF_IMM14_X1, 29) 6875fd0b74Schristos RELOC_NUMBER (R_TILEGX_MMSTART_X0, 30) 6975fd0b74Schristos RELOC_NUMBER (R_TILEGX_MMEND_X0, 31) 7075fd0b74Schristos RELOC_NUMBER (R_TILEGX_SHAMT_X0, 32) 7175fd0b74Schristos RELOC_NUMBER (R_TILEGX_SHAMT_X1, 33) 7275fd0b74Schristos RELOC_NUMBER (R_TILEGX_SHAMT_Y0, 34) 7375fd0b74Schristos RELOC_NUMBER (R_TILEGX_SHAMT_Y1, 35) 7475fd0b74Schristos 7575fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0, 36) 7675fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0, 37) 7775fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1, 38) 7875fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1, 39) 7975fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2, 40) 8075fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2, 41) 8175fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW3, 42) 8275fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW3, 43) 8375fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST, 44) 8475fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST, 45) 8575fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST, 46) 8675fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST, 47) 8775fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_LAST, 48) 8875fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_LAST, 49) 8975fd0b74Schristos 9075fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_PCREL, 50) 9175fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_PCREL, 51) 9275fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_PCREL, 52) 9375fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_PCREL, 53) 9475fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_PCREL, 54) 9575fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_PCREL, 55) 9675fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW3_PCREL, 56) 9775fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW3_PCREL, 57) 9875fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_PCREL, 58) 9975fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_PCREL, 59) 10075fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_PCREL, 60) 10175fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_PCREL, 61) 10275fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_LAST_PCREL, 62) 10375fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_LAST_PCREL, 63) 10475fd0b74Schristos 10575fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_GOT, 64) 10675fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_GOT, 65) 10775fd0b74Schristos 10875fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_PLT_PCREL, 66) 10975fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_PLT_PCREL, 67) 11075fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_PLT_PCREL, 68) 11175fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_PLT_PCREL, 69) 11275fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_PLT_PCREL, 70) 11375fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_PLT_PCREL, 71) 11475fd0b74Schristos 11575fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_GOT, 72) 11675fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_GOT, 73) 11775fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_GOT, 74) 11875fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_GOT, 75) 11975fd0b74Schristos 12075fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW3_PLT_PCREL, 76) 12175fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW3_PLT_PCREL, 77) 12275fd0b74Schristos 12375fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_TLS_GD, 78) 12475fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_TLS_GD, 79) 12575fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_TLS_LE, 80) 12675fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_TLS_LE, 81) 12775fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE, 82) 12875fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE, 83) 12975fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE, 84) 13075fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE, 85) 13175fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD, 86) 13275fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD, 87) 13375fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD, 88) 13475fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD, 89) 13575fd0b74Schristos /* Relocs 90-91 are currently not defined. */ 13675fd0b74Schristos 13775fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_TLS_IE, 92) 13875fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_TLS_IE, 93) 13975fd0b74Schristos 14075fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL, 94) 14175fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL, 95) 14275fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL, 96) 14375fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL, 97) 14475fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL, 98) 14575fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL, 99) 14675fd0b74Schristos 14775fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE, 100) 14875fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE, 101) 14975fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE, 102) 15075fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE, 103) 15175fd0b74Schristos /* Relocs 104-105 are currently not defined. */ 15275fd0b74Schristos 15375fd0b74Schristos RELOC_NUMBER (R_TILEGX_TLS_DTPMOD64, 106) 15475fd0b74Schristos RELOC_NUMBER (R_TILEGX_TLS_DTPOFF64, 107) 15575fd0b74Schristos RELOC_NUMBER (R_TILEGX_TLS_TPOFF64, 108) 15675fd0b74Schristos RELOC_NUMBER (R_TILEGX_TLS_DTPMOD32, 109) 15775fd0b74Schristos RELOC_NUMBER (R_TILEGX_TLS_DTPOFF32, 110) 15875fd0b74Schristos RELOC_NUMBER (R_TILEGX_TLS_TPOFF32, 111) 15975fd0b74Schristos 16075fd0b74Schristos RELOC_NUMBER (R_TILEGX_TLS_GD_CALL, 112) 16175fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_X0_TLS_GD_ADD, 113) 16275fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_X1_TLS_GD_ADD, 114) 16375fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_Y0_TLS_GD_ADD, 115) 16475fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_Y1_TLS_GD_ADD, 116) 16575fd0b74Schristos RELOC_NUMBER (R_TILEGX_TLS_IE_LOAD, 117) 16675fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_X0_TLS_ADD, 118) 16775fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_X1_TLS_ADD, 119) 16875fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_Y0_TLS_ADD, 120) 16975fd0b74Schristos RELOC_NUMBER (R_TILEGX_IMM8_Y1_TLS_ADD, 121) 17075fd0b74Schristos 17175fd0b74Schristos /* These are GNU extensions to enable C++ vtable garbage collection. */ 17275fd0b74Schristos RELOC_NUMBER (R_TILEGX_GNU_VTINHERIT, 128) 17375fd0b74Schristos RELOC_NUMBER (R_TILEGX_GNU_VTENTRY, 129) 17475fd0b74Schristos END_RELOC_NUMBERS (R_TILEGX_max) 17575fd0b74Schristos 17675fd0b74Schristos #endif /* _ELF_TILEGX_H */ 177