forked from OSchip/llvm-project
[AArch64] Add test for DWARF return address signing
Summary: Patch by LukeCheeseman and pbarrio Reviewers: samparker, chill Subscribers: kristof.beyls, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D72835
This commit is contained in:
parent
0bf434ccd5
commit
a8ff6c0b09
|
@ -0,0 +1,35 @@
|
|||
; RUN: llc -mtriple=aarch64-none-eabi < %s | FileCheck --check-prefixes CHECK,CHECK-V8A %s
|
||||
; RUN: llc -mtriple=aarch64-none-eabi -mattr=v8.3a < %s | FileCheck --check-prefixes CHECK,CHECK-V83A %s
|
||||
; RUN: llc -mtriple=aarch64-none-eabi -filetype=obj -o - <%s | llvm-dwarfdump -v - | FileCheck --check-prefix=CHECK-DUMP %s
|
||||
|
||||
@.str = private unnamed_addr constant [15 x i8] c"some exception\00", align 1
|
||||
@_ZTIPKc = external dso_local constant i8*
|
||||
|
||||
; CHECK: @_Z3fooi
|
||||
; CHECK-V8A: hint #25
|
||||
; CHECK-V83A: paciasp
|
||||
; CHECK-NEXT: .cfi_negate_ra_state
|
||||
; CHECK-NOT: .cfi_negate_ra_state
|
||||
define dso_local i32 @_Z3fooi(i32 %x) #0 {
|
||||
entry:
|
||||
%retval = alloca i32, align 4
|
||||
%x.addr = alloca i32, align 4
|
||||
store i32 %x, i32* %x.addr, align 4
|
||||
%exception = call i8* @__cxa_allocate_exception(i64 8) #1
|
||||
%0 = bitcast i8* %exception to i8**
|
||||
store i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i8** %0, align 16
|
||||
call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIPKc to i8*), i8* null) #2
|
||||
unreachable
|
||||
|
||||
return: ; No predecessors!
|
||||
%1 = load i32, i32* %retval, align 4
|
||||
ret i32 %1
|
||||
}
|
||||
|
||||
declare dso_local i8* @__cxa_allocate_exception(i64)
|
||||
|
||||
declare dso_local void @__cxa_throw(i8*, i8*, i8*)
|
||||
|
||||
attributes #0 = { "sign-return-address"="all" }
|
||||
|
||||
;CHECK-DUMP: DW_CFA_AARCH64_negate_ra_state
|
Loading…
Reference in New Issue