xref: /llvm-project/llvm/test/tools/llvm-readobj/ELF/reloc-types-loongarch64.test (revision 4a5ebc7f6538dbebe9d671346de6138de657cb7d)
1## Test that llvm-readobj/llvm-readelf shows proper relocation type
2## names and values for loongarch64 target.
3
4# RUN: yaml2obj %s -o %t-loongarch64.o
5# RUN: llvm-readobj -r --expand-relocs %t-loongarch64.o | FileCheck %s
6
7# CHECK: Type: R_LARCH_NONE (0)
8# CHECK: Type: R_LARCH_32 (1)
9# CHECK: Type: R_LARCH_64 (2)
10# CHECK: Type: R_LARCH_RELATIVE (3)
11# CHECK: Type: R_LARCH_COPY (4)
12# CHECK: Type: R_LARCH_JUMP_SLOT (5)
13# CHECK: Type: R_LARCH_TLS_DTPMOD32 (6)
14# CHECK: Type: R_LARCH_TLS_DTPMOD64 (7)
15# CHECK: Type: R_LARCH_TLS_DTPREL32 (8)
16# CHECK: Type: R_LARCH_TLS_DTPREL64 (9)
17# CHECK: Type: R_LARCH_TLS_TPREL32 (10)
18# CHECK: Type: R_LARCH_TLS_TPREL64 (11)
19# CHECK: Type: R_LARCH_IRELATIVE (12)
20# CHECK: Type: R_LARCH_TLS_DESC32 (13)
21# CHECK: Type: R_LARCH_TLS_DESC64 (14)
22# CHECK: Type: R_LARCH_MARK_LA (20)
23# CHECK: Type: R_LARCH_MARK_PCREL (21)
24# CHECK: Type: R_LARCH_SOP_PUSH_PCREL (22)
25# CHECK: Type: R_LARCH_SOP_PUSH_ABSOLUTE (23)
26# CHECK: Type: R_LARCH_SOP_PUSH_DUP (24)
27# CHECK: Type: R_LARCH_SOP_PUSH_GPREL (25)
28# CHECK: Type: R_LARCH_SOP_PUSH_TLS_TPREL (26)
29# CHECK: Type: R_LARCH_SOP_PUSH_TLS_GOT (27)
30# CHECK: Type: R_LARCH_SOP_PUSH_TLS_GD (28)
31# CHECK: Type: R_LARCH_SOP_PUSH_PLT_PCREL (29)
32# CHECK: Type: R_LARCH_SOP_ASSERT (30)
33# CHECK: Type: R_LARCH_SOP_NOT (31)
34# CHECK: Type: R_LARCH_SOP_SUB (32)
35# CHECK: Type: R_LARCH_SOP_SL (33)
36# CHECK: Type: R_LARCH_SOP_SR (34)
37# CHECK: Type: R_LARCH_SOP_ADD (35)
38# CHECK: Type: R_LARCH_SOP_AND (36)
39# CHECK: Type: R_LARCH_SOP_IF_ELSE (37)
40# CHECK: Type: R_LARCH_SOP_POP_32_S_10_5 (38)
41# CHECK: Type: R_LARCH_SOP_POP_32_U_10_12 (39)
42# CHECK: Type: R_LARCH_SOP_POP_32_S_10_12 (40)
43# CHECK: Type: R_LARCH_SOP_POP_32_S_10_16 (41)
44# CHECK: Type: R_LARCH_SOP_POP_32_S_10_16_S2 (42)
45# CHECK: Type: R_LARCH_SOP_POP_32_S_5_20 (43)
46# CHECK: Type: R_LARCH_SOP_POP_32_S_0_5_10_16_S2 (44)
47# CHECK: Type: R_LARCH_SOP_POP_32_S_0_10_10_16_S2 (45)
48# CHECK: Type: R_LARCH_SOP_POP_32_U (46)
49# CHECK: Type: R_LARCH_ADD8 (47)
50# CHECK: Type: R_LARCH_ADD16 (48)
51# CHECK: Type: R_LARCH_ADD24 (49)
52# CHECK: Type: R_LARCH_ADD32 (50)
53# CHECK: Type: R_LARCH_ADD64 (51)
54# CHECK: Type: R_LARCH_SUB8 (52)
55# CHECK: Type: R_LARCH_SUB16 (53)
56# CHECK: Type: R_LARCH_SUB24 (54)
57# CHECK: Type: R_LARCH_SUB32 (55)
58# CHECK: Type: R_LARCH_SUB64 (56)
59# CHECK: Type: R_LARCH_GNU_VTINHERIT (57)
60# CHECK: Type: R_LARCH_GNU_VTENTRY (58)
61# CHECK: Type: R_LARCH_B16 (64)
62# CHECK: Type: R_LARCH_B21 (65)
63# CHECK: Type: R_LARCH_B26 (66)
64# CHECK: Type: R_LARCH_ABS_HI20 (67)
65# CHECK: Type: R_LARCH_ABS_LO12 (68)
66# CHECK: Type: R_LARCH_ABS64_LO20 (69)
67# CHECK: Type: R_LARCH_ABS64_HI12 (70)
68# CHECK: Type: R_LARCH_PCALA_HI20 (71)
69# CHECK: Type: R_LARCH_PCALA_LO12 (72)
70# CHECK: Type: R_LARCH_PCALA64_LO20 (73)
71# CHECK: Type: R_LARCH_PCALA64_HI12 (74)
72# CHECK: Type: R_LARCH_GOT_PC_HI20 (75)
73# CHECK: Type: R_LARCH_GOT_PC_LO12 (76)
74# CHECK: Type: R_LARCH_GOT64_PC_LO20 (77)
75# CHECK: Type: R_LARCH_GOT64_PC_HI12 (78)
76# CHECK: Type: R_LARCH_GOT_HI20 (79)
77# CHECK: Type: R_LARCH_GOT_LO12 (80)
78# CHECK: Type: R_LARCH_GOT64_LO20 (81)
79# CHECK: Type: R_LARCH_GOT64_HI12 (82)
80# CHECK: Type: R_LARCH_TLS_LE_HI20 (83)
81# CHECK: Type: R_LARCH_TLS_LE_LO12 (84)
82# CHECK: Type: R_LARCH_TLS_LE64_LO20 (85)
83# CHECK: Type: R_LARCH_TLS_LE64_HI12 (86)
84# CHECK: Type: R_LARCH_TLS_IE_PC_HI20 (87)
85# CHECK: Type: R_LARCH_TLS_IE_PC_LO12 (88)
86# CHECK: Type: R_LARCH_TLS_IE64_PC_LO20 (89)
87# CHECK: Type: R_LARCH_TLS_IE64_PC_HI12 (90)
88# CHECK: Type: R_LARCH_TLS_IE_HI20 (91)
89# CHECK: Type: R_LARCH_TLS_IE_LO12 (92)
90# CHECK: Type: R_LARCH_TLS_IE64_LO20 (93)
91# CHECK: Type: R_LARCH_TLS_IE64_HI12 (94)
92# CHECK: Type: R_LARCH_TLS_LD_PC_HI20 (95)
93# CHECK: Type: R_LARCH_TLS_LD_HI20 (96)
94# CHECK: Type: R_LARCH_TLS_GD_PC_HI20 (97)
95# CHECK: Type: R_LARCH_TLS_GD_HI20 (98)
96# CHECK: Type: R_LARCH_32_PCREL (99)
97# CHECK: Type: R_LARCH_RELAX (100)
98# CHECK: Type: R_LARCH_ALIGN (102)
99# CHECK: Type: R_LARCH_PCREL20_S2 (103)
100# CHECK: Type: R_LARCH_ADD6 (105)
101# CHECK: Type: R_LARCH_SUB6 (106)
102# CHECK: Type: R_LARCH_ADD_ULEB128 (107)
103# CHECK: Type: R_LARCH_SUB_ULEB128 (108)
104# CHECK: Type: R_LARCH_64_PCREL (109)
105# CHECK: Type: R_LARCH_CALL36 (110)
106# CHECK: Type: R_LARCH_TLS_DESC_PC_HI20 (111)
107# CHECK: Type: R_LARCH_TLS_DESC_PC_LO12 (112)
108# CHECK: Type: R_LARCH_TLS_DESC64_PC_LO20 (113)
109# CHECK: Type: R_LARCH_TLS_DESC64_PC_HI12 (114)
110# CHECK: Type: R_LARCH_TLS_DESC_HI20 (115)
111# CHECK: Type: R_LARCH_TLS_DESC_LO12 (116)
112# CHECK: Type: R_LARCH_TLS_DESC64_LO20 (117)
113# CHECK: Type: R_LARCH_TLS_DESC64_HI12 (118)
114# CHECK: Type: R_LARCH_TLS_DESC_LD (119)
115# CHECK: Type: R_LARCH_TLS_DESC_CALL (120)
116# CHECK: Type: R_LARCH_TLS_LE_HI20_R (121)
117# CHECK: Type: R_LARCH_TLS_LE_ADD_R (122)
118# CHECK: Type: R_LARCH_TLS_LE_LO12_R (123)
119# CHECK: Type: R_LARCH_TLS_LD_PCREL20_S2 (124)
120# CHECK: Type: R_LARCH_TLS_GD_PCREL20_S2 (125)
121# CHECK: Type: R_LARCH_TLS_DESC_PCREL20_S2 (126)
122
123--- !ELF
124FileHeader:
125  Class:   ELFCLASS64
126  Data:    ELFDATA2LSB
127  Type:    ET_REL
128  Machine: EM_LOONGARCH
129Sections:
130  - Name: .rela.text
131    Type: SHT_RELA
132    Relocations:
133      - Type: R_LARCH_NONE
134      - Type: R_LARCH_32
135      - Type: R_LARCH_64
136      - Type: R_LARCH_RELATIVE
137      - Type: R_LARCH_COPY
138      - Type: R_LARCH_JUMP_SLOT
139      - Type: R_LARCH_TLS_DTPMOD32
140      - Type: R_LARCH_TLS_DTPMOD64
141      - Type: R_LARCH_TLS_DTPREL32
142      - Type: R_LARCH_TLS_DTPREL64
143      - Type: R_LARCH_TLS_TPREL32
144      - Type: R_LARCH_TLS_TPREL64
145      - Type: R_LARCH_IRELATIVE
146      - Type: R_LARCH_TLS_DESC32
147      - Type: R_LARCH_TLS_DESC64
148      - Type: R_LARCH_MARK_LA
149      - Type: R_LARCH_MARK_PCREL
150      - Type: R_LARCH_SOP_PUSH_PCREL
151      - Type: R_LARCH_SOP_PUSH_ABSOLUTE
152      - Type: R_LARCH_SOP_PUSH_DUP
153      - Type: R_LARCH_SOP_PUSH_GPREL
154      - Type: R_LARCH_SOP_PUSH_TLS_TPREL
155      - Type: R_LARCH_SOP_PUSH_TLS_GOT
156      - Type: R_LARCH_SOP_PUSH_TLS_GD
157      - Type: R_LARCH_SOP_PUSH_PLT_PCREL
158      - Type: R_LARCH_SOP_ASSERT
159      - Type: R_LARCH_SOP_NOT
160      - Type: R_LARCH_SOP_SUB
161      - Type: R_LARCH_SOP_SL
162      - Type: R_LARCH_SOP_SR
163      - Type: R_LARCH_SOP_ADD
164      - Type: R_LARCH_SOP_AND
165      - Type: R_LARCH_SOP_IF_ELSE
166      - Type: R_LARCH_SOP_POP_32_S_10_5
167      - Type: R_LARCH_SOP_POP_32_U_10_12
168      - Type: R_LARCH_SOP_POP_32_S_10_12
169      - Type: R_LARCH_SOP_POP_32_S_10_16
170      - Type: R_LARCH_SOP_POP_32_S_10_16_S2
171      - Type: R_LARCH_SOP_POP_32_S_5_20
172      - Type: R_LARCH_SOP_POP_32_S_0_5_10_16_S2
173      - Type: R_LARCH_SOP_POP_32_S_0_10_10_16_S2
174      - Type: R_LARCH_SOP_POP_32_U
175      - Type: R_LARCH_ADD8
176      - Type: R_LARCH_ADD16
177      - Type: R_LARCH_ADD24
178      - Type: R_LARCH_ADD32
179      - Type: R_LARCH_ADD64
180      - Type: R_LARCH_SUB8
181      - Type: R_LARCH_SUB16
182      - Type: R_LARCH_SUB24
183      - Type: R_LARCH_SUB32
184      - Type: R_LARCH_SUB64
185      - Type: R_LARCH_GNU_VTINHERIT
186      - Type: R_LARCH_GNU_VTENTRY
187      - Type: R_LARCH_B16
188      - Type: R_LARCH_B21
189      - Type: R_LARCH_B26
190      - Type: R_LARCH_ABS_HI20
191      - Type: R_LARCH_ABS_LO12
192      - Type: R_LARCH_ABS64_LO20
193      - Type: R_LARCH_ABS64_HI12
194      - Type: R_LARCH_PCALA_HI20
195      - Type: R_LARCH_PCALA_LO12
196      - Type: R_LARCH_PCALA64_LO20
197      - Type: R_LARCH_PCALA64_HI12
198      - Type: R_LARCH_GOT_PC_HI20
199      - Type: R_LARCH_GOT_PC_LO12
200      - Type: R_LARCH_GOT64_PC_LO20
201      - Type: R_LARCH_GOT64_PC_HI12
202      - Type: R_LARCH_GOT_HI20
203      - Type: R_LARCH_GOT_LO12
204      - Type: R_LARCH_GOT64_LO20
205      - Type: R_LARCH_GOT64_HI12
206      - Type: R_LARCH_TLS_LE_HI20
207      - Type: R_LARCH_TLS_LE_LO12
208      - Type: R_LARCH_TLS_LE64_LO20
209      - Type: R_LARCH_TLS_LE64_HI12
210      - Type: R_LARCH_TLS_IE_PC_HI20
211      - Type: R_LARCH_TLS_IE_PC_LO12
212      - Type: R_LARCH_TLS_IE64_PC_LO20
213      - Type: R_LARCH_TLS_IE64_PC_HI12
214      - Type: R_LARCH_TLS_IE_HI20
215      - Type: R_LARCH_TLS_IE_LO12
216      - Type: R_LARCH_TLS_IE64_LO20
217      - Type: R_LARCH_TLS_IE64_HI12
218      - Type: R_LARCH_TLS_LD_PC_HI20
219      - Type: R_LARCH_TLS_LD_HI20
220      - Type: R_LARCH_TLS_GD_PC_HI20
221      - Type: R_LARCH_TLS_GD_HI20
222      - Type: R_LARCH_32_PCREL
223      - Type: R_LARCH_RELAX
224      - Type: R_LARCH_ALIGN
225      - Type: R_LARCH_PCREL20_S2
226      - Type: R_LARCH_ADD6
227      - Type: R_LARCH_SUB6
228      - Type: R_LARCH_ADD_ULEB128
229      - Type: R_LARCH_SUB_ULEB128
230      - Type: R_LARCH_64_PCREL
231      - Type: R_LARCH_CALL36
232      - Type: R_LARCH_TLS_DESC_PC_HI20
233      - Type: R_LARCH_TLS_DESC_PC_LO12
234      - Type: R_LARCH_TLS_DESC64_PC_LO20
235      - Type: R_LARCH_TLS_DESC64_PC_HI12
236      - Type: R_LARCH_TLS_DESC_HI20
237      - Type: R_LARCH_TLS_DESC_LO12
238      - Type: R_LARCH_TLS_DESC64_LO20
239      - Type: R_LARCH_TLS_DESC64_HI12
240      - Type: R_LARCH_TLS_DESC_LD
241      - Type: R_LARCH_TLS_DESC_CALL
242      - Type: R_LARCH_TLS_LE_HI20_R
243      - Type: R_LARCH_TLS_LE_ADD_R
244      - Type: R_LARCH_TLS_LE_LO12_R
245      - Type: R_LARCH_TLS_LD_PCREL20_S2
246      - Type: R_LARCH_TLS_GD_PCREL20_S2
247      - Type: R_LARCH_TLS_DESC_PCREL20_S2
248