1-
21#ifndef ELF_RELOC
32#error "ELF_RELOC must be defined"
43#endif
54
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.
5+ // Based on released ABI: https://github.com/ARM-software/abi-aa, aaelf64.
6+ // ELF64
7+ // Null relocation: also 0x100 for ELF64
98ELF_RELOC(R_AARCH64_NONE, 0)
9+ // Data relocations
1010ELF_RELOC(R_AARCH64_ABS64, 0x101)
1111ELF_RELOC(R_AARCH64_ABS32, 0x102)
1212ELF_RELOC(R_AARCH64_ABS16, 0x103)
1313ELF_RELOC(R_AARCH64_PREL64, 0x104)
1414ELF_RELOC(R_AARCH64_PREL32, 0x105)
1515ELF_RELOC(R_AARCH64_PREL16, 0x106)
16+ // Static AArch64 relocations
1617ELF_RELOC(R_AARCH64_MOVW_UABS_G0, 0x107)
1718ELF_RELOC(R_AARCH64_MOVW_UABS_G0_NC, 0x108)
1819ELF_RELOC(R_AARCH64_MOVW_UABS_G1, 0x109)
@@ -59,11 +60,16 @@ ELF_RELOC(R_AARCH64_ADR_GOT_PAGE, 0x137)
5960ELF_RELOC(R_AARCH64_LD64_GOT_LO12_NC, 0x138)
6061ELF_RELOC(R_AARCH64_LD64_GOTPAGE_LO15, 0x139)
6162ELF_RELOC(R_AARCH64_PLT32, 0x13a)
63+ ELF_RELOC(R_AARCH64_GOTPCREL32, 0x13b)
64+ ELF_RELOC(R_AARCH64_PATCHINST, 0x13c)
65+ ELF_RELOC(R_AARCH64_FUNCINIT64, 0x13d)
66+ // General dynamic TLS relocations
6267ELF_RELOC(R_AARCH64_TLSGD_ADR_PREL21, 0x200)
6368ELF_RELOC(R_AARCH64_TLSGD_ADR_PAGE21, 0x201)
6469ELF_RELOC(R_AARCH64_TLSGD_ADD_LO12_NC, 0x202)
6570ELF_RELOC(R_AARCH64_TLSGD_MOVW_G1, 0x203)
6671ELF_RELOC(R_AARCH64_TLSGD_MOVW_G0_NC, 0x204)
72+ // Local dynamic TLS relocations
6773ELF_RELOC(R_AARCH64_TLSLD_ADR_PREL21, 0x205)
6874ELF_RELOC(R_AARCH64_TLSLD_ADR_PAGE21, 0x206)
6975ELF_RELOC(R_AARCH64_TLSLD_ADD_LO12_NC, 0x207)
@@ -91,6 +97,7 @@ ELF_RELOC(R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC, 0x21c)
9197ELF_RELOC(R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21, 0x21d)
9298ELF_RELOC(R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC, 0x21e)
9399ELF_RELOC(R_AARCH64_TLSIE_LD_GOTTPREL_PREL19, 0x21f)
100+ // Local exec TLS relocations
94101ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G2, 0x220)
95102ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G1, 0x221)
96103ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G1_NC, 0x222)
@@ -107,6 +114,7 @@ ELF_RELOC(R_AARCH64_TLSLE_LDST32_TPREL_LO12, 0x22c)
107114ELF_RELOC(R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC, 0x22d)
108115ELF_RELOC(R_AARCH64_TLSLE_LDST64_TPREL_LO12, 0x22e)
109116ELF_RELOC(R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC, 0x22f)
117+ // TLS descriptor relocations
110118ELF_RELOC(R_AARCH64_TLSDESC_LD_PREL19, 0x230)
111119ELF_RELOC(R_AARCH64_TLSDESC_ADR_PREL21, 0x231)
112120ELF_RELOC(R_AARCH64_TLSDESC_ADR_PAGE21, 0x232)
@@ -121,7 +129,7 @@ ELF_RELOC(R_AARCH64_TLSLE_LDST128_TPREL_LO12, 0x23a)
121129ELF_RELOC(R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC, 0x23b)
122130ELF_RELOC(R_AARCH64_TLSLD_LDST128_DTPREL_LO12, 0x23c)
123131ELF_RELOC(R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC, 0x23d)
124- // Dynamic relocations start
132+ // Dynamic relocations
125133ELF_RELOC(R_AARCH64_COPY, 0x400)
126134ELF_RELOC(R_AARCH64_GLOB_DAT, 0x401)
127135ELF_RELOC(R_AARCH64_JUMP_SLOT, 0x402)
@@ -134,7 +142,32 @@ ELF_RELOC(R_AARCH64_TLS_DTPREL64, 0x405)
134142ELF_RELOC(R_AARCH64_TLS_TPREL64, 0x406)
135143ELF_RELOC(R_AARCH64_TLSDESC, 0x407)
136144ELF_RELOC(R_AARCH64_IRELATIVE, 0x408)
145+ // PAuthABI static and dynamic relocations: defined in pauthabielf64,
146+ // https://github.com/ARM-software/abi-aa
147+ ELF_RELOC(R_AARCH64_AUTH_ABS64, 0x244)
148+ ELF_RELOC(R_AARCH64_AUTH_MOVW_GOTOFF_G0, 0x245)
149+ ELF_RELOC(R_AARCH64_AUTH_MOVW_GOTOFF_G0_NC, 0x246)
150+ ELF_RELOC(R_AARCH64_AUTH_MOVW_GOTOFF_G1, 0x247)
151+ ELF_RELOC(R_AARCH64_AUTH_MOVW_GOTOFF_G1_NC, 0x248)
152+ ELF_RELOC(R_AARCH64_AUTH_MOVW_GOTOFF_G2, 0x249)
153+ ELF_RELOC(R_AARCH64_AUTH_MOVW_GOTOFF_G2_NC, 0x24a)
154+ ELF_RELOC(R_AARCH64_AUTH_MOVW_GOTOFF_G3, 0x24b)
155+ ELF_RELOC(R_AARCH64_AUTH_GOT_LD_PREL19, 0x24c)
156+ ELF_RELOC(R_AARCH64_AUTH_LD64_GOTOFF_LO15, 0x24d)
157+ ELF_RELOC(R_AARCH64_AUTH_ADR_GOT_PAGE, 0x24e)
158+ ELF_RELOC(R_AARCH64_AUTH_LD64_GOT_LO12_NC, 0x24f)
159+ ELF_RELOC(R_AARCH64_AUTH_LD64_GOTPAGE_LO15, 0x250)
160+ ELF_RELOC(R_AARCH64_AUTH_GOT_ADD_LO12_NC, 0x251)
161+ ELF_RELOC(R_AARCH64_AUTH_GOT_ADR_PREL_LO21, 0x252)
162+ ELF_RELOC(R_AARCH64_AUTH_TLSDESC_ADR_PAGE21, 0x253)
163+ ELF_RELOC(R_AARCH64_AUTH_TLSDESC_LD64_LO12, 0x254)
164+ ELF_RELOC(R_AARCH64_AUTH_TLSDESC_ADD_LO12, 0x255)
165+ ELF_RELOC(R_AARCH64_AUTH_RELATIVE, 0x411)
166+ ELF_RELOC(R_AARCH64_AUTH_GLOB_DAT, 0x412)
167+ ELF_RELOC(R_AARCH64_AUTH_TLSDESC, 0x413)
168+ ELF_RELOC(R_AARCH64_AUTH_IRELATIVE, 0x414)
137169
170+ // ELF32
138171// ELF_RELOC(R_AARCH64_P32_NONE, 0)
139172ELF_RELOC(R_AARCH64_P32_ABS32, 0x001)
140173ELF_RELOC(R_AARCH64_P32_ABS16, 0x002)
@@ -213,7 +246,7 @@ ELF_RELOC(R_AARCH64_P32_TLSDESC_ADR_PAGE21, 0x07c)
213246ELF_RELOC(R_AARCH64_P32_TLSDESC_LD32_LO12, 0x07d)
214247ELF_RELOC(R_AARCH64_P32_TLSDESC_ADD_LO12, 0x07e)
215248ELF_RELOC(R_AARCH64_P32_TLSDESC_CALL, 0x07f)
216- // Dynamic relocations start
249+ // Dynamic relocations
217250ELF_RELOC(R_AARCH64_P32_COPY, 0x0b4)
218251ELF_RELOC(R_AARCH64_P32_GLOB_DAT, 0x0b5)
219252ELF_RELOC(R_AARCH64_P32_JUMP_SLOT, 0x0b6)
0 commit comments