1## Test that llvm-readobj/llvm-readelf shows proper relocation type
2## names and values for arm target.
3
4# RUN: yaml2obj %s -o %t-arm.o
5# RUN: llvm-readobj -r --expand-relocs %t-arm.o | FileCheck %s
6
7# CHECK: Type: R_ARM_NONE (0)
8# CHECK: Type: R_ARM_PC24 (1)
9# CHECK: Type: R_ARM_ABS32 (2)
10# CHECK: Type: R_ARM_REL32 (3)
11# CHECK: Type: R_ARM_LDR_PC_G0 (4)
12# CHECK: Type: R_ARM_ABS16 (5)
13# CHECK: Type: R_ARM_ABS12 (6)
14# CHECK: Type: R_ARM_THM_ABS5 (7)
15# CHECK: Type: R_ARM_ABS8 (8)
16# CHECK: Type: R_ARM_SBREL32 (9)
17# CHECK: Type: R_ARM_THM_CALL (10)
18# CHECK: Type: R_ARM_THM_PC8 (11)
19# CHECK: Type: R_ARM_BREL_ADJ (12)
20# CHECK: Type: R_ARM_TLS_DESC (13)
21# CHECK: Type: R_ARM_THM_SWI8 (14)
22# CHECK: Type: R_ARM_XPC25 (15)
23# CHECK: Type: R_ARM_THM_XPC22 (16)
24# CHECK: Type: R_ARM_TLS_DTPMOD32 (17)
25# CHECK: Type: R_ARM_TLS_DTPOFF32 (18)
26# CHECK: Type: R_ARM_TLS_TPOFF32 (19)
27# CHECK: Type: R_ARM_COPY (20)
28# CHECK: Type: R_ARM_GLOB_DAT (21)
29# CHECK: Type: R_ARM_JUMP_SLOT (22)
30# CHECK: Type: R_ARM_RELATIVE (23)
31# CHECK: Type: R_ARM_GOTOFF32 (24)
32# CHECK: Type: R_ARM_BASE_PREL (25)
33# CHECK: Type: R_ARM_GOT_BREL (26)
34# CHECK: Type: R_ARM_CALL (28)
35# CHECK: Type: R_ARM_JUMP24 (29)
36# CHECK: Type: R_ARM_THM_JUMP24 (30)
37# CHECK: Type: R_ARM_BASE_ABS (31)
38# CHECK: Type: R_ARM_ALU_PCREL_7_0 (32)
39# CHECK: Type: R_ARM_ALU_PCREL_15_8 (33)
40# CHECK: Type: R_ARM_ALU_PCREL_23_15 (34)
41# CHECK: Type: R_ARM_LDR_SBREL_11_0_NC (35)
42# CHECK: Type: R_ARM_ALU_SBREL_19_12_NC (36)
43# CHECK: Type: R_ARM_ALU_SBREL_27_20_CK (37)
44# CHECK: Type: R_ARM_TARGET1 (38)
45# CHECK: Type: R_ARM_SBREL31 (39)
46# CHECK: Type: R_ARM_V4BX (40)
47# CHECK: Type: R_ARM_TARGET2 (41)
48# CHECK: Type: R_ARM_PREL31 (42)
49# CHECK: Type: R_ARM_MOVW_ABS_NC (43)
50# CHECK: Type: R_ARM_MOVT_ABS (44)
51# CHECK: Type: R_ARM_MOVW_PREL_NC (45)
52# CHECK: Type: R_ARM_MOVT_PREL (46)
53# CHECK: Type: R_ARM_THM_MOVW_ABS_NC (47)
54# CHECK: Type: R_ARM_THM_MOVT_ABS (48)
55# CHECK: Type: R_ARM_THM_MOVW_PREL_NC (49)
56# CHECK: Type: R_ARM_THM_MOVT_PREL (50)
57# CHECK: Type: R_ARM_THM_JUMP19 (51)
58# CHECK: Type: R_ARM_THM_JUMP6 (52)
59# CHECK: Type: R_ARM_THM_ALU_PREL_11_0 (53)
60# CHECK: Type: R_ARM_THM_PC12 (54)
61# CHECK: Type: R_ARM_ABS32_NOI (55)
62# CHECK: Type: R_ARM_REL32_NOI (56)
63# CHECK: Type: R_ARM_ALU_PC_G0_NC (57)
64# CHECK: Type: R_ARM_ALU_PC_G0 (58)
65# CHECK: Type: R_ARM_ALU_PC_G1_NC (59)
66# CHECK: Type: R_ARM_ALU_PC_G1 (60)
67# CHECK: Type: R_ARM_ALU_PC_G2 (61)
68# CHECK: Type: R_ARM_LDR_PC_G1 (62)
69# CHECK: Type: R_ARM_LDR_PC_G2 (63)
70# CHECK: Type: R_ARM_LDRS_PC_G0 (64)
71# CHECK: Type: R_ARM_LDRS_PC_G1 (65)
72# CHECK: Type: R_ARM_LDRS_PC_G2 (66)
73# CHECK: Type: R_ARM_LDC_PC_G0 (67)
74# CHECK: Type: R_ARM_LDC_PC_G1 (68)
75# CHECK: Type: R_ARM_LDC_PC_G2 (69)
76# CHECK: Type: R_ARM_ALU_SB_G0_NC (70)
77# CHECK: Type: R_ARM_ALU_SB_G0 (71)
78# CHECK: Type: R_ARM_ALU_SB_G1_NC (72)
79# CHECK: Type: R_ARM_ALU_SB_G1 (73)
80# CHECK: Type: R_ARM_ALU_SB_G2 (74)
81# CHECK: Type: R_ARM_LDR_SB_G0 (75)
82# CHECK: Type: R_ARM_LDR_SB_G1 (76)
83# CHECK: Type: R_ARM_LDR_SB_G2 (77)
84# CHECK: Type: R_ARM_LDRS_SB_G0 (78)
85# CHECK: Type: R_ARM_LDRS_SB_G1 (79)
86# CHECK: Type: R_ARM_LDRS_SB_G2 (80)
87# CHECK: Type: R_ARM_LDC_SB_G0 (81)
88# CHECK: Type: R_ARM_LDC_SB_G1 (82)
89# CHECK: Type: R_ARM_LDC_SB_G2 (83)
90# CHECK: Type: R_ARM_MOVW_BREL_NC (84)
91# CHECK: Type: R_ARM_MOVT_BREL (85)
92# CHECK: Type: R_ARM_MOVW_BREL (86)
93# CHECK: Type: R_ARM_THM_MOVW_BREL_NC (87)
94# CHECK: Type: R_ARM_THM_MOVT_BREL (88)
95# CHECK: Type: R_ARM_THM_MOVW_BREL (89)
96# CHECK: Type: R_ARM_TLS_GOTDESC (90)
97# CHECK: Type: R_ARM_TLS_CALL (91)
98# CHECK: Type: R_ARM_TLS_DESCSEQ (92)
99# CHECK: Type: R_ARM_THM_TLS_CALL (93)
100# CHECK: Type: R_ARM_PLT32_ABS (94)
101# CHECK: Type: R_ARM_GOT_ABS (95)
102# CHECK: Type: R_ARM_GOT_PREL (96)
103# CHECK: Type: R_ARM_GOT_BREL12 (97)
104# CHECK: Type: R_ARM_GOTOFF12 (98)
105# CHECK: Type: R_ARM_GOTRELAX (99)
106# CHECK: Type: R_ARM_GNU_VTENTRY (100)
107# CHECK: Type: R_ARM_GNU_VTINHERIT (101)
108# CHECK: Type: R_ARM_THM_JUMP11 (102)
109# CHECK: Type: R_ARM_THM_JUMP8 (103)
110# CHECK: Type: R_ARM_TLS_GD32 (104)
111# CHECK: Type: R_ARM_TLS_LDM32 (105)
112# CHECK: Type: R_ARM_TLS_LDO32 (106)
113# CHECK: Type: R_ARM_TLS_IE32 (107)
114# CHECK: Type: R_ARM_TLS_LE32 (108)
115# CHECK: Type: R_ARM_TLS_LDO12 (109)
116# CHECK: Type: R_ARM_TLS_LE12 (110)
117# CHECK: Type: R_ARM_TLS_IE12GP (111)
118# CHECK: Type: R_ARM_PRIVATE_0 (112)
119# CHECK: Type: R_ARM_PRIVATE_1 (113)
120# CHECK: Type: R_ARM_PRIVATE_2 (114)
121# CHECK: Type: R_ARM_PRIVATE_3 (115)
122# CHECK: Type: R_ARM_PRIVATE_4 (116)
123# CHECK: Type: R_ARM_PRIVATE_5 (117)
124# CHECK: Type: R_ARM_PRIVATE_6 (118)
125# CHECK: Type: R_ARM_PRIVATE_7 (119)
126# CHECK: Type: R_ARM_PRIVATE_8 (120)
127# CHECK: Type: R_ARM_PRIVATE_9 (121)
128# CHECK: Type: R_ARM_PRIVATE_10 (122)
129# CHECK: Type: R_ARM_PRIVATE_11 (123)
130# CHECK: Type: R_ARM_PRIVATE_12 (124)
131# CHECK: Type: R_ARM_PRIVATE_13 (125)
132# CHECK: Type: R_ARM_PRIVATE_14 (126)
133# CHECK: Type: R_ARM_PRIVATE_15 (127)
134# CHECK: Type: R_ARM_ME_TOO (128)
135# CHECK: Type: R_ARM_THM_TLS_DESCSEQ16 (129)
136# CHECK: Type: R_ARM_THM_TLS_DESCSEQ32 (130)
137# CHECK: Type: R_ARM_IRELATIVE (160)
138
139--- !ELF
140FileHeader:
141  Class:   ELFCLASS32
142  Data:    ELFDATA2LSB
143  Type:    ET_REL
144  Machine: EM_ARM
145Sections:
146  - Name: .rel.text
147    Type: SHT_REL
148    Relocations:
149      - Type: R_ARM_NONE
150      - Type: R_ARM_PC24
151      - Type: R_ARM_ABS32
152      - Type: R_ARM_REL32
153      - Type: R_ARM_LDR_PC_G0
154      - Type: R_ARM_ABS16
155      - Type: R_ARM_ABS12
156      - Type: R_ARM_THM_ABS5
157      - Type: R_ARM_ABS8
158      - Type: R_ARM_SBREL32
159      - Type: R_ARM_THM_CALL
160      - Type: R_ARM_THM_PC8
161      - Type: R_ARM_BREL_ADJ
162      - Type: R_ARM_TLS_DESC
163      - Type: R_ARM_THM_SWI8
164      - Type: R_ARM_XPC25
165      - Type: R_ARM_THM_XPC22
166      - Type: R_ARM_TLS_DTPMOD32
167      - Type: R_ARM_TLS_DTPOFF32
168      - Type: R_ARM_TLS_TPOFF32
169      - Type: R_ARM_COPY
170      - Type: R_ARM_GLOB_DAT
171      - Type: R_ARM_JUMP_SLOT
172      - Type: R_ARM_RELATIVE
173      - Type: R_ARM_GOTOFF32
174      - Type: R_ARM_BASE_PREL
175      - Type: R_ARM_GOT_BREL
176      - Type: R_ARM_PLT32
177      - Type: R_ARM_CALL
178      - Type: R_ARM_JUMP24
179      - Type: R_ARM_THM_JUMP24
180      - Type: R_ARM_BASE_ABS
181      - Type: R_ARM_ALU_PCREL_7_0
182      - Type: R_ARM_ALU_PCREL_15_8
183      - Type: R_ARM_ALU_PCREL_23_15
184      - Type: R_ARM_LDR_SBREL_11_0_NC
185      - Type: R_ARM_ALU_SBREL_19_12_NC
186      - Type: R_ARM_ALU_SBREL_27_20_CK
187      - Type: R_ARM_TARGET1
188      - Type: R_ARM_SBREL31
189      - Type: R_ARM_V4BX
190      - Type: R_ARM_TARGET2
191      - Type: R_ARM_PREL31
192      - Type: R_ARM_MOVW_ABS_NC
193      - Type: R_ARM_MOVT_ABS
194      - Type: R_ARM_MOVW_PREL_NC
195      - Type: R_ARM_MOVT_PREL
196      - Type: R_ARM_THM_MOVW_ABS_NC
197      - Type: R_ARM_THM_MOVT_ABS
198      - Type: R_ARM_THM_MOVW_PREL_NC
199      - Type: R_ARM_THM_MOVT_PREL
200      - Type: R_ARM_THM_JUMP19
201      - Type: R_ARM_THM_JUMP6
202      - Type: R_ARM_THM_ALU_PREL_11_0
203      - Type: R_ARM_THM_PC12
204      - Type: R_ARM_ABS32_NOI
205      - Type: R_ARM_REL32_NOI
206      - Type: R_ARM_ALU_PC_G0_NC
207      - Type: R_ARM_ALU_PC_G0
208      - Type: R_ARM_ALU_PC_G1_NC
209      - Type: R_ARM_ALU_PC_G1
210      - Type: R_ARM_ALU_PC_G2
211      - Type: R_ARM_LDR_PC_G1
212      - Type: R_ARM_LDR_PC_G2
213      - Type: R_ARM_LDRS_PC_G0
214      - Type: R_ARM_LDRS_PC_G1
215      - Type: R_ARM_LDRS_PC_G2
216      - Type: R_ARM_LDC_PC_G0
217      - Type: R_ARM_LDC_PC_G1
218      - Type: R_ARM_LDC_PC_G2
219      - Type: R_ARM_ALU_SB_G0_NC
220      - Type: R_ARM_ALU_SB_G0
221      - Type: R_ARM_ALU_SB_G1_NC
222      - Type: R_ARM_ALU_SB_G1
223      - Type: R_ARM_ALU_SB_G2
224      - Type: R_ARM_LDR_SB_G0
225      - Type: R_ARM_LDR_SB_G1
226      - Type: R_ARM_LDR_SB_G2
227      - Type: R_ARM_LDRS_SB_G0
228      - Type: R_ARM_LDRS_SB_G1
229      - Type: R_ARM_LDRS_SB_G2
230      - Type: R_ARM_LDC_SB_G0
231      - Type: R_ARM_LDC_SB_G1
232      - Type: R_ARM_LDC_SB_G2
233      - Type: R_ARM_MOVW_BREL_NC
234      - Type: R_ARM_MOVT_BREL
235      - Type: R_ARM_MOVW_BREL
236      - Type: R_ARM_THM_MOVW_BREL_NC
237      - Type: R_ARM_THM_MOVT_BREL
238      - Type: R_ARM_THM_MOVW_BREL
239      - Type: R_ARM_TLS_GOTDESC
240      - Type: R_ARM_TLS_CALL
241      - Type: R_ARM_TLS_DESCSEQ
242      - Type: R_ARM_THM_TLS_CALL
243      - Type: R_ARM_PLT32_ABS
244      - Type: R_ARM_GOT_ABS
245      - Type: R_ARM_GOT_PREL
246      - Type: R_ARM_GOT_BREL12
247      - Type: R_ARM_GOTOFF12
248      - Type: R_ARM_GOTRELAX
249      - Type: R_ARM_GNU_VTENTRY
250      - Type: R_ARM_GNU_VTINHERIT
251      - Type: R_ARM_THM_JUMP11
252      - Type: R_ARM_THM_JUMP8
253      - Type: R_ARM_TLS_GD32
254      - Type: R_ARM_TLS_LDM32
255      - Type: R_ARM_TLS_LDO32
256      - Type: R_ARM_TLS_IE32
257      - Type: R_ARM_TLS_LE32
258      - Type: R_ARM_TLS_LDO12
259      - Type: R_ARM_TLS_LE12
260      - Type: R_ARM_TLS_IE12GP
261      - Type: R_ARM_PRIVATE_0
262      - Type: R_ARM_PRIVATE_1
263      - Type: R_ARM_PRIVATE_2
264      - Type: R_ARM_PRIVATE_3
265      - Type: R_ARM_PRIVATE_4
266      - Type: R_ARM_PRIVATE_5
267      - Type: R_ARM_PRIVATE_6
268      - Type: R_ARM_PRIVATE_7
269      - Type: R_ARM_PRIVATE_8
270      - Type: R_ARM_PRIVATE_9
271      - Type: R_ARM_PRIVATE_10
272      - Type: R_ARM_PRIVATE_11
273      - Type: R_ARM_PRIVATE_12
274      - Type: R_ARM_PRIVATE_13
275      - Type: R_ARM_PRIVATE_14
276      - Type: R_ARM_PRIVATE_15
277      - Type: R_ARM_ME_TOO
278      - Type: R_ARM_THM_TLS_DESCSEQ16
279      - Type: R_ARM_THM_TLS_DESCSEQ32
280      - Type: R_ARM_IRELATIVE
281