1 /* 2 Copyright (C) 2007-2012 David Anderson. All Rights Reserved. 3 Portions Copyright (C) 2012 SN Systems Ltd. All rights reserved. 4 5 This program is free software; you can redistribute it and/or modify it 6 under the terms of version 2.1 of the GNU Lesser General Public License 7 as published by the Free Software Foundation. 8 9 This program is distributed in the hope that it would be useful, but 10 WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 13 Further, this software is distributed without any warranty that it is 14 free of the rightful claim of any third person regarding infringement 15 or the like. Any license provided herein, whether implied or 16 otherwise, applies only to this software file. Patent licenses, if 17 any, provided herein do not apply to combinations of this program with 18 other software, or any other product whatsoever. 19 20 You should have received a copy of the GNU Lesser General Public License along 21 with this program; if not, write the Free Software Foundation, Inc., 51 22 Franklin Street - Fifth Floor, Boston MA 02110-1301, USA. 23 */ 24 25 #ifndef DWARF_RELOC_ARM_H 26 #define DWARF_RELOC_ARM_H 27 28 /* Definitions for ARM */ 29 #define DWARF_RELOC_ARM 30 31 #ifndef EM_AARCH64 32 #define EM_AARCH64 183 /* Arm 64 */ 33 #endif 34 35 36 /* Include the definitions only in the case of Windows */ 37 #ifdef _WIN32 38 /* Relocation types for ARM */ 39 #define R_ARM_NONE 0 40 #define R_ARM_PC24 1 41 #define R_ARM_ABS32 2 42 #define R_ARM_REL32 3 43 #define R_ARM_LDR_PC_G0 4 44 #define R_ARM_ABS16 5 45 #define R_ARM_ABS12 6 46 #define R_ARM_THM_ABS5 7 47 #define R_ARM_ABS8 8 48 #define R_ARM_SBREL32 9 49 #define R_ARM_THM_CALL 10 50 #define R_ARM_THM_PC8 11 51 #define R_ARM_BREL_ADJ 12 52 #define R_ARM_TLS_DESC 13 53 #define R_ARM_THM_SWI8 14 54 #define R_ARM_XPC25 15 55 #define R_ARM_THM_XPC22 16 56 #define R_ARM_TLS_DTPMOD32 17 57 #define R_ARM_TLS_DTPOFF32 18 58 #define R_ARM_TLS_TPOFF32 19 59 #define R_ARM_COPY 20 60 #define R_ARM_GLOB_DAT 21 61 #define R_ARM_JUMP_SLOT 22 62 #define R_ARM_RELATIVE 23 63 #define R_ARM_GOTOFF32 24 64 #define R_ARM_BASE_PREL 25 65 #define R_ARM_GOT_BREL 26 66 #define R_ARM_PLT32 27 67 #define R_ARM_CALL 28 68 #define R_ARM_JUMP24 29 69 #define R_ARM_THM_JUMP24 30 70 #define R_ARM_BASE_ABS 31 71 #define R_ARM_ALU_PCREL_7_0 32 72 #define R_ARM_ALU_PCREL_15_8 33 73 #define R_ARM_ALU_PCREL_23_15 34 74 #define R_ARM_LDR_SBREL_11_0_NC 35 75 #define R_ARM_ALU_SBREL_19_12_NC 36 76 #define R_ARM_ALU_SBREL_27_20_CK 37 77 #define R_ARM_TARGET1 38 78 #define R_ARM_SBREL31 39 79 #define R_ARM_V4BX 40 80 #define R_ARM_TARGET2 41 81 #define R_ARM_PREL31 42 82 #define R_ARM_MOVW_ABS_NC 43 83 #define R_ARM_MOVT_ABS 44 84 #define R_ARM_MOVW_PREL_NC 45 85 #define R_ARM_MOVT_PREL 46 86 #define R_ARM_THM_MOVW_ABS_NC 47 87 #define R_ARM_THM_MOVT_ABS 48 88 #define R_ARM_THM_MOVW_PREL_NC 49 89 #define R_ARM_THM_MOVT_PREL 50 90 #define R_ARM_THM_JUMP19 51 91 #define R_ARM_THM_JUMP6 52 92 #define R_ARM_THM_ALU_PREL_11_0 53 93 #define R_ARM_THM_PC12 54 94 #define R_ARM_ABS32_NOI 55 95 #define R_ARM_REL32_NOI 56 96 #define R_ARM_ALU_PC_G0_NC 57 97 #define R_ARM_ALU_PC_G0 58 98 #define R_ARM_ALU_PC_G1_NC 59 99 #define R_ARM_ALU_PC_G1 60 100 #define R_ARM_ALU_PC_G2 61 101 #define R_ARM_LDR_PC_G1 62 102 #define R_ARM_LDR_PC_G2 63 103 #define R_ARM_LDRS_PC_G0 64 104 #define R_ARM_LDRS_PC_G1 65 105 #define R_ARM_LDRS_PC_G2 66 106 #define R_ARM_LDC_PC_G0 67 107 #define R_ARM_LDC_PC_G1 68 108 #define R_ARM_LDC_PC_G2 69 109 #define R_ARM_ALU_SB_G0_NC 70 110 #define R_ARM_ALU_SB_G0 71 111 #define R_ARM_ALU_SB_G1_NC 72 112 #define R_ARM_ALU_SB_G1 73 113 #define R_ARM_ALU_SB_G2 74 114 #define R_ARM_LDR_SB_G0 75 115 #define R_ARM_LDR_SB_G1 76 116 #define R_ARM_LDR_SB_G2 77 117 #define R_ARM_LDRS_SB_G0 78 118 #define R_ARM_LDRS_SB_G1 79 119 #define R_ARM_LDRS_SB_G2 80 120 #define R_ARM_LDC_SB_G0 81 121 #define R_ARM_LDC_SB_G1 82 122 #define R_ARM_LDC_SB_G2 83 123 #define R_ARM_MOVW_BREL_NC 84 124 #define R_ARM_MOVT_BREL 85 125 #define R_ARM_MOVW_BREL 86 126 #define R_ARM_THM_MOVW_BREL_NC 87 127 #define R_ARM_THM_MOVT_BREL 88 128 #define R_ARM_THM_MOVW_BREL 89 129 #define R_ARM_TLS_GOTDESC 90 130 #define R_ARM_TLS_CALL 91 131 #define R_ARM_TLS_DESCSEQ 92 132 #define R_ARM_THM_TLS_CALL 93 133 #define R_ARM_PLT32_ABS 94 134 #define R_ARM_GOT_ABS 95 135 #define R_ARM_GOT_PREL 96 136 #define R_ARM_GOT_BREL12 97 137 #define R_ARM_GOTOFF12 98 138 #define R_ARM_GOTRELAX 99 139 #define R_ARM_GNU_VTENTRY 100 140 #define R_ARM_GNU_VTINHERIT 101 141 #define R_ARM_THM_JUMP11 102 142 #define R_ARM_THM_JUMP8 103 143 #define R_ARM_TLS_GD32 104 144 #define R_ARM_TLS_LDM32 105 145 #define R_ARM_TLS_LDO32 106 146 #define R_ARM_TLS_IE32 107 147 #define R_ARM_TLS_LE32 108 148 #define R_ARM_TLS_LDO12 109 149 #define R_ARM_TLS_LE12 110 150 #define R_ARM_TLS_IE12GP 111 151 #define R_ARM_ME_TOO 128 152 #define R_ARM_THM_TLS_DESCSEQ16 129 153 #define R_ARM_THM_TLS_DESCSEQ32 130 154 #define R_ARM_RXPC25 249 155 #define R_ARM_RSBREL32 250 156 #define R_ARM_THM_RPC22 251 157 #define R_ARM_RREL32 252 158 #define R_ARM_RABS32 253 159 #define R_ARM_RPC24 254 160 #define R_ARM_RBASE 255 161 162 /* Keep this the last entry. */ 163 #define R_ARM_NUM 256 164 #endif /* _WIN32 */ 165 166 /* ARM relocations defined by the ABIs */ 167 static const char *reloc_type_names_ARM[] = { 168 "R_ARM_NONE", /* 00 */ 169 "R_ARM_PC24", /* 01 */ 170 "R_ARM_ABS32", /* 02 */ 171 "R_ARM_REL32", /* 03 */ 172 "R_ARM_LDR_PC_G0", /* 04 */ 173 "R_ARM_ABS16", /* 05 */ 174 "R_ARM_ABS12", /* 06 */ 175 "R_ARM_THM_ABS5", /* 07 */ 176 "R_ARM_ABS8", /* 08 */ 177 "R_ARM_SBREL32", /* 09 */ 178 "R_ARM_THM_CALL", /* 10 */ 179 "R_ARM_THM_PC8", /* 11 */ 180 "R_ARM_BREL_ADJ", /* 12 */ 181 "R_ARM_TLS_DESC", /* 13 */ 182 "R_ARM_THM_SWI8", /* 14 */ 183 "R_ARM_XPC25", /* 15 */ 184 "R_ARM_THM_XPC22", /* 16 */ 185 "R_ARM_TLS_DTPMOD32", /* 17 */ 186 "R_ARM_TLS_DTPOFF32", /* 18 */ 187 "R_ARM_TLS_TPOFF32", /* 19 */ 188 "R_ARM_COPY", /* 20 */ 189 "R_ARM_GLOB_DAT", /* 21 */ 190 "R_ARM_JUMP_SLOT", /* 22 */ 191 "R_ARM_RELATIVE", /* 23 */ 192 "R_ARM_GOTOFF32", /* 24 */ 193 "R_ARM_BASE_PREL", /* 25 */ 194 "R_ARM_GOT_BREL", /* 26 */ 195 "R_ARM_PLT32", /* 27 */ 196 "R_ARM_CALL", /* 28 */ 197 "R_ARM_JUMP24", /* 29 */ 198 "R_ARM_THM_JUMP24", /* 30 */ 199 "R_ARM_BASE_ABS", /* 31 */ 200 "R_ARM_ALU_PCREL_7_0", /* 32 */ 201 "R_ARM_ALU_PCREL_15_8", /* 33 */ 202 "R_ARM_ALU_PCREL_23_15", /* 34 */ 203 "R_ARM_LDR_SBREL_11_0_NC", /* 35 */ 204 "R_ARM_ALU_SBREL_19_12_NC", /* 36 */ 205 "R_ARM_ALU_SBREL_27_20_CK", /* 37 */ 206 "R_ARM_TARGET1", /* 38 */ 207 "R_ARM_SBREL31", /* 39 */ 208 "R_ARM_V4BX", /* 40 */ 209 "R_ARM_TARGET2", /* 41 */ 210 "R_ARM_PREL31", /* 42 */ 211 "R_ARM_MOVW_ABS_NC", /* 43 */ 212 "R_ARM_MOVT_ABS", /* 44 */ 213 "R_ARM_MOVW_PREL_NC", /* 45 */ 214 "R_ARM_MOVT_PREL", /* 46 */ 215 "R_ARM_THM_MOVW_ABS_NC", /* 47 */ 216 "R_ARM_THM_MOVT_ABS", /* 48 */ 217 "R_ARM_THM_MOVW_PREL_NC", /* 49 */ 218 "R_ARM_THM_MOVT_PREL", /* 50 */ 219 "R_ARM_THM_JUMP19", /* 51 */ 220 "R_ARM_THM_JUMP6", /* 52 */ 221 "R_ARM_THM_ALU_PREL_11_0", /* 53 */ 222 "R_ARM_THM_PC12", /* 54 */ 223 "R_ARM_ABS32_NOI", /* 55 */ 224 "R_ARM_REL32_NOI", /* 56 */ 225 "R_ARM_ALU_PC_G0_NC", /* 57 */ 226 "R_ARM_ALU_PC_G0", /* 58 */ 227 "R_ARM_ALU_PC_G1_NC", /* 59 */ 228 "R_ARM_ALU_PC_G1", /* 60 */ 229 "R_ARM_ALU_PC_G2", /* 61 */ 230 "R_ARM_LDR_PC_G1", /* 62 */ 231 "R_ARM_LDR_PC_G2", /* 63 */ 232 "R_ARM_LDRS_PC_G0", /* 64 */ 233 "R_ARM_LDRS_PC_G1", /* 65 */ 234 "R_ARM_LDRS_PC_G2", /* 66 */ 235 "R_ARM_LDC_PC_G0", /* 67 */ 236 "R_ARM_LDC_PC_G1", /* 68 */ 237 "R_ARM_LDC_PC_G2", /* 69 */ 238 "R_ARM_ALU_SB_G0_NC", /* 70 */ 239 "R_ARM_ALU_SB_G0", /* 71 */ 240 "R_ARM_ALU_SB_G1_NC", /* 72 */ 241 "R_ARM_ALU_SB_G1", /* 73 */ 242 "R_ARM_ALU_SB_G2", /* 74 */ 243 "R_ARM_LDR_SB_G0", /* 75 */ 244 "R_ARM_LDR_SB_G1", /* 76 */ 245 "R_ARM_LDR_SB_G2", /* 77 */ 246 "R_ARM_LDRS_SB_G0", /* 78 */ 247 "R_ARM_LDRS_SB_G1", /* 79 */ 248 "R_ARM_LDRS_SB_G2", /* 80 */ 249 "R_ARM_LDC_SB_G0", /* 81 */ 250 "R_ARM_LDC_SB_G1", /* 82 */ 251 "R_ARM_LDC_SB_G2", /* 83 */ 252 "R_ARM_MOVW_BREL_NC", /* 84 */ 253 "R_ARM_MOVT_BREL", /* 85 */ 254 "R_ARM_MOVW_BREL", /* 86 */ 255 "R_ARM_THM_MOVW_BREL_NC", /* 87 */ 256 "R_ARM_THM_MOVT_BREL", /* 88 */ 257 "R_ARM_THM_MOVW_BREL", /* 89 */ 258 "R_ARM_TLS_GOTDESC", /* 90 */ 259 "R_ARM_TLS_CALL", /* 91 */ 260 "R_ARM_TLS_DESCSEQ", /* 92 */ 261 "R_ARM_THM_TLS_CALL", /* 93 */ 262 "R_ARM_PLT32_ABS", /* 94 */ 263 "R_ARM_GOT_ABS", /* 95 */ 264 "R_ARM_GOT_PREL", /* 96 */ 265 "R_ARM_GOT_BREL12", /* 97 */ 266 "R_ARM_GOTOFF12", /* 98 */ 267 "R_ARM_GOTRELAX", /* 99 */ 268 "R_ARM_GNU_VTENTRY", /* 100 */ 269 "R_ARM_GNU_VTINHERIT", /* 101 */ 270 "R_ARM_THM_JUMP11", /* 102 */ 271 "R_ARM_THM_JUMP8", /* 103 */ 272 "R_ARM_TLS_GD32", /* 104 */ 273 "R_ARM_TLS_LDM32", /* 105 */ 274 "R_ARM_TLS_LDO32", /* 106 */ 275 "R_ARM_TLS_IE32", /* 107 */ 276 "R_ARM_TLS_LE32", /* 108 */ 277 "R_ARM_TLS_LDO12", /* 109 */ 278 "R_ARM_TLS_LE12", /* 110 */ 279 "R_ARM_TLS_IE12GP", /* 111 */ 280 "R_ARM_TLS_MOVT_TPOFF32", /* 112 */ /* "R_ARM_PRIVATE_0" */ 281 "R_ARM_TLS_MOVW_TPOFF32", /* 113 */ /* "R_ARM_PRIVATE_1" */ 282 "R_ARM_THM_TLS_MOVT_TPOFF32", /* 114 */ /* "R_ARM_PRIVATE_2" */ 283 "R_ARM_THM_TLS_MOVT_TPOFF32", /* 115 */ /* "R_ARM_PRIVATE_3" */ 284 "R_ARM_PRIVATE_4", /* 116 */ 285 "R_ARM_PRIVATE_5", /* 117 */ 286 "R_ARM_PRIVATE_6", /* 118 */ 287 "R_ARM_PRIVATE_7", /* 119 */ 288 "R_ARM_PRIVATE_8", /* 120 */ 289 "R_ARM_PRIVATE_9", /* 121 */ 290 "R_ARM_PRIVATE_10", /* 122 */ 291 "R_ARM_PRIVATE_11", /* 123 */ 292 "R_ARM_PRIVATE_12", /* 124 */ 293 "R_ARM_PRIVATE_13", /* 125 */ 294 "R_ARM_PRIVATE_14", /* 126 */ 295 "R_ARM_PRIVATE_15", /* 127 */ 296 "R_ARM_ME_TOO", /* 128 */ 297 "R_ARM_THM_TLS_DESCSEQ16", /* 129 */ 298 "R_ARM_THM_TLS_DESCSEQ32", /* 130 */ 299 }; 300 301 #ifndef R_AARCH64_ABS64 302 #define R_AARCH64_ABS64 0x101 303 #endif 304 #ifndef R_AARCH64_ABS32 305 #define R_AARCH64_ABS32 0x102 306 #endif 307 308 #endif /* DWARF_RELOC_ARM_H */ 309