diff options
| author | Petr Hosek <phosek@chromium.org> | 2017-02-24 03:10:10 +0000 |
|---|---|---|
| committer | Petr Hosek <phosek@chromium.org> | 2017-02-24 03:10:10 +0000 |
| commit | a7d5916308907624199161b9454487cc30482341 (patch) | |
| tree | ffb71b923a74d32f80fa665f057350b9e1e2753e /llvm/test/Transforms/SafeStack | |
| parent | 7e0ce82c4a6a2559c0acb67a92bd6e91bfc4240b (diff) | |
| download | bcm5719-llvm-a7d5916308907624199161b9454487cc30482341.tar.gz bcm5719-llvm-a7d5916308907624199161b9454487cc30482341.zip | |
[Fuchsia] Use thread-pointer ABI slots for stack-protector and safe-stack
The Fuchsia ABI defines slots from the thread pointer where the
stack-guard value for stack-protector, and the unsafe stack pointer
for safe-stack, are stored. This parallels the Android ABI support.
Patch by Roland McGrath
Differential Revision: https://reviews.llvm.org/D30237
llvm-svn: 296081
Diffstat (limited to 'llvm/test/Transforms/SafeStack')
| -rw-r--r-- | llvm/test/Transforms/SafeStack/AArch64/abi_ssp.ll | 7 | ||||
| -rw-r--r-- | llvm/test/Transforms/SafeStack/X86/abi_ssp.ll | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/llvm/test/Transforms/SafeStack/AArch64/abi_ssp.ll b/llvm/test/Transforms/SafeStack/AArch64/abi_ssp.ll index 5d584d0a76b..c78b20aaa01 100644 --- a/llvm/test/Transforms/SafeStack/AArch64/abi_ssp.ll +++ b/llvm/test/Transforms/SafeStack/AArch64/abi_ssp.ll @@ -1,5 +1,5 @@ -; RUN: opt -safe-stack -S -mtriple=aarch64-linux-android < %s -o - | FileCheck --check-prefix=TLS %s - +; RUN: opt -safe-stack -S -mtriple=aarch64-linux-android < %s -o - | FileCheck --check-prefixes=TLS,ANDROID %s +; RUN: opt -safe-stack -S -mtriple=aarch64-unknown-fuchsia < %s -o - | FileCheck --check-prefixes=TLS,FUCHSIA %s define void @foo() nounwind uwtable safestack sspreq { entry: @@ -7,7 +7,8 @@ entry: ; TLS: call i8* @llvm.thread.pointer() ; TLS: %[[TP2:.*]] = call i8* @llvm.thread.pointer() -; TLS: %[[B:.*]] = getelementptr i8, i8* %[[TP2]], i32 40 +; ANDROID: %[[B:.*]] = getelementptr i8, i8* %[[TP2]], i32 40 +; FUCHSIA: %[[B:.*]] = getelementptr i8, i8* %[[TP2]], i32 -16 ; TLS: %[[C:.*]] = bitcast i8* %[[B]] to i8** ; TLS: %[[StackGuard:.*]] = load i8*, i8** %[[C]] ; TLS: store i8* %[[StackGuard]], i8** %[[StackGuardSlot:.*]] diff --git a/llvm/test/Transforms/SafeStack/X86/abi_ssp.ll b/llvm/test/Transforms/SafeStack/X86/abi_ssp.ll index 797dfd579dd..b489e07a886 100644 --- a/llvm/test/Transforms/SafeStack/X86/abi_ssp.ll +++ b/llvm/test/Transforms/SafeStack/X86/abi_ssp.ll @@ -6,10 +6,13 @@ ; RUN: opt -safe-stack -S -mtriple=x86_64-linux-android < %s -o - | FileCheck --check-prefixes=COMMON,TLS64 %s +; RUN: opt -safe-stack -S -mtriple=x86_64-unknown-fuchsia < %s -o - | FileCheck --check-prefixes=COMMON,FUCHSIA64 %s + define void @foo() safestack sspreq { entry: ; TLS32: %[[StackGuard:.*]] = load i8*, i8* addrspace(256)* inttoptr (i32 20 to i8* addrspace(256)*) ; TLS64: %[[StackGuard:.*]] = load i8*, i8* addrspace(257)* inttoptr (i32 40 to i8* addrspace(257)*) +; FUCHSIA64: %[[StackGuard:.*]] = load i8*, i8* addrspace(257)* inttoptr (i32 16 to i8* addrspace(257)*) ; GLOBAL32: %[[StackGuard:.*]] = load i8*, i8** @__stack_chk_guard ; COMMON: store i8* %[[StackGuard]], i8** %[[StackGuardSlot:.*]] %a = alloca i8, align 1 |

