[JITLink][arm64] Support arm64e JIT'd code (initially enabled for MachO only).
[llvm-project.git] / lld / test / ELF / riscv-attributes.s
blob057223c18418e1e5413bda35bde751a775e01330
1 # REQUIRES: riscv
3 # RUN: rm -rf %t && split-file %s %t && cd %t
4 # RUN: llvm-mc -filetype=obj -triple=riscv64 a.s -o a.o
5 # RUN: ld.lld -e 0 a.o -o out 2>&1 | count 0
6 # RUN: llvm-readelf -S -l --arch-specific out | FileCheck %s --check-prefixes=HDR,CHECK
7 # RUN: ld.lld -e 0 a.o a.o -o out1 2>&1 | count 0
8 # RUN: llvm-readobj --arch-specific out1 | FileCheck %s
9 # RUN: ld.lld -r a.o a.o -o out1 2>&1 | count 0
10 # RUN: llvm-readobj --arch-specific out1 | FileCheck %s
12 # RUN: llvm-mc -filetype=obj -triple=riscv64 b.s -o b.o
13 # RUN: llvm-mc -filetype=obj -triple=riscv64 c.s -o c.o
14 # RUN: ld.lld a.o b.o c.o -o out2
15 # RUN: llvm-readobj --arch-specific out2 | FileCheck %s --check-prefix=CHECK2
17 # RUN: llvm-mc -filetype=obj -triple=riscv64 unrecognized_ext1.s -o unrecognized_ext1.o
18 # RUN: ld.lld -e 0 unrecognized_ext1.o -o unrecognized_ext1 2>&1 | count 0
19 # RUN: llvm-readobj --arch-specific unrecognized_ext1 | FileCheck %s --check-prefix=UNRECOGNIZED_EXT1
21 # RUN: llvm-mc -filetype=obj -triple=riscv64 unrecognized_ext2.s -o unrecognized_ext2.o
22 # RUN: ld.lld -e 0 unrecognized_ext2.o -o unrecognized_ext2 2>&1 | count 0
23 # RUN: llvm-readobj --arch-specific unrecognized_ext2 | FileCheck %s --check-prefix=UNRECOGNIZED_EXT2
25 # RUN: llvm-mc -filetype=obj -triple=riscv64 unrecognized_version.s -o unrecognized_version.o
26 # RUN: ld.lld -e 0 unrecognized_version.o -o unrecognized_version 2>&1 | count 0
27 # RUN: llvm-readobj --arch-specific unrecognized_version | FileCheck %s --check-prefix=UNRECOGNIZED_VERSION
29 # RUN: llvm-mc -filetype=obj -triple=riscv64 merge_version_test_input.s -o merge_version_test_input.o
30 # RUN: ld.lld -e 0 unrecognized_version.o merge_version_test_input.o -o out3 2>&1 | count 0
31 # RUN: llvm-readobj --arch-specific out3 | FileCheck %s --check-prefix=CHECK3
33 # RUN: llvm-mc -filetype=obj -triple=riscv64 invalid_arch1.s -o invalid_arch1.o
34 # RUN: not ld.lld invalid_arch1.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=INVALID_ARCH1 --implicit-check-not=error:
35 # INVALID_ARCH1: error: invalid_arch1.o:(.riscv.attributes): rv64i2: extension lacks version in expected format
37 ## A zero value attribute is not printed.
38 # RUN: llvm-mc -filetype=obj -triple=riscv64 unaligned_access_0.s -o unaligned_access_0.o
39 # RUN: ld.lld -e 0 --fatal-warnings a.o unaligned_access_0.o -o unaligned_access_0
40 # RUN: llvm-readobj -A unaligned_access_0 | FileCheck /dev/null --implicit-check-not='TagName: unaligned_access'
42 ## Differing stack_align values lead to an error.
43 # RUN: llvm-mc -filetype=obj -triple=riscv64 diff_stack_align.s -o diff_stack_align.o
44 # RUN: not ld.lld a.o b.o c.o diff_stack_align.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=STACK_ALIGN --implicit-check-not=error:
45 # STACK_ALIGN: error: diff_stack_align.o:(.riscv.attributes) has stack_align=32 but a.o:(.riscv.attributes) has stack_align=16
47 ## RISC-V tag merging for atomic_abi values A6C and A7 lead to an error.
48 # RUN: llvm-mc -filetype=obj -triple=riscv64 atomic_abi_A6C.s -o atomic_abi_A6C.o
49 # RUN: llvm-mc -filetype=obj -triple=riscv64 atomic_abi_A7.s -o atomic_abi_A7.o
50 # RUN: not ld.lld atomic_abi_A6C.o atomic_abi_A7.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=ATOMIC_ABI_ERROR --implicit-check-not=error:
51 # ATOMIC_ABI_ERROR: error: atomic abi mismatch for .riscv.attributes
52 # ATOMIC_ABI_ERROR-NEXT: >>> atomic_abi_A6C.o:(.riscv.attributes): atomic_abi=1
53 # ATOMIC_ABI_ERROR-NEXT: >>> atomic_abi_A7.o:(.riscv.attributes): atomic_abi=3
55 ## RISC-V tag merging for atomic_abi values A6C and invalid lead to an error.
56 # RUN: llvm-mc -filetype=obj -triple=riscv64 atomic_abi_invalid.s -o atomic_abi_invalid.o
57 # RUN: not ld.lld atomic_abi_A6C.o atomic_abi_invalid.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=ATOMIC_ABI_INVALID --implicit-check-not=error:
58 # ATOMIC_ABI_INVALID: error: unknown atomic abi for .riscv.attributes
59 # ATOMIC_ABI_INVALID-NEXT: >>> atomic_abi_invalid.o:(.riscv.attributes): atomic_abi=42
61 # RUN: llvm-mc -filetype=obj -triple=riscv64 atomic_abi_A6S.s -o atomic_abi_A6S.o
62 # RUN: ld.lld atomic_abi_A6S.o atomic_abi_A6C.o -o atomic_abi_A6C_A6S
63 # RUN: llvm-readobj -A atomic_abi_A6C_A6S | FileCheck %s --check-prefix=A6C_A6S
65 # RUN: ld.lld atomic_abi_A6S.o atomic_abi_A7.o -o atomic_abi_A6S_A7
66 # RUN: llvm-readobj -A atomic_abi_A6S_A7 | FileCheck %s --check-prefix=A6S_A7
68 # RUN: llvm-mc -filetype=obj -triple=riscv64 atomic_abi_unknown.s -o atomic_abi_unknown.o
69 # RUN: ld.lld atomic_abi_unknown.o atomic_abi_A6C.o -o atomic_abi_A6C_unknown
70 # RUN: llvm-readobj -A atomic_abi_A6C_unknown | FileCheck %s --check-prefixes=UNKNOWN_A6C
72 # RUN: ld.lld atomic_abi_unknown.o diff_stack_align.o -o atomic_abi_none_unknown
73 # RUN: llvm-readobj -A atomic_abi_none_unknown | FileCheck %s --check-prefixes=UNKNOWN_NONE
75 # RUN: ld.lld diff_stack_align.o atomic_abi_A6C.o -o atomic_abi_A6C_none
76 # RUN: llvm-readobj -A atomic_abi_A6C_none | FileCheck %s --check-prefixes=NONE_A6C
78 # RUN: ld.lld atomic_abi_unknown.o atomic_abi_A6S.o -o atomic_abi_A6S_unknown
79 # RUN: llvm-readobj -A atomic_abi_A6S_unknown | FileCheck %s --check-prefix=UNKNOWN_A6S
81 # RUN: ld.lld atomic_abi_unknown.o atomic_abi_A7.o -o atomic_abi_A7_unknown
82 # RUN: llvm-readobj -A atomic_abi_A7_unknown | FileCheck %s --check-prefix=UNKNOWN_A7
84 # RUN: ld.lld diff_stack_align.o atomic_abi_A7.o -o atomic_abi_A7_none
85 # RUN: llvm-readobj -A atomic_abi_A7_none | FileCheck %s --check-prefix=NONE_A7
87 ## The deprecated priv_spec is not handled as GNU ld does.
88 ## Differing priv_spec attributes lead to an absent attribute.
89 # RUN: llvm-mc -filetype=obj -triple=riscv64 diff_priv_spec.s -o diff_priv_spec.o
90 # RUN: ld.lld -e 0 --fatal-warnings a.o b.o c.o diff_priv_spec.o -o diff_priv_spec
91 # RUN: llvm-readobj -A diff_priv_spec | FileCheck /dev/null --implicit-check-not='TagName: priv_spec'
93 ## Unknown tags currently lead to warnings.
94 # RUN: llvm-mc -filetype=obj -triple=riscv64 unknown13.s -o unknown13.o
95 # RUN: llvm-mc -filetype=obj -triple=riscv64 unknown13a.s -o unknown13a.o
96 # RUN: ld.lld -e 0 unknown13.o unknown13.o unknown13a.o -o unknown13 2>&1 | FileCheck %s --check-prefix=UNKNOWN13 --implicit-check-not=warning:
97 # UNKNOWN13-COUNT-2: warning: unknown13.o:(.riscv.attributes): invalid tag 0xd at offset 0x10
98 # UNKNOWN13: warning: unknown13a.o:(.riscv.attributes): invalid tag 0xd at offset 0x10
100 # RUN: llvm-mc -filetype=obj -triple=riscv64 unknown22.s -o unknown22.o
101 # RUN: llvm-mc -filetype=obj -triple=riscv64 unknown22a.s -o unknown22a.o
102 # RUN: ld.lld -e 0 unknown22.o unknown22.o unknown22a.o -o unknown22 2>&1 | FileCheck %s --check-prefix=UNKNOWN22 --implicit-check-not=warning:
103 # UNKNOWN22-COUNT-2: warning: unknown22.o:(.riscv.attributes): invalid tag 0x16 at offset 0x10
104 # UNKNOWN22: warning: unknown22a.o:(.riscv.attributes): invalid tag 0x16 at offset 0x10
106 # HDR: Name Type Address Off Size ES Flg Lk Inf Al
107 # HDR: .riscv.attributes RISCV_ATTRIBUTES 0000000000000000 000158 000047 00 0 0 1{{$}}
109 # HDR: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
110 # HDR: LOAD 0x000000 0x0000000000010000 0x0000000000010000 0x000158 0x000158 R 0x1000
111 # HDR-NEXT: GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0
112 # HDR-NEXT: ATTRIBUTES 0x000158 0x0000000000000000 0x0000000000000000 0x000047 0x000047 R 0x1{{$}}
114 # CHECK: BuildAttributes {
115 # CHECK-NEXT: FormatVersion: 0x41
116 # CHECK-NEXT: Section 1 {
117 # CHECK-NEXT: SectionLength: 70
118 # CHECK-NEXT: Vendor: riscv
119 # CHECK-NEXT: Tag: Tag_File (0x1)
120 # CHECK-NEXT: Size: 60
121 # CHECK-NEXT: FileAttributes {
122 # CHECK-NEXT: Attribute {
123 # CHECK-NEXT: Tag: 4
124 # CHECK-NEXT: Value: 16
125 # CHECK-NEXT: TagName: stack_align
126 # CHECK-NEXT: Description: Stack alignment is 16-bytes
127 # CHECK-NEXT: }
128 # CHECK-NEXT: Attribute {
129 # CHECK-NEXT: Tag: 5
130 # CHECK-NEXT: TagName: arch
131 # CHECK-NEXT: Value: rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zmmul1p0{{$}}
132 # CHECK-NEXT: }
133 # CHECK-NEXT: }
134 # CHECK-NEXT: }
135 # CHECK-NEXT: }
137 # CHECK2: BuildAttributes {
138 # CHECK2-NEXT: FormatVersion: 0x41
139 # CHECK2-NEXT: Section 1 {
140 # CHECK2-NEXT: SectionLength: 113
141 # CHECK2-NEXT: Vendor: riscv
142 # CHECK2-NEXT: Tag: Tag_File (0x1)
143 # CHECK2-NEXT: Size: 103
144 # CHECK2-NEXT: FileAttributes {
145 # CHECK2-NEXT: Attribute {
146 # CHECK2-NEXT: Tag: 4
147 # CHECK2-NEXT: Value: 16
148 # CHECK2-NEXT: TagName: stack_align
149 # CHECK2-NEXT: Description: Stack alignment is 16-bytes
150 # CHECK2-NEXT: }
151 # CHECK2-NEXT: Attribute {
152 # CHECK2-NEXT: Tag: 6
153 # CHECK2-NEXT: Value: 1
154 # CHECK2-NEXT: TagName: unaligned_access
155 # CHECK2-NEXT: Description: Unaligned access
156 # CHECK2-NEXT: }
157 # CHECK2-NEXT: Attribute {
158 # CHECK2-NEXT: Tag: 8
159 # CHECK2-NEXT: TagName: priv_spec
160 # CHECK2-NEXT: Value: 2
161 # CHECK2-NEXT: }
162 # CHECK2-NEXT: Attribute {
163 # CHECK2-NEXT: Tag: 10
164 # CHECK2-NEXT: TagName: priv_spec_minor
165 # CHECK2-NEXT: Value: 2
166 # CHECK2-NEXT: }
167 # CHECK2-NEXT: Attribute {
168 # CHECK2-NEXT: Tag: 5
169 # CHECK2-NEXT: TagName: arch
170 # CHECK2-NEXT: Value: rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zmmul1p0_zkt1p0_zve32f1p0_zve32x1p0_zvl32b1p0{{$}}
171 # CHECK2-NEXT: }
172 # CHECK2-NEXT: }
173 # CHECK2-NEXT: }
174 # CHECK2-NEXT: }
176 # CHECK3: BuildAttributes {
177 # CHECK3-NEXT: FormatVersion: 0x41
178 # CHECK3-NEXT: Section 1 {
179 # CHECK3-NEXT: SectionLength: 26
180 # CHECK3-NEXT: Vendor: riscv
181 # CHECK3-NEXT: Tag: Tag_File (0x1)
182 # CHECK3-NEXT: Size: 16
183 # CHECK3-NEXT: FileAttributes {
184 # CHECK3-NEXT: Attribute {
185 # CHECK3-NEXT: Tag: 5
186 # CHECK3-NEXT: TagName: arch
187 # CHECK3-NEXT: Value: rv64i99p0{{$}}
188 # CHECK3-NEXT: }
189 # CHECK3-NEXT: }
190 # CHECK3-NEXT: }
191 # CHECK3-NEXT: }
193 #--- a.s
194 .attribute stack_align, 16
195 .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zmmul1p0"
196 .attribute unaligned_access, 0
198 #--- b.s
199 .attribute stack_align, 16
200 .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zmmul1p0"
201 .attribute priv_spec, 2
202 .attribute priv_spec_minor, 2
204 #--- c.s
205 .attribute stack_align, 16
206 .attribute arch, "rv64i2p1_f2p2_zkt1p0_zve32f1p0_zve32x1p0_zvl32b1p0"
207 .attribute unaligned_access, 1
208 .attribute priv_spec, 2
209 .attribute priv_spec_minor, 2
211 #--- unrecognized_ext1.s
212 # UNRECOGNIZED_EXT1: BuildAttributes {
213 # UNRECOGNIZED_EXT1-NEXT: FormatVersion: 0x41
214 # UNRECOGNIZED_EXT1-NEXT: Section 1 {
215 # UNRECOGNIZED_EXT1-NEXT: SectionLength: 30
216 # UNRECOGNIZED_EXT1-NEXT: Vendor: riscv
217 # UNRECOGNIZED_EXT1-NEXT: Tag: Tag_File (0x1)
218 # UNRECOGNIZED_EXT1-NEXT: Size: 20
219 # UNRECOGNIZED_EXT1-NEXT: FileAttributes {
220 # UNRECOGNIZED_EXT1-NEXT: Attribute {
221 # UNRECOGNIZED_EXT1-NEXT: Tag: 5
222 # UNRECOGNIZED_EXT1-NEXT: TagName: arch
223 # UNRECOGNIZED_EXT1-NEXT: Value: rv64i2p1_y2p0{{$}}
224 # UNRECOGNIZED_EXT1-NEXT: }
225 # UNRECOGNIZED_EXT1-NEXT: }
226 # UNRECOGNIZED_EXT1-NEXT: }
227 # UNRECOGNIZED_EXT1-NEXT: }
228 .section .riscv.attributes,"",@0x70000003
229 .byte 0x41
230 .long .Lend-.riscv.attributes-1
231 .asciz "riscv" # vendor
232 .Lbegin:
233 .byte 1 # Tag_File
234 .long .Lend-.Lbegin
235 .byte 5 # Tag_RISCV_arch
236 .asciz "rv64i2p1_y2p0"
237 .Lend:
239 #--- unrecognized_ext2.s
240 # UNRECOGNIZED_EXT2: BuildAttributes {
241 # UNRECOGNIZED_EXT2-NEXT: FormatVersion: 0x41
242 # UNRECOGNIZED_EXT2-NEXT: Section 1 {
243 # UNRECOGNIZED_EXT2-NEXT: SectionLength: 36
244 # UNRECOGNIZED_EXT2-NEXT: Vendor: riscv
245 # UNRECOGNIZED_EXT2-NEXT: Tag: Tag_File (0x1)
246 # UNRECOGNIZED_EXT2-NEXT: Size: 26
247 # UNRECOGNIZED_EXT2-NEXT: FileAttributes {
248 # UNRECOGNIZED_EXT2-NEXT: Attribute {
249 # UNRECOGNIZED_EXT2-NEXT: Tag: 5
250 # UNRECOGNIZED_EXT2-NEXT: TagName: arch
251 # UNRECOGNIZED_EXT2-NEXT: Value: rv64i2p1_zmadeup1p0{{$}}
252 # UNRECOGNIZED_EXT2-NEXT: }
253 # UNRECOGNIZED_EXT2-NEXT: }
254 # UNRECOGNIZED_EXT2-NEXT: }
255 # UNRECOGNIZED_EXT2-NEXT: }
256 .section .riscv.attributes,"",@0x70000003
257 .byte 0x41
258 .long .Lend-.riscv.attributes-1
259 .asciz "riscv" # vendor
260 .Lbegin:
261 .byte 1 # Tag_File
262 .long .Lend-.Lbegin
263 .byte 5 # Tag_RISCV_arch
264 .asciz "rv64i2p1_zmadeup1p0"
265 .Lend:
267 #--- unrecognized_version.s
268 # UNRECOGNIZED_VERSION: BuildAttributes {
269 # UNRECOGNIZED_VERSION-NEXT: FormatVersion: 0x41
270 # UNRECOGNIZED_VERSION-NEXT: Section 1 {
271 # UNRECOGNIZED_VERSION-NEXT: SectionLength: 26
272 # UNRECOGNIZED_VERSION-NEXT: Vendor: riscv
273 # UNRECOGNIZED_VERSION-NEXT: Tag: Tag_File (0x1)
274 # UNRECOGNIZED_VERSION-NEXT: Size: 16
275 # UNRECOGNIZED_VERSION-NEXT: FileAttributes {
276 # UNRECOGNIZED_VERSION-NEXT: Attribute {
277 # UNRECOGNIZED_VERSION-NEXT: Tag: 5
278 # UNRECOGNIZED_VERSION-NEXT: TagName: arch
279 # UNRECOGNIZED_VERSION-NEXT: Value: rv64i99p0
280 # UNRECOGNIZED_VERSION-NEXT: }
281 # UNRECOGNIZED_VERSION-NEXT: }
282 # UNRECOGNIZED_VERSION-NEXT: }
283 # UNRECOGNIZED_VERSION-NEXT: }
284 .section .riscv.attributes,"",@0x70000003
285 .byte 0x41
286 .long .Lend-.riscv.attributes-1
287 .asciz "riscv" # vendor
288 .Lbegin:
289 .byte 1 # Tag_File
290 .long .Lend-.Lbegin
291 .byte 5 # Tag_RISCV_arch
292 .asciz "rv64i99p0"
293 .Lend:
295 #--- merge_version_test_input.s
296 .section .riscv.attributes,"",@0x70000003
297 .byte 0x41
298 .long .Lend-.riscv.attributes-1
299 .asciz "riscv" # vendor
300 .Lbegin:
301 .byte 1 # Tag_File
302 .long .Lend-.Lbegin
303 .byte 5 # Tag_RISCV_arch
304 .asciz "rv64i2p1"
305 .Lend:
307 #--- invalid_arch1.s
308 .section .riscv.attributes,"",@0x70000003
309 .byte 0x41
310 .long .Lend-.riscv.attributes-1
311 .asciz "riscv" # vendor
312 .Lbegin:
313 .byte 1 # Tag_File
314 .long .Lend-.Lbegin
315 .byte 5 # Tag_RISCV_arch
316 .asciz "rv64i2"
317 .Lend:
319 #--- unaligned_access_0.s
320 .attribute unaligned_access, 0
322 #--- diff_stack_align.s
323 .attribute stack_align, 32
325 #--- diff_priv_spec.s
326 .attribute priv_spec, 3
327 .attribute priv_spec_minor, 3
329 #--- atomic_abi_unknown.s
330 .attribute atomic_abi, 0
332 #--- atomic_abi_A6C.s
333 .attribute atomic_abi, 1
335 #--- atomic_abi_A6S.s
336 .attribute atomic_abi, 2
338 #--- atomic_abi_A7.s
339 .attribute atomic_abi, 3
341 #--- atomic_abi_invalid.s
342 .attribute atomic_abi, 42
344 # UNKNOWN_NONE: BuildAttributes {
345 # UNKNOWN_NONE-NEXT: FormatVersion: 0x41
346 # UNKNOWN_NONE-NEXT: Section 1 {
347 # UNKNOWN_NONE-NEXT: SectionLength: 17
348 # UNKNOWN_NONE-NEXT: Vendor: riscv
349 # UNKNOWN_NONE-NEXT: Tag: Tag_File (0x1)
350 # UNKNOWN_NONE-NEXT: Size: 7
351 # UNKNOWN_NONE-NEXT: FileAttributes {
352 # UNKNOWN_NONE-NEXT: Attribute {
353 # UNKNOWN_NONE-NEXT: Tag: 4
354 # UNKNOWN_NONE-NEXT: Value: 32
355 # UNKNOWN_NONE-NEXT: TagName: stack_align
356 # UNKNOWN_NONE-NEXT: Description: Stack alignment is 32-bytes
357 # UNKNOWN_NONE-NEXT: }
358 # UNKNOWN_NONE-NEXT: }
359 # UNKNOWN_NONE-NEXT: }
360 # UNKNOWN_NONE-NEXT: }
362 # NONE_A6C: BuildAttributes {
363 # NONE_A6C-NEXT: FormatVersion: 0x41
364 # NONE_A6C-NEXT: Section 1 {
365 # NONE_A6C-NEXT: SectionLength: 19
366 # NONE_A6C-NEXT: Vendor: riscv
367 # NONE_A6C-NEXT: Tag: Tag_File (0x1)
368 # NONE_A6C-NEXT: Size: 9
369 # NONE_A6C-NEXT: FileAttributes {
370 # NONE_A6C-NEXT: Attribute {
371 # NONE_A6C-NEXT: Tag: 14
372 # NONE_A6C-NEXT: Value: 1
373 # NONE_A6C-NEXT: TagName: atomic_abi
374 # NONE_A6C-NEXT: Description: Atomic ABI is 1
375 # NONE_A6C-NEXT: }
376 # NONE_A6C-NEXT: Attribute {
377 # NONE_A6C-NEXT: Tag: 4
378 # NONE_A6C-NEXT: Value: 32
379 # NONE_A6C-NEXT: TagName: stack_align
380 # NONE_A6C-NEXT: Description: Stack alignment is 32-bytes
381 # NONE_A6C-NEXT: }
382 # NONE_A6C-NEXT: }
383 # NONE_A6C-NEXT: }
384 # NONE_A6C-NEXT: }
386 # UNKNOWN_A6C: BuildAttributes {
387 # UNKNOWN_A6C-NEXT: FormatVersion: 0x41
388 # UNKNOWN_A6C-NEXT: Section 1 {
389 # UNKNOWN_A6C-NEXT: SectionLength: 17
390 # UNKNOWN_A6C-NEXT: Vendor: riscv
391 # UNKNOWN_A6C-NEXT: Tag: Tag_File (0x1)
392 # UNKNOWN_A6C-NEXT: Size: 7
393 # UNKNOWN_A6C-NEXT: FileAttributes {
394 # UNKNOWN_A6C-NEXT: Attribute {
395 # UNKNOWN_A6C-NEXT: Tag: 14
396 # UNKNOWN_A6C-NEXT: Value: 1
397 # UNKNOWN_A6C-NEXT: TagName: atomic_abi
398 # UNKNOWN_A6C-NEXT: Description: Atomic ABI is 1
399 # UNKNOWN_A6C-NEXT: }
400 # UNKNOWN_A6C-NEXT: }
401 # UNKNOWN_A6C-NEXT: }
402 # UNKNOWN_A6C-NEXT: }
404 # UNKNOWN_A6S: BuildAttributes {
405 # UNKNOWN_A6S-NEXT: FormatVersion: 0x41
406 # UNKNOWN_A6S-NEXT: Section 1 {
407 # UNKNOWN_A6S-NEXT: SectionLength:
408 # UNKNOWN_A6S-NEXT: Vendor: riscv
409 # UNKNOWN_A6S-NEXT: Tag: Tag_File (0x1)
410 # UNKNOWN_A6S-NEXT: Size: 7
411 # UNKNOWN_A6S-NEXT: FileAttributes {
412 # UNKNOWN_A6S-NEXT: Attribute {
413 # UNKNOWN_A6S-NEXT: Tag: 14
414 # UNKNOWN_A6S-NEXT: Value: 2
415 # UNKNOWN_A6S-NEXT: TagName: atomic_abi
416 # UNKNOWN_A6S-NEXT: Description: Atomic ABI is 2
417 # UNKNOWN_A6S-NEXT: }
418 # UNKNOWN_A6S-NEXT: }
419 # UNKNOWN_A6S-NEXT: }
420 # UNKNOWN_A6S-NEXT: }
422 # NONE_A7: BuildAttributes {
423 # NONE_A7-NEXT: FormatVersion: 0x41
424 # NONE_A7-NEXT: Section 1 {
425 # NONE_A7-NEXT: SectionLength: 19
426 # NONE_A7-NEXT: Vendor: riscv
427 # NONE_A7-NEXT: Tag: Tag_File (0x1)
428 # NONE_A7-NEXT: Size: 9
429 # NONE_A7-NEXT: FileAttributes {
430 # NONE_A7-NEXT: Attribute {
431 # NONE_A7-NEXT: Tag: 14
432 # NONE_A7-NEXT: Value: 3
433 # NONE_A7-NEXT: TagName: atomic_abi
434 # NONE_A7-NEXT: Description: Atomic ABI is 3
435 # NONE_A7-NEXT: }
436 # NONE_A7-NEXT: Attribute {
437 # NONE_A7-NEXT: Tag: 4
438 # NONE_A7-NEXT: Value: 32
439 # NONE_A7-NEXT: TagName: stack_align
440 # NONE_A7-NEXT: Description: Stack alignment is 32-bytes
441 # NONE_A7-NEXT: }
442 # NONE_A7-NEXT: }
443 # NONE_A7-NEXT: }
444 # NONE_A7-NEXT: }
447 # UNKNOWN_A7: BuildAttributes {
448 # UNKNOWN_A7-NEXT: FormatVersion: 0x41
449 # UNKNOWN_A7-NEXT: Section 1 {
450 # UNKNOWN_A7-NEXT: SectionLength: 17
451 # UNKNOWN_A7-NEXT: Vendor: riscv
452 # UNKNOWN_A7-NEXT: Tag: Tag_File (0x1)
453 # UNKNOWN_A7-NEXT: Size: 7
454 # UNKNOWN_A7-NEXT: FileAttributes {
455 # UNKNOWN_A7-NEXT: Attribute {
456 # UNKNOWN_A7-NEXT: Tag: 14
457 # UNKNOWN_A7-NEXT: Value: 3
458 # UNKNOWN_A7-NEXT: TagName: atomic_abi
459 # UNKNOWN_A7-NEXT: Description: Atomic ABI is 3
460 # UNKNOWN_A7-NEXT: }
461 # UNKNOWN_A7-NEXT: }
462 # UNKNOWN_A7-NEXT: }
463 # UNKNOWN_A7-NEXT: }
465 # A6C_A6S: BuildAttributes {
466 # A6C_A6S-NEXT: FormatVersion: 0x41
467 # A6C_A6S-NEXT: Section 1 {
468 # A6C_A6S-NEXT: SectionLength: 17
469 # A6C_A6S-NEXT: Vendor: riscv
470 # A6C_A6S-NEXT: Tag: Tag_File (0x1)
471 # A6C_A6S-NEXT: Size: 7
472 # A6C_A6S-NEXT: FileAttributes {
473 # A6C_A6S-NEXT: Attribute {
474 # A6C_A6S-NEXT: Tag: 14
475 # A6C_A6S-NEXT: Value: 1
476 # A6C_A6S-NEXT: TagName: atomic_abi
477 # A6C_A6S-NEXT: Description: Atomic ABI is 1
478 # A6C_A6S-NEXT: }
479 # A6C_A6S-NEXT: }
480 # A6C_A6S-NEXT: }
481 # A6C_A6S-NEXT: }
483 # A6S_A7: BuildAttributes {
484 # A6S_A7-NEXT: FormatVersion: 0x41
485 # A6S_A7-NEXT: Section 1 {
486 # A6S_A7-NEXT: SectionLength: 17
487 # A6S_A7-NEXT: Vendor: riscv
488 # A6S_A7-NEXT: Tag: Tag_File (0x1)
489 # A6S_A7-NEXT: Size: 7
490 # A6S_A7-NEXT: FileAttributes {
491 # A6S_A7-NEXT: Attribute {
492 # A6S_A7-NEXT: Tag: 14
493 # A6S_A7-NEXT: Value: 3
494 # A6S_A7-NEXT: TagName: atomic_abi
495 # A6S_A7-NEXT: Description: Atomic ABI is 3
496 # A6S_A7-NEXT: }
497 # A6S_A7-NEXT: }
498 # A6S_A7-NEXT: }
499 # A6S_A7-NEXT: }
501 #--- unknown13.s
502 .attribute 13, "0"
503 #--- unknown13a.s
504 .attribute 13, "1"
506 #--- unknown22.s
507 .attribute 22, 1
508 #--- unknown22a.s
509 .attribute 22, 2