Skip to content

Commit 6053522

Browse files
authored
[RISCV] Precommit stack protector checks for Linux and Android (#87679)
Upcoming patches will add TP relative stack checks for Android, and Linux currently uses the default GOT based stack protector.
1 parent 583795e commit 6053522

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

llvm/test/CodeGen/RISCV/stack-protector-target.ll

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,32 @@
22

33
;; Test target-specific stack cookie location.
44
;
5+
; RUN: llc -mtriple=riscv64-linux < %s | FileCheck --check-prefix=LINUX-RISCV64 %s
56
; RUN: llc -mtriple=riscv64-fuchsia < %s | FileCheck --check-prefix=FUCHSIA-RISCV64 %s
7+
; RUN: llc -mtriple=riscv64-android < %s | FileCheck --check-prefix=ANDROID-RISCV64 %s
68

79
define void @func() sspreq nounwind {
10+
; LINUX-RISCV64-LABEL: func:
11+
; LINUX-RISCV64: # %bb.0:
12+
; LINUX-RISCV64-NEXT: addi sp, sp, -32
13+
; LINUX-RISCV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
14+
; LINUX-RISCV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
15+
; LINUX-RISCV64-NEXT: lui s0, %hi(__stack_chk_guard)
16+
; LINUX-RISCV64-NEXT: ld a0, %lo(__stack_chk_guard)(s0)
17+
; LINUX-RISCV64-NEXT: sd a0, 8(sp)
18+
; LINUX-RISCV64-NEXT: addi a0, sp, 4
19+
; LINUX-RISCV64-NEXT: call capture
20+
; LINUX-RISCV64-NEXT: ld a0, %lo(__stack_chk_guard)(s0)
21+
; LINUX-RISCV64-NEXT: ld a1, 8(sp)
22+
; LINUX-RISCV64-NEXT: bne a0, a1, .LBB0_2
23+
; LINUX-RISCV64-NEXT: # %bb.1:
24+
; LINUX-RISCV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
25+
; LINUX-RISCV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
26+
; LINUX-RISCV64-NEXT: addi sp, sp, 32
27+
; LINUX-RISCV64-NEXT: ret
28+
; LINUX-RISCV64-NEXT: .LBB0_2:
29+
; LINUX-RISCV64-NEXT: call __stack_chk_fail
30+
;
831
; FUCHSIA-RISCV64-LABEL: func:
932
; FUCHSIA-RISCV64: # %bb.0:
1033
; FUCHSIA-RISCV64-NEXT: addi sp, sp, -32
@@ -22,6 +45,27 @@ define void @func() sspreq nounwind {
2245
; FUCHSIA-RISCV64-NEXT: ret
2346
; FUCHSIA-RISCV64-NEXT: .LBB0_2: # %CallStackCheckFailBlk
2447
; FUCHSIA-RISCV64-NEXT: call __stack_chk_fail
48+
;
49+
; ANDROID-RISCV64-LABEL: func:
50+
; ANDROID-RISCV64: # %bb.0:
51+
; ANDROID-RISCV64-NEXT: addi sp, sp, -32
52+
; ANDROID-RISCV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
53+
; ANDROID-RISCV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
54+
; ANDROID-RISCV64-NEXT: lui s0, %hi(__stack_chk_guard)
55+
; ANDROID-RISCV64-NEXT: ld a0, %lo(__stack_chk_guard)(s0)
56+
; ANDROID-RISCV64-NEXT: sd a0, 8(sp)
57+
; ANDROID-RISCV64-NEXT: addi a0, sp, 4
58+
; ANDROID-RISCV64-NEXT: call capture
59+
; ANDROID-RISCV64-NEXT: ld a0, %lo(__stack_chk_guard)(s0)
60+
; ANDROID-RISCV64-NEXT: ld a1, 8(sp)
61+
; ANDROID-RISCV64-NEXT: bne a0, a1, .LBB0_2
62+
; ANDROID-RISCV64-NEXT: # %bb.1:
63+
; ANDROID-RISCV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
64+
; ANDROID-RISCV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
65+
; ANDROID-RISCV64-NEXT: addi sp, sp, 32
66+
; ANDROID-RISCV64-NEXT: ret
67+
; ANDROID-RISCV64-NEXT: .LBB0_2:
68+
; ANDROID-RISCV64-NEXT: call __stack_chk_fail
2569
%1 = alloca i32, align 4
2670
call void @capture(ptr %1)
2771
ret void

0 commit comments

Comments
 (0)