1/* $OpenBSD: reloc.h,v 1.2 2017/10/24 20:35:54 guenther Exp $ */
2/*
3 * AArch64 static relocation types.
4 */
5
6/* Miscellaneous. */
7#define R_ARM_NONE 0
8#define R_AARCH64_TPOFF64 1 /// COMPLETELY WRONG - stub
9#define R_AARCH64_NONE 0
10
11/* Data. */
12#define R_AARCH64_ABS64 257
13#define R_AARCH64_ABS32 258
14#define R_AARCH64_ABS16 259
15#define R_AARCH64_PREL64 260
16#define R_AARCH64_PREL32 261
17#define R_AARCH64_PREL16 262
18
19/* Instructions. */
20#define R_AARCH64_MOVW_UABS_G0 263
21#define R_AARCH64_MOVW_UABS_G0_NC 264
22#define R_AARCH64_MOVW_UABS_G1 265
23#define R_AARCH64_MOVW_UABS_G1_NC 266
24#define R_AARCH64_MOVW_UABS_G2 267
25#define R_AARCH64_MOVW_UABS_G2_NC 268
26#define R_AARCH64_MOVW_UABS_G3 269
27
28#define R_AARCH64_MOVW_SABS_G0 270
29#define R_AARCH64_MOVW_SABS_G1 271
30#define R_AARCH64_MOVW_SABS_G2 272
31
32#define R_AARCH64_LD_PREL_LO19 273
33#define R_AARCH64_ADR_PREL_LO21 274
34#define R_AARCH64_ADR_PREL_PG_HI21 275
35#define R_AARCH64_ADR_PREL_PG_HI21_NC 276
36#define R_AARCH64_ADD_ABS_LO12_NC 277
37#define R_AARCH64_LDST8_ABS_LO12_NC 278
38
39#define R_AARCH64_TSTBR14 279
40#define R_AARCH64_CONDBR19 280
41#define R_AARCH64_JUMP26 282
42#define R_AARCH64_CALL26 283
43#define R_AARCH64_LDST16_ABS_LO12_NC 284
44#define R_AARCH64_LDST32_ABS_LO12_NC 285
45#define R_AARCH64_LDST64_ABS_LO12_NC 286
46#define R_AARCH64_LDST128_ABS_LO12_NC 299
47
48#define R_AARCH64_MOVW_PREL_G0 287
49#define R_AARCH64_MOVW_PREL_G0_NC 288
50#define R_AARCH64_MOVW_PREL_G1 289
51#define R_AARCH64_MOVW_PREL_G1_NC 290
52#define R_AARCH64_MOVW_PREL_G2 291
53#define R_AARCH64_MOVW_PREL_G2_NC 292
54#define R_AARCH64_MOVW_PREL_G3 293
55
56
57#define R_AARCH64_COPY 1024
58#define R_AARCH64_GLOB_DAT 1025 // S + A
59#define R_AARCH64_JUMP_SLOT 1026 // S + A
60#define R_AARCH64_RELATIVE 1027 // Delta(S) + A
61#define R_AARCH64_TLS_DTPREL64 1028 // DTPREL(S+A)
62#define R_AARCH64_TLS_DTPMOD64 1029 // LDM(S)
63#define R_AARCH64_TLS_TPREL64 1030 // TPREL(S+A)
64#define R_AARCH64_TLSDESC 1031 // TLSDESC(S+A) TLS descriptor to be filled
65#define R_AARCH64_IRELATIVE 1032 // Indirect(Delta(S) + A)
66
67// old arm32 defines.
68/* Processor specific relocation types */
69
70#define R_ARM_NONE 0
71#define R_ARM_PC24 1
72#define R_ARM_ABS32 2
73#define R_ARM_REL32 3
74#define R_ARM_PC13 4
75#define R_ARM_ABS16 5
76#define R_ARM_ABS12 6
77#define R_ARM_THM_ABS5 7
78#define R_ARM_ABS8 8
79#define R_ARM_SBREL32 9
80#define R_ARM_THM_PC22 10
81#define R_ARM_THM_PC8 11
82#define R_ARM_AMP_VCALL9 12
83#define R_ARM_SWI24 13
84#define R_ARM_THM_SWI8 14
85#define R_ARM_XPC25 15
86#define R_ARM_THM_XPC22 16
87
88/* 17-31 are reserved for ARM Linux. */
89#define R_ARM_TLS_DTPMOD32 17
90#define R_ARM_TLS_DTPOFF32 18
91#define R_ARM_TLS_TPOFF32 19
92
93#define R_ARM_COPY 20
94#define R_ARM_GLOB_DAT 21
95#define R_ARM_JUMP_SLOT 22
96#define R_ARM_RELATIVE 23
97#define R_ARM_GOTOFF 24
98#define R_ARM_GOTPC 25
99#define R_ARM_GOT32 26
100#define R_ARM_PLT32 27
101
102#define R_ARM_ALU_PCREL_7_0 32
103#define R_ARM_ALU_PCREL_15_8 33
104#define R_ARM_ALU_PCREL_23_15 34
105#define R_ARM_ALU_SBREL_11_0 35
106#define R_ARM_ALU_SBREL_19_12 36
107#define R_ARM_ALU_SBREL_27_20 37
108
109/* 96-111 are reserved to G++. */
110#define R_ARM_GNU_VTENTRY 100
111#define R_ARM_GNU_VTINHERIT 101
112#define R_ARM_THM_PC11 102
113#define R_ARM_THM_PC9 103
114
115/* 112-127 are reserved for private experiments. */
116
117#define R_ARM_RXPC25 249
118#define R_ARM_RSBREL32 250
119#define R_ARM_THM_RPC22 251
120#define R_ARM_RREL32 252
121#define R_ARM_RABS32 253
122#define R_ARM_RPC24 254
123#define R_ARM_RBASE 255