1## Test that llvm-readobj/llvm-readelf shows proper relocation type
2## names and values for aarch64 target.
3
4# RUN: yaml2obj %s -o %t-aarch64.o
5# RUN: llvm-readobj -r --expand-relocs %t-aarch64.o | FileCheck %s
6
7# CHECK: Type: R_AARCH64_NONE (0)
8# CHECK: Type: R_AARCH64_ABS64 (257)
9# CHECK: Type: R_AARCH64_ABS32 (258)
10# CHECK: Type: R_AARCH64_ABS16 (259)
11# CHECK: Type: R_AARCH64_PREL64 (260)
12# CHECK: Type: R_AARCH64_PREL32 (261)
13# CHECK: Type: R_AARCH64_PREL16 (262)
14# CHECK: Type: R_AARCH64_MOVW_UABS_G0 (263)
15# CHECK: Type: R_AARCH64_MOVW_UABS_G0_NC (264)
16# CHECK: Type: R_AARCH64_MOVW_UABS_G1 (265)
17# CHECK: Type: R_AARCH64_MOVW_UABS_G1_NC (266)
18# CHECK: Type: R_AARCH64_MOVW_UABS_G2 (267)
19# CHECK: Type: R_AARCH64_MOVW_UABS_G2_NC (268)
20# CHECK: Type: R_AARCH64_MOVW_UABS_G3 (269)
21# CHECK: Type: R_AARCH64_MOVW_SABS_G0 (270)
22# CHECK: Type: R_AARCH64_MOVW_SABS_G1 (271)
23# CHECK: Type: R_AARCH64_MOVW_SABS_G2 (272)
24# CHECK: Type: R_AARCH64_LD_PREL_LO19 (273)
25# CHECK: Type: R_AARCH64_ADR_PREL_LO21 (274)
26# CHECK: Type: R_AARCH64_ADR_PREL_PG_HI21 (275)
27# CHECK: Type: R_AARCH64_ADR_PREL_PG_HI21_NC (276)
28# CHECK: Type: R_AARCH64_ADD_ABS_LO12_NC (277)
29# CHECK: Type: R_AARCH64_LDST8_ABS_LO12_NC (278)
30# CHECK: Type: R_AARCH64_TSTBR14 (279)
31# CHECK: Type: R_AARCH64_CONDBR19 (280)
32# CHECK: Type: R_AARCH64_JUMP26 (282)
33# CHECK: Type: R_AARCH64_CALL26 (283)
34# CHECK: Type: R_AARCH64_LDST16_ABS_LO12_NC (284)
35# CHECK: Type: R_AARCH64_LDST32_ABS_LO12_NC (285)
36# CHECK: Type: R_AARCH64_LDST64_ABS_LO12_NC (286)
37# CHECK: Type: R_AARCH64_MOVW_PREL_G0 (287)
38# CHECK: Type: R_AARCH64_MOVW_PREL_G0_NC (288)
39# CHECK: Type: R_AARCH64_MOVW_PREL_G1 (289)
40# CHECK: Type: R_AARCH64_MOVW_PREL_G1_NC (290)
41# CHECK: Type: R_AARCH64_MOVW_PREL_G2 (291)
42# CHECK: Type: R_AARCH64_MOVW_PREL_G2_NC (292)
43# CHECK: Type: R_AARCH64_MOVW_PREL_G3 (293)
44# CHECK: Type: R_AARCH64_LDST128_ABS_LO12_NC (299)
45# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G0 (300)
46# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G0_NC (301)
47# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G1 (302)
48# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G1_NC (303)
49# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G2 (304)
50# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G2_NC (305)
51# CHECK: Type: R_AARCH64_MOVW_GOTOFF_G3 (306)
52# CHECK: Type: R_AARCH64_GOTREL64 (307)
53# CHECK: Type: R_AARCH64_GOTREL32 (308)
54# CHECK: Type: R_AARCH64_GOT_LD_PREL19 (309)
55# CHECK: Type: R_AARCH64_LD64_GOTOFF_LO15 (310)
56# CHECK: Type: R_AARCH64_ADR_GOT_PAGE (311)
57# CHECK: Type: R_AARCH64_LD64_GOT_LO12_NC (312)
58# CHECK: Type: R_AARCH64_LD64_GOTPAGE_LO15 (313)
59# CHECK: Type: R_AARCH64_PLT32 (314)
60# CHECK: Type: R_AARCH64_TLSGD_ADR_PREL21 (512)
61# CHECK: Type: R_AARCH64_TLSGD_ADR_PAGE21 (513)
62# CHECK: Type: R_AARCH64_TLSGD_ADD_LO12_NC (514)
63# CHECK: Type: R_AARCH64_TLSGD_MOVW_G1 (515)
64# CHECK: Type: R_AARCH64_TLSGD_MOVW_G0_NC (516)
65# CHECK: Type: R_AARCH64_TLSLD_ADR_PREL21 (517)
66# CHECK: Type: R_AARCH64_TLSLD_ADR_PAGE21 (518)
67# CHECK: Type: R_AARCH64_TLSLD_ADD_LO12_NC (519)
68# CHECK: Type: R_AARCH64_TLSLD_MOVW_G1 (520)
69# CHECK: Type: R_AARCH64_TLSLD_MOVW_G0_NC (521)
70# CHECK: Type: R_AARCH64_TLSLD_LD_PREL19 (522)
71# CHECK: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G2 (523)
72# CHECK: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G1 (524)
73# CHECK: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC (525)
74# CHECK: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G0 (526)
75# CHECK: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC (527)
76# CHECK: Type: R_AARCH64_TLSLD_ADD_DTPREL_HI12 (528)
77# CHECK: Type: R_AARCH64_TLSLD_ADD_DTPREL_LO12 (529)
78# CHECK: Type: R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC (530)
79# CHECK: Type: R_AARCH64_TLSLD_LDST8_DTPREL_LO12 (531)
80# CHECK: Type: R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC (532)
81# CHECK: Type: R_AARCH64_TLSLD_LDST16_DTPREL_LO12 (533)
82# CHECK: Type: R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC (534)
83# CHECK: Type: R_AARCH64_TLSLD_LDST32_DTPREL_LO12 (535)
84# CHECK: Type: R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC (536)
85# CHECK: Type: R_AARCH64_TLSLD_LDST64_DTPREL_LO12 (537)
86# CHECK: Type: R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC (538)
87# CHECK: Type: R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 (539)
88# CHECK: Type: R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC (540)
89# CHECK: Type: R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 (541)
90# CHECK: Type: R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC (542)
91# CHECK: Type: R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 (543)
92# CHECK: Type: R_AARCH64_TLSLE_MOVW_TPREL_G2 (544)
93# CHECK: Type: R_AARCH64_TLSLE_MOVW_TPREL_G1 (545)
94# CHECK: Type: R_AARCH64_TLSLE_MOVW_TPREL_G1_NC (546)
95# CHECK: Type: R_AARCH64_TLSLE_MOVW_TPREL_G0 (547)
96# CHECK: Type: R_AARCH64_TLSLE_MOVW_TPREL_G0_NC (548)
97# CHECK: Type: R_AARCH64_TLSLE_ADD_TPREL_HI12 (549)
98# CHECK: Type: R_AARCH64_TLSLE_ADD_TPREL_LO12 (550)
99# CHECK: Type: R_AARCH64_TLSLE_ADD_TPREL_LO12_NC (551)
100# CHECK: Type: R_AARCH64_TLSLE_LDST8_TPREL_LO12 (552)
101# CHECK: Type: R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC (553)
102# CHECK: Type: R_AARCH64_TLSLE_LDST16_TPREL_LO12 (554)
103# CHECK: Type: R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC (555)
104# CHECK: Type: R_AARCH64_TLSLE_LDST32_TPREL_LO12 (556)
105# CHECK: Type: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC (557)
106# CHECK: Type: R_AARCH64_TLSLE_LDST64_TPREL_LO12 (558)
107# CHECK: Type: R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC (559)
108# CHECK: Type: R_AARCH64_TLSDESC_LD_PREL19 (560)
109# CHECK: Type: R_AARCH64_TLSDESC_ADR_PREL21 (561)
110# CHECK: Type: R_AARCH64_TLSDESC_ADR_PAGE21 (562)
111# CHECK: Type: R_AARCH64_TLSDESC_LD64_LO12 (563)
112# CHECK: Type: R_AARCH64_TLSDESC_ADD_LO12 (564)
113# CHECK: Type: R_AARCH64_TLSDESC_OFF_G1 (565)
114# CHECK: Type: R_AARCH64_TLSDESC_OFF_G0_NC (566)
115# CHECK: Type: R_AARCH64_TLSDESC_LDR (567)
116# CHECK: Type: R_AARCH64_TLSDESC_ADD (568)
117# CHECK: Type: R_AARCH64_TLSDESC_CALL (569)
118# CHECK: Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12 (570)
119# CHECK: Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC (571)
120# CHECK: Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12 (572)
121# CHECK: Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC (573)
122# CHECK: Type: R_AARCH64_COPY (1024)
123# CHECK: Type: R_AARCH64_GLOB_DAT (1025)
124# CHECK: Type: R_AARCH64_JUMP_SLOT (1026)
125# CHECK: Type: R_AARCH64_RELATIVE (1027)
126# CHECK: Type: R_AARCH64_TLS_DTPMOD64 (1028)
127# CHECK: Type: R_AARCH64_TLS_DTPREL64 (1029)
128# CHECK: Type: R_AARCH64_TLS_TPREL64 (1030)
129# CHECK: Type: R_AARCH64_TLSDESC (1031)
130# CHECK: Type: R_AARCH64_IRELATIVE (1032)
131
132--- !ELF
133FileHeader:
134  Class:   ELFCLASS64
135  Data:    ELFDATA2LSB
136  Type:    ET_REL
137  Machine: EM_AARCH64
138Sections:
139  - Name: .rela.text
140    Type: SHT_RELA
141    Relocations:
142      - Type: R_AARCH64_NONE
143      - Type: R_AARCH64_ABS64
144      - Type: R_AARCH64_ABS32
145      - Type: R_AARCH64_ABS16
146      - Type: R_AARCH64_PREL64
147      - Type: R_AARCH64_PREL32
148      - Type: R_AARCH64_PREL16
149      - Type: R_AARCH64_MOVW_UABS_G0
150      - Type: R_AARCH64_MOVW_UABS_G0_NC
151      - Type: R_AARCH64_MOVW_UABS_G1
152      - Type: R_AARCH64_MOVW_UABS_G1_NC
153      - Type: R_AARCH64_MOVW_UABS_G2
154      - Type: R_AARCH64_MOVW_UABS_G2_NC
155      - Type: R_AARCH64_MOVW_UABS_G3
156      - Type: R_AARCH64_MOVW_SABS_G0
157      - Type: R_AARCH64_MOVW_SABS_G1
158      - Type: R_AARCH64_MOVW_SABS_G2
159      - Type: R_AARCH64_LD_PREL_LO19
160      - Type: R_AARCH64_ADR_PREL_LO21
161      - Type: R_AARCH64_ADR_PREL_PG_HI21
162      - Type: R_AARCH64_ADR_PREL_PG_HI21_NC
163      - Type: R_AARCH64_ADD_ABS_LO12_NC
164      - Type: R_AARCH64_LDST8_ABS_LO12_NC
165      - Type: R_AARCH64_TSTBR14
166      - Type: R_AARCH64_CONDBR19
167      - Type: R_AARCH64_JUMP26
168      - Type: R_AARCH64_CALL26
169      - Type: R_AARCH64_LDST16_ABS_LO12_NC
170      - Type: R_AARCH64_LDST32_ABS_LO12_NC
171      - Type: R_AARCH64_LDST64_ABS_LO12_NC
172      - Type: R_AARCH64_MOVW_PREL_G0
173      - Type: R_AARCH64_MOVW_PREL_G0_NC
174      - Type: R_AARCH64_MOVW_PREL_G1
175      - Type: R_AARCH64_MOVW_PREL_G1_NC
176      - Type: R_AARCH64_MOVW_PREL_G2
177      - Type: R_AARCH64_MOVW_PREL_G2_NC
178      - Type: R_AARCH64_MOVW_PREL_G3
179      - Type: R_AARCH64_LDST128_ABS_LO12_NC
180      - Type: R_AARCH64_MOVW_GOTOFF_G0
181      - Type: R_AARCH64_MOVW_GOTOFF_G0_NC
182      - Type: R_AARCH64_MOVW_GOTOFF_G1
183      - Type: R_AARCH64_MOVW_GOTOFF_G1_NC
184      - Type: R_AARCH64_MOVW_GOTOFF_G2
185      - Type: R_AARCH64_MOVW_GOTOFF_G2_NC
186      - Type: R_AARCH64_MOVW_GOTOFF_G3
187      - Type: R_AARCH64_GOTREL64
188      - Type: R_AARCH64_GOTREL32
189      - Type: R_AARCH64_GOT_LD_PREL19
190      - Type: R_AARCH64_LD64_GOTOFF_LO15
191      - Type: R_AARCH64_ADR_GOT_PAGE
192      - Type: R_AARCH64_LD64_GOT_LO12_NC
193      - Type: R_AARCH64_LD64_GOTPAGE_LO15
194      - Type: R_AARCH64_PLT32
195      - Type: R_AARCH64_TLSGD_ADR_PREL21
196      - Type: R_AARCH64_TLSGD_ADR_PAGE21
197      - Type: R_AARCH64_TLSGD_ADD_LO12_NC
198      - Type: R_AARCH64_TLSGD_MOVW_G1
199      - Type: R_AARCH64_TLSGD_MOVW_G0_NC
200      - Type: R_AARCH64_TLSLD_ADR_PREL21
201      - Type: R_AARCH64_TLSLD_ADR_PAGE21
202      - Type: R_AARCH64_TLSLD_ADD_LO12_NC
203      - Type: R_AARCH64_TLSLD_MOVW_G1
204      - Type: R_AARCH64_TLSLD_MOVW_G0_NC
205      - Type: R_AARCH64_TLSLD_LD_PREL19
206      - Type: R_AARCH64_TLSLD_MOVW_DTPREL_G2
207      - Type: R_AARCH64_TLSLD_MOVW_DTPREL_G1
208      - Type: R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
209      - Type: R_AARCH64_TLSLD_MOVW_DTPREL_G0
210      - Type: R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
211      - Type: R_AARCH64_TLSLD_ADD_DTPREL_HI12
212      - Type: R_AARCH64_TLSLD_ADD_DTPREL_LO12
213      - Type: R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
214      - Type: R_AARCH64_TLSLD_LDST8_DTPREL_LO12
215      - Type: R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
216      - Type: R_AARCH64_TLSLD_LDST16_DTPREL_LO12
217      - Type: R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
218      - Type: R_AARCH64_TLSLD_LDST32_DTPREL_LO12
219      - Type: R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
220      - Type: R_AARCH64_TLSLD_LDST64_DTPREL_LO12
221      - Type: R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
222      - Type: R_AARCH64_TLSIE_MOVW_GOTTPREL_G1
223      - Type: R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
224      - Type: R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
225      - Type: R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
226      - Type: R_AARCH64_TLSIE_LD_GOTTPREL_PREL19
227      - Type: R_AARCH64_TLSLE_MOVW_TPREL_G2
228      - Type: R_AARCH64_TLSLE_MOVW_TPREL_G1
229      - Type: R_AARCH64_TLSLE_MOVW_TPREL_G1_NC
230      - Type: R_AARCH64_TLSLE_MOVW_TPREL_G0
231      - Type: R_AARCH64_TLSLE_MOVW_TPREL_G0_NC
232      - Type: R_AARCH64_TLSLE_ADD_TPREL_HI12
233      - Type: R_AARCH64_TLSLE_ADD_TPREL_LO12
234      - Type: R_AARCH64_TLSLE_ADD_TPREL_LO12_NC
235      - Type: R_AARCH64_TLSLE_LDST8_TPREL_LO12
236      - Type: R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
237      - Type: R_AARCH64_TLSLE_LDST16_TPREL_LO12
238      - Type: R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
239      - Type: R_AARCH64_TLSLE_LDST32_TPREL_LO12
240      - Type: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
241      - Type: R_AARCH64_TLSLE_LDST64_TPREL_LO12
242      - Type: R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
243      - Type: R_AARCH64_TLSDESC_LD_PREL19
244      - Type: R_AARCH64_TLSDESC_ADR_PREL21
245      - Type: R_AARCH64_TLSDESC_ADR_PAGE21
246      - Type: R_AARCH64_TLSDESC_LD64_LO12
247      - Type: R_AARCH64_TLSDESC_ADD_LO12
248      - Type: R_AARCH64_TLSDESC_OFF_G1
249      - Type: R_AARCH64_TLSDESC_OFF_G0_NC
250      - Type: R_AARCH64_TLSDESC_LDR
251      - Type: R_AARCH64_TLSDESC_ADD
252      - Type: R_AARCH64_TLSDESC_CALL
253      - Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12
254      - Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC
255      - Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12
256      - Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC
257      - Type: R_AARCH64_COPY
258      - Type: R_AARCH64_GLOB_DAT
259      - Type: R_AARCH64_JUMP_SLOT
260      - Type: R_AARCH64_RELATIVE
261      - Type: R_AARCH64_TLS_DTPMOD64
262      - Type: R_AARCH64_TLS_DTPREL64
263      - Type: R_AARCH64_TLS_TPREL64
264      - Type: R_AARCH64_TLSDESC
265      - Type: R_AARCH64_IRELATIVE
266