1# REQUIRES: riscv 2 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 11 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 16 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 20 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 24 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 28 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 32 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 36 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' 41 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 46 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 54 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 60 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 64 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 67 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 71 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 74 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 77 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 80 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 83 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 86 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' 92 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 99 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 105 106# HDR: Name Type Address Off Size ES Flg Lk Inf Al 107# HDR: .riscv.attributes RISCV_ATTRIBUTES 0000000000000000 000158 00005a 00 0 0 1{{$}} 108 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 0x00005a 0x00005a R 0x1{{$}} 113 114# CHECK: BuildAttributes { 115# CHECK-NEXT: FormatVersion: 0x41 116# CHECK-NEXT: Section 1 { 117# CHECK-NEXT: SectionLength: 89 118# CHECK-NEXT: Vendor: riscv 119# CHECK-NEXT: Tag: Tag_File (0x1) 120# CHECK-NEXT: Size: 79 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_zaamo1p0_zalrsc1p0{{$}} 132# CHECK-NEXT: } 133# CHECK-NEXT: } 134# CHECK-NEXT: } 135# CHECK-NEXT: } 136 137# CHECK2: BuildAttributes { 138# CHECK2-NEXT: FormatVersion: 0x41 139# CHECK2-NEXT: Section 1 { 140# CHECK2-NEXT: SectionLength: 132 141# CHECK2-NEXT: Vendor: riscv 142# CHECK2-NEXT: Tag: Tag_File (0x1) 143# CHECK2-NEXT: Size: 122 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_zaamo1p0_zalrsc1p0_zkt1p0_zve32f1p0_zve32x1p0_zvl32b1p0{{$}} 171# CHECK2-NEXT: } 172# CHECK2-NEXT: } 173# CHECK2-NEXT: } 174# CHECK2-NEXT: } 175 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: } 192 193#--- a.s 194.attribute stack_align, 16 195.attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zmmul1p0" 196.attribute unaligned_access, 0 197 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 203 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 210 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: 238 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: 266 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: 294 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: 306 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: 318 319#--- unaligned_access_0.s 320.attribute unaligned_access, 0 321 322#--- diff_stack_align.s 323.attribute stack_align, 32 324 325#--- diff_priv_spec.s 326.attribute priv_spec, 3 327.attribute priv_spec_minor, 3 328 329#--- atomic_abi_unknown.s 330.attribute atomic_abi, 0 331 332#--- atomic_abi_A6C.s 333.attribute atomic_abi, 1 334 335#--- atomic_abi_A6S.s 336.attribute atomic_abi, 2 337 338#--- atomic_abi_A7.s 339.attribute atomic_abi, 3 340 341#--- atomic_abi_invalid.s 342.attribute atomic_abi, 42 343 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: } 361 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: } 385 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: } 403 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: } 421 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: } 445 446 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: } 464 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: } 482 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: } 500 501#--- unknown13.s 502.attribute 13, "0" 503#--- unknown13a.s 504.attribute 13, "1" 505 506#--- unknown22.s 507.attribute 22, 1 508#--- unknown22a.s 509.attribute 22, 2 510