1
2#ifndef ELF_RELOC
3#error "ELF_RELOC must be defined"
4#endif
5
6// Based on ABI release 1.1-beta, dated 6 November 2013. NB: The cover page of
7// this document, IHI0056C_beta_aaelf64.pdf, on infocenter.arm.com, still
8// labels this as release 1.0.
9ELF_RELOC(R_AARCH64_NONE, 0)
10ELF_RELOC(R_AARCH64_ABS64, 0x101)
11ELF_RELOC(R_AARCH64_ABS32, 0x102)
12ELF_RELOC(R_AARCH64_ABS16, 0x103)
13ELF_RELOC(R_AARCH64_PREL64, 0x104)
14ELF_RELOC(R_AARCH64_PREL32, 0x105)
15ELF_RELOC(R_AARCH64_PREL16, 0x106)
16ELF_RELOC(R_AARCH64_MOVW_UABS_G0, 0x107)
17ELF_RELOC(R_AARCH64_MOVW_UABS_G0_NC, 0x108)
18ELF_RELOC(R_AARCH64_MOVW_UABS_G1, 0x109)
19ELF_RELOC(R_AARCH64_MOVW_UABS_G1_NC, 0x10a)
20ELF_RELOC(R_AARCH64_MOVW_UABS_G2, 0x10b)
21ELF_RELOC(R_AARCH64_MOVW_UABS_G2_NC, 0x10c)
22ELF_RELOC(R_AARCH64_MOVW_UABS_G3, 0x10d)
23ELF_RELOC(R_AARCH64_MOVW_SABS_G0, 0x10e)
24ELF_RELOC(R_AARCH64_MOVW_SABS_G1, 0x10f)
25ELF_RELOC(R_AARCH64_MOVW_SABS_G2, 0x110)
26ELF_RELOC(R_AARCH64_LD_PREL_LO19, 0x111)
27ELF_RELOC(R_AARCH64_ADR_PREL_LO21, 0x112)
28ELF_RELOC(R_AARCH64_ADR_PREL_PG_HI21, 0x113)
29ELF_RELOC(R_AARCH64_ADR_PREL_PG_HI21_NC, 0x114)
30ELF_RELOC(R_AARCH64_ADD_ABS_LO12_NC, 0x115)
31ELF_RELOC(R_AARCH64_LDST8_ABS_LO12_NC, 0x116)
32ELF_RELOC(R_AARCH64_TSTBR14, 0x117)
33ELF_RELOC(R_AARCH64_CONDBR19, 0x118)
34ELF_RELOC(R_AARCH64_JUMP26, 0x11a)
35ELF_RELOC(R_AARCH64_CALL26, 0x11b)
36ELF_RELOC(R_AARCH64_LDST16_ABS_LO12_NC, 0x11c)
37ELF_RELOC(R_AARCH64_LDST32_ABS_LO12_NC, 0x11d)
38ELF_RELOC(R_AARCH64_LDST64_ABS_LO12_NC, 0x11e)
39ELF_RELOC(R_AARCH64_MOVW_PREL_G0, 0x11f)
40ELF_RELOC(R_AARCH64_MOVW_PREL_G0_NC, 0x120)
41ELF_RELOC(R_AARCH64_MOVW_PREL_G1, 0x121)
42ELF_RELOC(R_AARCH64_MOVW_PREL_G1_NC, 0x122)
43ELF_RELOC(R_AARCH64_MOVW_PREL_G2, 0x123)
44ELF_RELOC(R_AARCH64_MOVW_PREL_G2_NC, 0x124)
45ELF_RELOC(R_AARCH64_MOVW_PREL_G3, 0x125)
46ELF_RELOC(R_AARCH64_LDST128_ABS_LO12_NC, 0x12b)
47ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G0, 0x12c)
48ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G0_NC, 0x12d)
49ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G1, 0x12e)
50ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G1_NC, 0x12f)
51ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G2, 0x130)
52ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G2_NC, 0x131)
53ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G3, 0x132)
54ELF_RELOC(R_AARCH64_GOTREL64, 0x133)
55ELF_RELOC(R_AARCH64_GOTREL32, 0x134)
56ELF_RELOC(R_AARCH64_GOT_LD_PREL19, 0x135)
57ELF_RELOC(R_AARCH64_LD64_GOTOFF_LO15, 0x136)
58ELF_RELOC(R_AARCH64_ADR_GOT_PAGE, 0x137)
59ELF_RELOC(R_AARCH64_LD64_GOT_LO12_NC, 0x138)
60ELF_RELOC(R_AARCH64_LD64_GOTPAGE_LO15, 0x139)
61ELF_RELOC(R_AARCH64_PLT32, 0x13a)
62ELF_RELOC(R_AARCH64_TLSGD_ADR_PREL21, 0x200)
63ELF_RELOC(R_AARCH64_TLSGD_ADR_PAGE21, 0x201)
64ELF_RELOC(R_AARCH64_TLSGD_ADD_LO12_NC, 0x202)
65ELF_RELOC(R_AARCH64_TLSGD_MOVW_G1, 0x203)
66ELF_RELOC(R_AARCH64_TLSGD_MOVW_G0_NC, 0x204)
67ELF_RELOC(R_AARCH64_TLSLD_ADR_PREL21, 0x205)
68ELF_RELOC(R_AARCH64_TLSLD_ADR_PAGE21, 0x206)
69ELF_RELOC(R_AARCH64_TLSLD_ADD_LO12_NC, 0x207)
70ELF_RELOC(R_AARCH64_TLSLD_MOVW_G1, 0x208)
71ELF_RELOC(R_AARCH64_TLSLD_MOVW_G0_NC, 0x209)
72ELF_RELOC(R_AARCH64_TLSLD_LD_PREL19, 0x20a)
73ELF_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G2, 0x20b)
74ELF_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G1, 0x20c)
75ELF_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC, 0x20d)
76ELF_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G0, 0x20e)
77ELF_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC, 0x20f)
78ELF_RELOC(R_AARCH64_TLSLD_ADD_DTPREL_HI12, 0x210)
79ELF_RELOC(R_AARCH64_TLSLD_ADD_DTPREL_LO12, 0x211)
80ELF_RELOC(R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC, 0x212)
81ELF_RELOC(R_AARCH64_TLSLD_LDST8_DTPREL_LO12, 0x213)
82ELF_RELOC(R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC, 0x214)
83ELF_RELOC(R_AARCH64_TLSLD_LDST16_DTPREL_LO12, 0x215)
84ELF_RELOC(R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC, 0x216)
85ELF_RELOC(R_AARCH64_TLSLD_LDST32_DTPREL_LO12, 0x217)
86ELF_RELOC(R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC, 0x218)
87ELF_RELOC(R_AARCH64_TLSLD_LDST64_DTPREL_LO12, 0x219)
88ELF_RELOC(R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC, 0x21a)
89ELF_RELOC(R_AARCH64_TLSIE_MOVW_GOTTPREL_G1, 0x21b)
90ELF_RELOC(R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC, 0x21c)
91ELF_RELOC(R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21, 0x21d)
92ELF_RELOC(R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC, 0x21e)
93ELF_RELOC(R_AARCH64_TLSIE_LD_GOTTPREL_PREL19, 0x21f)
94ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G2, 0x220)
95ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G1, 0x221)
96ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G1_NC, 0x222)
97ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G0, 0x223)
98ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G0_NC, 0x224)
99ELF_RELOC(R_AARCH64_TLSLE_ADD_TPREL_HI12, 0x225)
100ELF_RELOC(R_AARCH64_TLSLE_ADD_TPREL_LO12, 0x226)
101ELF_RELOC(R_AARCH64_TLSLE_ADD_TPREL_LO12_NC, 0x227)
102ELF_RELOC(R_AARCH64_TLSLE_LDST8_TPREL_LO12, 0x228)
103ELF_RELOC(R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC, 0x229)
104ELF_RELOC(R_AARCH64_TLSLE_LDST16_TPREL_LO12, 0x22a)
105ELF_RELOC(R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC, 0x22b)
106ELF_RELOC(R_AARCH64_TLSLE_LDST32_TPREL_LO12, 0x22c)
107ELF_RELOC(R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC, 0x22d)
108ELF_RELOC(R_AARCH64_TLSLE_LDST64_TPREL_LO12, 0x22e)
109ELF_RELOC(R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC, 0x22f)
110ELF_RELOC(R_AARCH64_TLSDESC_LD_PREL19, 0x230)
111ELF_RELOC(R_AARCH64_TLSDESC_ADR_PREL21, 0x231)
112ELF_RELOC(R_AARCH64_TLSDESC_ADR_PAGE21, 0x232)
113ELF_RELOC(R_AARCH64_TLSDESC_LD64_LO12, 0x233)
114ELF_RELOC(R_AARCH64_TLSDESC_ADD_LO12, 0x234)
115ELF_RELOC(R_AARCH64_TLSDESC_OFF_G1, 0x235)
116ELF_RELOC(R_AARCH64_TLSDESC_OFF_G0_NC, 0x236)
117ELF_RELOC(R_AARCH64_TLSDESC_LDR, 0x237)
118ELF_RELOC(R_AARCH64_TLSDESC_ADD, 0x238)
119ELF_RELOC(R_AARCH64_TLSDESC_CALL, 0x239)
120ELF_RELOC(R_AARCH64_TLSLE_LDST128_TPREL_LO12, 0x23a)
121ELF_RELOC(R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC, 0x23b)
122ELF_RELOC(R_AARCH64_TLSLD_LDST128_DTPREL_LO12, 0x23c)
123ELF_RELOC(R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC, 0x23d)
124// Dynamic relocations start
125ELF_RELOC(R_AARCH64_COPY, 0x400)
126ELF_RELOC(R_AARCH64_GLOB_DAT, 0x401)
127ELF_RELOC(R_AARCH64_JUMP_SLOT, 0x402)
128ELF_RELOC(R_AARCH64_RELATIVE, 0x403)
129// 0x404 and 0x405 are now R_AARCH64_TLS_IMPDEF1 and R_AARCH64_TLS_IMPDEF2
130// We follow GNU and define TLS_IMPDEF1 as TLS_DTPMOD64 and TLS_IMPDEF2 as
131// TLS_DTPREL64
132ELF_RELOC(R_AARCH64_TLS_DTPMOD64, 0x404)
133ELF_RELOC(R_AARCH64_TLS_DTPREL64, 0x405)
134ELF_RELOC(R_AARCH64_TLS_TPREL64, 0x406)
135ELF_RELOC(R_AARCH64_TLSDESC, 0x407)
136ELF_RELOC(R_AARCH64_IRELATIVE, 0x408)
137
138// ELF_RELOC(R_AARCH64_P32_NONE, 0)
139ELF_RELOC(R_AARCH64_P32_ABS32, 0x001)
140ELF_RELOC(R_AARCH64_P32_ABS16, 0x002)
141ELF_RELOC(R_AARCH64_P32_PREL32, 0x003)
142ELF_RELOC(R_AARCH64_P32_PREL16, 0x004)
143ELF_RELOC(R_AARCH64_P32_MOVW_UABS_G0, 0x005)
144ELF_RELOC(R_AARCH64_P32_MOVW_UABS_G0_NC, 0x006)
145ELF_RELOC(R_AARCH64_P32_MOVW_UABS_G1, 0x007)
146ELF_RELOC(R_AARCH64_P32_MOVW_SABS_G0, 0x008)
147ELF_RELOC(R_AARCH64_P32_LD_PREL_LO19, 0x009)
148ELF_RELOC(R_AARCH64_P32_ADR_PREL_LO21, 0x00a)
149ELF_RELOC(R_AARCH64_P32_ADR_PREL_PG_HI21, 0x00b)
150ELF_RELOC(R_AARCH64_P32_ADD_ABS_LO12_NC, 0x00c)
151ELF_RELOC(R_AARCH64_P32_LDST8_ABS_LO12_NC, 0x00d)
152ELF_RELOC(R_AARCH64_P32_LDST16_ABS_LO12_NC, 0x00e)
153ELF_RELOC(R_AARCH64_P32_LDST32_ABS_LO12_NC, 0x00f)
154ELF_RELOC(R_AARCH64_P32_LDST64_ABS_LO12_NC, 0x010)
155ELF_RELOC(R_AARCH64_P32_LDST128_ABS_LO12_NC, 0x011)
156ELF_RELOC(R_AARCH64_P32_TSTBR14, 0x012)
157ELF_RELOC(R_AARCH64_P32_CONDBR19, 0x013)
158ELF_RELOC(R_AARCH64_P32_JUMP26, 0x014)
159ELF_RELOC(R_AARCH64_P32_CALL26, 0x015)
160ELF_RELOC(R_AARCH64_P32_MOVW_PREL_G0, 0x016)
161ELF_RELOC(R_AARCH64_P32_MOVW_PREL_G0_NC, 0x017)
162ELF_RELOC(R_AARCH64_P32_MOVW_PREL_G1, 0x018)
163ELF_RELOC(R_AARCH64_P32_GOT_LD_PREL19, 0x019)
164ELF_RELOC(R_AARCH64_P32_ADR_GOT_PAGE, 0x01a)
165ELF_RELOC(R_AARCH64_P32_LD32_GOT_LO12_NC, 0x01b)
166ELF_RELOC(R_AARCH64_P32_LD32_GOTPAGE_LO14, 0x01c)
167ELF_RELOC(R_AARCH64_P32_PLT32, 0x01d)
168ELF_RELOC(R_AARCH64_P32_TLSGD_ADR_PREL21, 0x050)
169ELF_RELOC(R_AARCH64_P32_TLSGD_ADR_PAGE21, 0x051)
170ELF_RELOC(R_AARCH64_P32_TLSGD_ADD_LO12_NC, 0x052)
171ELF_RELOC(R_AARCH64_P32_TLSLD_ADR_PREL21, 0x053)
172ELF_RELOC(R_AARCH64_P32_TLSLD_ADR_PAGE21, 0x054)
173ELF_RELOC(R_AARCH64_P32_TLSLD_ADD_LO12_NC, 0x055)
174ELF_RELOC(R_AARCH64_P32_TLSLD_LD_PREL19, 0x056)
175ELF_RELOC(R_AARCH64_P32_TLSLD_MOVW_DTPREL_G1, 0x057)
176ELF_RELOC(R_AARCH64_P32_TLSLD_MOVW_DTPREL_G0, 0x058)
177ELF_RELOC(R_AARCH64_P32_TLSLD_MOVW_DTPREL_G0_NC, 0x059)
178ELF_RELOC(R_AARCH64_P32_TLSLD_ADD_DTPREL_HI12, 0x05a)
179ELF_RELOC(R_AARCH64_P32_TLSLD_ADD_DTPREL_LO12, 0x05b)
180ELF_RELOC(R_AARCH64_P32_TLSLD_ADD_DTPREL_LO12_NC, 0x05c)
181ELF_RELOC(R_AARCH64_P32_TLSLD_LDST8_DTPREL_LO12, 0x05d)
182ELF_RELOC(R_AARCH64_P32_TLSLD_LDST8_DTPREL_LO12_NC, 0x05e)
183ELF_RELOC(R_AARCH64_P32_TLSLD_LDST16_DTPREL_LO12, 0x05f)
184ELF_RELOC(R_AARCH64_P32_TLSLD_LDST16_DTPREL_LO12_NC, 0x060)
185ELF_RELOC(R_AARCH64_P32_TLSLD_LDST32_DTPREL_LO12, 0x061)
186ELF_RELOC(R_AARCH64_P32_TLSLD_LDST32_DTPREL_LO12_NC, 0x062)
187ELF_RELOC(R_AARCH64_P32_TLSLD_LDST64_DTPREL_LO12, 0x063)
188ELF_RELOC(R_AARCH64_P32_TLSLD_LDST64_DTPREL_LO12_NC, 0x064)
189ELF_RELOC(R_AARCH64_P32_TLSLD_LDST128_DTPREL_LO12, 0x065)
190ELF_RELOC(R_AARCH64_P32_TLSLD_LDST128_DTPREL_LO12_NC,0x066)
191ELF_RELOC(R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21, 0x067)
192ELF_RELOC(R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC, 0x068)
193ELF_RELOC(R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19, 0x069)
194ELF_RELOC(R_AARCH64_P32_TLSLE_MOVW_TPREL_G1, 0x06a)
195ELF_RELOC(R_AARCH64_P32_TLSLE_MOVW_TPREL_G0, 0x06b)
196ELF_RELOC(R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC, 0x06c)
197ELF_RELOC(R_AARCH64_P32_TLSLE_ADD_TPREL_HI12, 0x06d)
198ELF_RELOC(R_AARCH64_P32_TLSLE_ADD_TPREL_LO12, 0x06e)
199ELF_RELOC(R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC, 0x06f)
200ELF_RELOC(R_AARCH64_P32_TLSLE_LDST8_TPREL_LO12, 0x070)
201ELF_RELOC(R_AARCH64_P32_TLSLE_LDST8_TPREL_LO12_NC, 0x071)
202ELF_RELOC(R_AARCH64_P32_TLSLE_LDST16_TPREL_LO12, 0x072)
203ELF_RELOC(R_AARCH64_P32_TLSLE_LDST16_TPREL_LO12_NC, 0x073)
204ELF_RELOC(R_AARCH64_P32_TLSLE_LDST32_TPREL_LO12, 0x074)
205ELF_RELOC(R_AARCH64_P32_TLSLE_LDST32_TPREL_LO12_NC, 0x075)
206ELF_RELOC(R_AARCH64_P32_TLSLE_LDST64_TPREL_LO12, 0x076)
207ELF_RELOC(R_AARCH64_P32_TLSLE_LDST64_TPREL_LO12_NC, 0x077)
208ELF_RELOC(R_AARCH64_P32_TLSLE_LDST128_TPREL_LO12, 0x078)
209ELF_RELOC(R_AARCH64_P32_TLSLE_LDST128_TPREL_LO12_NC, 0x079)
210ELF_RELOC(R_AARCH64_P32_TLSDESC_LD_PREL19, 0x07a)
211ELF_RELOC(R_AARCH64_P32_TLSDESC_ADR_PREL21, 0x07b)
212ELF_RELOC(R_AARCH64_P32_TLSDESC_ADR_PAGE21, 0x07c)
213ELF_RELOC(R_AARCH64_P32_TLSDESC_LD32_LO12, 0x07d)
214ELF_RELOC(R_AARCH64_P32_TLSDESC_ADD_LO12, 0x07e)
215ELF_RELOC(R_AARCH64_P32_TLSDESC_CALL, 0x07f)
216// Dynamic relocations start
217ELF_RELOC(R_AARCH64_P32_COPY, 0x0b4)
218ELF_RELOC(R_AARCH64_P32_GLOB_DAT, 0x0b5)
219ELF_RELOC(R_AARCH64_P32_JUMP_SLOT, 0x0b6)
220ELF_RELOC(R_AARCH64_P32_RELATIVE, 0x0b7)
221ELF_RELOC(R_AARCH64_P32_TLS_DTPREL, 0x0b8)
222ELF_RELOC(R_AARCH64_P32_TLS_DTPMOD, 0x0b9)
223ELF_RELOC(R_AARCH64_P32_TLS_TPREL, 0x0ba)
224ELF_RELOC(R_AARCH64_P32_TLSDESC, 0x0bb)
225ELF_RELOC(R_AARCH64_P32_IRELATIVE, 0x0bc)
226