summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/stack-protector.ll
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-06-07 16:35:57 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-06-07 16:35:57 +0000
commit62ed8d3e35d25853e32db946a0a60da0bbf862e1 (patch)
tree75efb8772a0567777f39114fbce38e526f85807d /test/CodeGen/X86/stack-protector.ll
parent47b0c0a9a0d920917e1fb10ac1c851c6e3b8aa27 (diff)
downloadllvm-62ed8d3e35d25853e32db946a0a60da0bbf862e1.tar.gz
llvm-62ed8d3e35d25853e32db946a0a60da0bbf862e1.tar.bz2
llvm-62ed8d3e35d25853e32db946a0a60da0bbf862e1.tar.xz
Support OpenBSD's native frame protection conventions.
OpenBSD's stack smashing protection differs slightly from other platforms: 1. The smash handler function is "__stack_smash_handler(const char *funcname)" instead of "__stack_chk_fail(void)". 2. There's a hidden "long __guard_local" object that gets linked into each executable and DSO. Patch by Matthew Dempsky. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183533 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/stack-protector.ll')
-rw-r--r--test/CodeGen/X86/stack-protector.ll5
1 files changed, 5 insertions, 0 deletions
diff --git a/test/CodeGen/X86/stack-protector.ll b/test/CodeGen/X86/stack-protector.ll
index 1e9ca1d2c2..6191ce60b5 100644
--- a/test/CodeGen/X86/stack-protector.ll
+++ b/test/CodeGen/X86/stack-protector.ll
@@ -2,6 +2,7 @@
; RUN: llc -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck --check-prefix=LINUX-X64 %s
; RUN: llc -code-model=kernel -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck --check-prefix=LINUX-KERNEL-X64 %s
; RUN: llc -mtriple=x86_64-apple-darwin < %s -o - | FileCheck --check-prefix=DARWIN-X64 %s
+; RUN: llc -mtriple=amd64-pc-openbsd < %s -o - | FileCheck --check-prefix=OPENBSD-AMD64 %s
%struct.foo = type { [16 x i8] }
%struct.foo.0 = type { [4 x i8] }
@@ -69,6 +70,10 @@ entry:
; DARWIN-X64: test1b:
; DARWIN-X64: mov{{l|q}} ___stack_chk_guard
; DARWIN-X64: callq ___stack_chk_fail
+
+; OPENBSD-AMD64: test1b:
+; OPENBSD-AMD64: movq __guard_local(%rip)
+; OPENBSD-AMD64: callq __stack_smash_handler
%a.addr = alloca i8*, align 8
%buf = alloca [16 x i8], align 16
store i8* %a, i8** %a.addr, align 8