| ; REQUIRES: riscv |
| |
| ; RUN: rm -rf %t && split-file %s %t && cd %t |
| ; RUN: llvm-mc -filetype=obj -triple=riscv32 1.s -o 1.o |
| ; RUN: llvm-mc -filetype=obj -triple=riscv32 2.s -o 2.o |
| ; RUN: llvm-as a.ll -o a.bc |
| ; RUN: ld.lld 1.o 2.o a.bc -o out |
| ; RUN: llvm-readelf --arch-specific out | FileCheck %s |
| |
| ; CHECK: BuildAttributes { |
| ; CHECK-NEXT: FormatVersion: 0x41 |
| ; CHECK-NEXT: Section 1 { |
| ; CHECK-NEXT: SectionLength: 70 |
| ; CHECK-NEXT: Vendor: riscv |
| ; CHECK-NEXT: Tag: Tag_File (0x1) |
| ; CHECK-NEXT: Size: 60 |
| ; CHECK-NEXT: FileAttributes { |
| ; CHECK-NEXT: Attribute { |
| ; CHECK-NEXT: Tag: 4 |
| ; CHECK-NEXT: Value: 16 |
| ; CHECK-NEXT: TagName: stack_align |
| ; CHECK-NEXT: Description: Stack alignment is 16-bytes |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: Attribute { |
| ; CHECK-NEXT: Tag: 6 |
| ; CHECK-NEXT: Value: 1 |
| ; CHECK-NEXT: TagName: unaligned_access |
| ; CHECK-NEXT: Description: Unaligned access |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: Attribute { |
| ; CHECK-NEXT: Tag: 5 |
| ; CHECK-NEXT: TagName: arch |
| ; CHECK-NEXT: Value: rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zbb1p0{{$}} |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: } |
| |
| ;--- 1.s |
| .attribute 4, 16 |
| .attribute 5, "rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0" |
| ;--- 2.s |
| .attribute 4, 16 |
| .attribute 5, "rv32i2p1_m2p0_f2p2_d2p2_zbb1p0" |
| .attribute 6, 1 |
| |
| ;--- a.ll |
| target datalayout = "e-m:e-p:32:32-i64:64-n32-S128" |
| target triple = "riscv32" |
| |
| define void @_start() { |
| ret void |
| } |