mirror of
https://github.com/davea42/libdwarf-code.git
synced 2025-10-24 12:22:37 +08:00
309 lines
12 KiB
C
309 lines
12 KiB
C
/*
|
|
Copyright (C) 2007-2012 David Anderson. All Rights Reserved.
|
|
Portions Copyright (C) 2012 SN Systems Ltd. All rights reserved.
|
|
|
|
This program is free software; you can redistribute it and/or modify it
|
|
under the terms of version 2.1 of the GNU Lesser General Public License
|
|
as published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope that it would be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
Further, this software is distributed without any warranty that it is
|
|
free of the rightful claim of any third person regarding infringement
|
|
or the like. Any license provided herein, whether implied or
|
|
otherwise, applies only to this software file. Patent licenses, if
|
|
any, provided herein do not apply to combinations of this program with
|
|
other software, or any other product whatsoever.
|
|
|
|
You should have received a copy of the GNU Lesser General Public License along
|
|
with this program; if not, write the Free Software Foundation, Inc., 51
|
|
Franklin Street - Fifth Floor, Boston MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef DWARF_RELOC_ARM_H
|
|
#define DWARF_RELOC_ARM_H
|
|
|
|
/* Definitions for ARM */
|
|
#define DWARF_RELOC_ARM
|
|
|
|
#ifndef EM_AARCH64
|
|
#define EM_AARCH64 183 /* Arm 64 */
|
|
#endif
|
|
|
|
|
|
/* Include the definitions only in the case of Windows */
|
|
#ifdef _WIN32
|
|
/* Relocation types for ARM */
|
|
#define R_ARM_NONE 0
|
|
#define R_ARM_PC24 1
|
|
#define R_ARM_ABS32 2
|
|
#define R_ARM_REL32 3
|
|
#define R_ARM_LDR_PC_G0 4
|
|
#define R_ARM_ABS16 5
|
|
#define R_ARM_ABS12 6
|
|
#define R_ARM_THM_ABS5 7
|
|
#define R_ARM_ABS8 8
|
|
#define R_ARM_SBREL32 9
|
|
#define R_ARM_THM_CALL 10
|
|
#define R_ARM_THM_PC8 11
|
|
#define R_ARM_BREL_ADJ 12
|
|
#define R_ARM_TLS_DESC 13
|
|
#define R_ARM_THM_SWI8 14
|
|
#define R_ARM_XPC25 15
|
|
#define R_ARM_THM_XPC22 16
|
|
#define R_ARM_TLS_DTPMOD32 17
|
|
#define R_ARM_TLS_DTPOFF32 18
|
|
#define R_ARM_TLS_TPOFF32 19
|
|
#define R_ARM_COPY 20
|
|
#define R_ARM_GLOB_DAT 21
|
|
#define R_ARM_JUMP_SLOT 22
|
|
#define R_ARM_RELATIVE 23
|
|
#define R_ARM_GOTOFF32 24
|
|
#define R_ARM_BASE_PREL 25
|
|
#define R_ARM_GOT_BREL 26
|
|
#define R_ARM_PLT32 27
|
|
#define R_ARM_CALL 28
|
|
#define R_ARM_JUMP24 29
|
|
#define R_ARM_THM_JUMP24 30
|
|
#define R_ARM_BASE_ABS 31
|
|
#define R_ARM_ALU_PCREL_7_0 32
|
|
#define R_ARM_ALU_PCREL_15_8 33
|
|
#define R_ARM_ALU_PCREL_23_15 34
|
|
#define R_ARM_LDR_SBREL_11_0_NC 35
|
|
#define R_ARM_ALU_SBREL_19_12_NC 36
|
|
#define R_ARM_ALU_SBREL_27_20_CK 37
|
|
#define R_ARM_TARGET1 38
|
|
#define R_ARM_SBREL31 39
|
|
#define R_ARM_V4BX 40
|
|
#define R_ARM_TARGET2 41
|
|
#define R_ARM_PREL31 42
|
|
#define R_ARM_MOVW_ABS_NC 43
|
|
#define R_ARM_MOVT_ABS 44
|
|
#define R_ARM_MOVW_PREL_NC 45
|
|
#define R_ARM_MOVT_PREL 46
|
|
#define R_ARM_THM_MOVW_ABS_NC 47
|
|
#define R_ARM_THM_MOVT_ABS 48
|
|
#define R_ARM_THM_MOVW_PREL_NC 49
|
|
#define R_ARM_THM_MOVT_PREL 50
|
|
#define R_ARM_THM_JUMP19 51
|
|
#define R_ARM_THM_JUMP6 52
|
|
#define R_ARM_THM_ALU_PREL_11_0 53
|
|
#define R_ARM_THM_PC12 54
|
|
#define R_ARM_ABS32_NOI 55
|
|
#define R_ARM_REL32_NOI 56
|
|
#define R_ARM_ALU_PC_G0_NC 57
|
|
#define R_ARM_ALU_PC_G0 58
|
|
#define R_ARM_ALU_PC_G1_NC 59
|
|
#define R_ARM_ALU_PC_G1 60
|
|
#define R_ARM_ALU_PC_G2 61
|
|
#define R_ARM_LDR_PC_G1 62
|
|
#define R_ARM_LDR_PC_G2 63
|
|
#define R_ARM_LDRS_PC_G0 64
|
|
#define R_ARM_LDRS_PC_G1 65
|
|
#define R_ARM_LDRS_PC_G2 66
|
|
#define R_ARM_LDC_PC_G0 67
|
|
#define R_ARM_LDC_PC_G1 68
|
|
#define R_ARM_LDC_PC_G2 69
|
|
#define R_ARM_ALU_SB_G0_NC 70
|
|
#define R_ARM_ALU_SB_G0 71
|
|
#define R_ARM_ALU_SB_G1_NC 72
|
|
#define R_ARM_ALU_SB_G1 73
|
|
#define R_ARM_ALU_SB_G2 74
|
|
#define R_ARM_LDR_SB_G0 75
|
|
#define R_ARM_LDR_SB_G1 76
|
|
#define R_ARM_LDR_SB_G2 77
|
|
#define R_ARM_LDRS_SB_G0 78
|
|
#define R_ARM_LDRS_SB_G1 79
|
|
#define R_ARM_LDRS_SB_G2 80
|
|
#define R_ARM_LDC_SB_G0 81
|
|
#define R_ARM_LDC_SB_G1 82
|
|
#define R_ARM_LDC_SB_G2 83
|
|
#define R_ARM_MOVW_BREL_NC 84
|
|
#define R_ARM_MOVT_BREL 85
|
|
#define R_ARM_MOVW_BREL 86
|
|
#define R_ARM_THM_MOVW_BREL_NC 87
|
|
#define R_ARM_THM_MOVT_BREL 88
|
|
#define R_ARM_THM_MOVW_BREL 89
|
|
#define R_ARM_TLS_GOTDESC 90
|
|
#define R_ARM_TLS_CALL 91
|
|
#define R_ARM_TLS_DESCSEQ 92
|
|
#define R_ARM_THM_TLS_CALL 93
|
|
#define R_ARM_PLT32_ABS 94
|
|
#define R_ARM_GOT_ABS 95
|
|
#define R_ARM_GOT_PREL 96
|
|
#define R_ARM_GOT_BREL12 97
|
|
#define R_ARM_GOTOFF12 98
|
|
#define R_ARM_GOTRELAX 99
|
|
#define R_ARM_GNU_VTENTRY 100
|
|
#define R_ARM_GNU_VTINHERIT 101
|
|
#define R_ARM_THM_JUMP11 102
|
|
#define R_ARM_THM_JUMP8 103
|
|
#define R_ARM_TLS_GD32 104
|
|
#define R_ARM_TLS_LDM32 105
|
|
#define R_ARM_TLS_LDO32 106
|
|
#define R_ARM_TLS_IE32 107
|
|
#define R_ARM_TLS_LE32 108
|
|
#define R_ARM_TLS_LDO12 109
|
|
#define R_ARM_TLS_LE12 110
|
|
#define R_ARM_TLS_IE12GP 111
|
|
#define R_ARM_ME_TOO 128
|
|
#define R_ARM_THM_TLS_DESCSEQ16 129
|
|
#define R_ARM_THM_TLS_DESCSEQ32 130
|
|
#define R_ARM_RXPC25 249
|
|
#define R_ARM_RSBREL32 250
|
|
#define R_ARM_THM_RPC22 251
|
|
#define R_ARM_RREL32 252
|
|
#define R_ARM_RABS32 253
|
|
#define R_ARM_RPC24 254
|
|
#define R_ARM_RBASE 255
|
|
|
|
/* Keep this the last entry. */
|
|
#define R_ARM_NUM 256
|
|
#endif /* _WIN32 */
|
|
|
|
/* ARM relocations defined by the ABIs */
|
|
static const char *reloc_type_names_ARM[] = {
|
|
"R_ARM_NONE", /* 00 */
|
|
"R_ARM_PC24", /* 01 */
|
|
"R_ARM_ABS32", /* 02 */
|
|
"R_ARM_REL32", /* 03 */
|
|
"R_ARM_LDR_PC_G0", /* 04 */
|
|
"R_ARM_ABS16", /* 05 */
|
|
"R_ARM_ABS12", /* 06 */
|
|
"R_ARM_THM_ABS5", /* 07 */
|
|
"R_ARM_ABS8", /* 08 */
|
|
"R_ARM_SBREL32", /* 09 */
|
|
"R_ARM_THM_CALL", /* 10 */
|
|
"R_ARM_THM_PC8", /* 11 */
|
|
"R_ARM_BREL_ADJ", /* 12 */
|
|
"R_ARM_TLS_DESC", /* 13 */
|
|
"R_ARM_THM_SWI8", /* 14 */
|
|
"R_ARM_XPC25", /* 15 */
|
|
"R_ARM_THM_XPC22", /* 16 */
|
|
"R_ARM_TLS_DTPMOD32", /* 17 */
|
|
"R_ARM_TLS_DTPOFF32", /* 18 */
|
|
"R_ARM_TLS_TPOFF32", /* 19 */
|
|
"R_ARM_COPY", /* 20 */
|
|
"R_ARM_GLOB_DAT", /* 21 */
|
|
"R_ARM_JUMP_SLOT", /* 22 */
|
|
"R_ARM_RELATIVE", /* 23 */
|
|
"R_ARM_GOTOFF32", /* 24 */
|
|
"R_ARM_BASE_PREL", /* 25 */
|
|
"R_ARM_GOT_BREL", /* 26 */
|
|
"R_ARM_PLT32", /* 27 */
|
|
"R_ARM_CALL", /* 28 */
|
|
"R_ARM_JUMP24", /* 29 */
|
|
"R_ARM_THM_JUMP24", /* 30 */
|
|
"R_ARM_BASE_ABS", /* 31 */
|
|
"R_ARM_ALU_PCREL_7_0", /* 32 */
|
|
"R_ARM_ALU_PCREL_15_8", /* 33 */
|
|
"R_ARM_ALU_PCREL_23_15", /* 34 */
|
|
"R_ARM_LDR_SBREL_11_0_NC", /* 35 */
|
|
"R_ARM_ALU_SBREL_19_12_NC", /* 36 */
|
|
"R_ARM_ALU_SBREL_27_20_CK", /* 37 */
|
|
"R_ARM_TARGET1", /* 38 */
|
|
"R_ARM_SBREL31", /* 39 */
|
|
"R_ARM_V4BX", /* 40 */
|
|
"R_ARM_TARGET2", /* 41 */
|
|
"R_ARM_PREL31", /* 42 */
|
|
"R_ARM_MOVW_ABS_NC", /* 43 */
|
|
"R_ARM_MOVT_ABS", /* 44 */
|
|
"R_ARM_MOVW_PREL_NC", /* 45 */
|
|
"R_ARM_MOVT_PREL", /* 46 */
|
|
"R_ARM_THM_MOVW_ABS_NC", /* 47 */
|
|
"R_ARM_THM_MOVT_ABS", /* 48 */
|
|
"R_ARM_THM_MOVW_PREL_NC", /* 49 */
|
|
"R_ARM_THM_MOVT_PREL", /* 50 */
|
|
"R_ARM_THM_JUMP19", /* 51 */
|
|
"R_ARM_THM_JUMP6", /* 52 */
|
|
"R_ARM_THM_ALU_PREL_11_0", /* 53 */
|
|
"R_ARM_THM_PC12", /* 54 */
|
|
"R_ARM_ABS32_NOI", /* 55 */
|
|
"R_ARM_REL32_NOI", /* 56 */
|
|
"R_ARM_ALU_PC_G0_NC", /* 57 */
|
|
"R_ARM_ALU_PC_G0", /* 58 */
|
|
"R_ARM_ALU_PC_G1_NC", /* 59 */
|
|
"R_ARM_ALU_PC_G1", /* 60 */
|
|
"R_ARM_ALU_PC_G2", /* 61 */
|
|
"R_ARM_LDR_PC_G1", /* 62 */
|
|
"R_ARM_LDR_PC_G2", /* 63 */
|
|
"R_ARM_LDRS_PC_G0", /* 64 */
|
|
"R_ARM_LDRS_PC_G1", /* 65 */
|
|
"R_ARM_LDRS_PC_G2", /* 66 */
|
|
"R_ARM_LDC_PC_G0", /* 67 */
|
|
"R_ARM_LDC_PC_G1", /* 68 */
|
|
"R_ARM_LDC_PC_G2", /* 69 */
|
|
"R_ARM_ALU_SB_G0_NC", /* 70 */
|
|
"R_ARM_ALU_SB_G0", /* 71 */
|
|
"R_ARM_ALU_SB_G1_NC", /* 72 */
|
|
"R_ARM_ALU_SB_G1", /* 73 */
|
|
"R_ARM_ALU_SB_G2", /* 74 */
|
|
"R_ARM_LDR_SB_G0", /* 75 */
|
|
"R_ARM_LDR_SB_G1", /* 76 */
|
|
"R_ARM_LDR_SB_G2", /* 77 */
|
|
"R_ARM_LDRS_SB_G0", /* 78 */
|
|
"R_ARM_LDRS_SB_G1", /* 79 */
|
|
"R_ARM_LDRS_SB_G2", /* 80 */
|
|
"R_ARM_LDC_SB_G0", /* 81 */
|
|
"R_ARM_LDC_SB_G1", /* 82 */
|
|
"R_ARM_LDC_SB_G2", /* 83 */
|
|
"R_ARM_MOVW_BREL_NC", /* 84 */
|
|
"R_ARM_MOVT_BREL", /* 85 */
|
|
"R_ARM_MOVW_BREL", /* 86 */
|
|
"R_ARM_THM_MOVW_BREL_NC", /* 87 */
|
|
"R_ARM_THM_MOVT_BREL", /* 88 */
|
|
"R_ARM_THM_MOVW_BREL", /* 89 */
|
|
"R_ARM_TLS_GOTDESC", /* 90 */
|
|
"R_ARM_TLS_CALL", /* 91 */
|
|
"R_ARM_TLS_DESCSEQ", /* 92 */
|
|
"R_ARM_THM_TLS_CALL", /* 93 */
|
|
"R_ARM_PLT32_ABS", /* 94 */
|
|
"R_ARM_GOT_ABS", /* 95 */
|
|
"R_ARM_GOT_PREL", /* 96 */
|
|
"R_ARM_GOT_BREL12", /* 97 */
|
|
"R_ARM_GOTOFF12", /* 98 */
|
|
"R_ARM_GOTRELAX", /* 99 */
|
|
"R_ARM_GNU_VTENTRY", /* 100 */
|
|
"R_ARM_GNU_VTINHERIT", /* 101 */
|
|
"R_ARM_THM_JUMP11", /* 102 */
|
|
"R_ARM_THM_JUMP8", /* 103 */
|
|
"R_ARM_TLS_GD32", /* 104 */
|
|
"R_ARM_TLS_LDM32", /* 105 */
|
|
"R_ARM_TLS_LDO32", /* 106 */
|
|
"R_ARM_TLS_IE32", /* 107 */
|
|
"R_ARM_TLS_LE32", /* 108 */
|
|
"R_ARM_TLS_LDO12", /* 109 */
|
|
"R_ARM_TLS_LE12", /* 110 */
|
|
"R_ARM_TLS_IE12GP", /* 111 */
|
|
"R_ARM_TLS_MOVT_TPOFF32", /* 112 */ /* "R_ARM_PRIVATE_0" */
|
|
"R_ARM_TLS_MOVW_TPOFF32", /* 113 */ /* "R_ARM_PRIVATE_1" */
|
|
"R_ARM_THM_TLS_MOVT_TPOFF32", /* 114 */ /* "R_ARM_PRIVATE_2" */
|
|
"R_ARM_THM_TLS_MOVT_TPOFF32", /* 115 */ /* "R_ARM_PRIVATE_3" */
|
|
"R_ARM_PRIVATE_4", /* 116 */
|
|
"R_ARM_PRIVATE_5", /* 117 */
|
|
"R_ARM_PRIVATE_6", /* 118 */
|
|
"R_ARM_PRIVATE_7", /* 119 */
|
|
"R_ARM_PRIVATE_8", /* 120 */
|
|
"R_ARM_PRIVATE_9", /* 121 */
|
|
"R_ARM_PRIVATE_10", /* 122 */
|
|
"R_ARM_PRIVATE_11", /* 123 */
|
|
"R_ARM_PRIVATE_12", /* 124 */
|
|
"R_ARM_PRIVATE_13", /* 125 */
|
|
"R_ARM_PRIVATE_14", /* 126 */
|
|
"R_ARM_PRIVATE_15", /* 127 */
|
|
"R_ARM_ME_TOO", /* 128 */
|
|
"R_ARM_THM_TLS_DESCSEQ16", /* 129 */
|
|
"R_ARM_THM_TLS_DESCSEQ32", /* 130 */
|
|
};
|
|
|
|
#ifndef R_AARCH64_ABS64
|
|
#define R_AARCH64_ABS64 0x101
|
|
#endif
|
|
#ifndef R_AARCH64_ABS32
|
|
#define R_AARCH64_ABS32 0x102
|
|
#endif
|
|
|
|
#endif /* DWARF_RELOC_ARM_H */
|