Commit Graph

5 Commits

Author SHA1 Message Date
Evgeniy Stepanov
f268616d77 [safestack] Sink unsafe address computation to each use.
This is a fix for PR27844.
When replacing uses of unsafe allocas, emit the new location
immediately after each use. Without this, the pointer stays live from
the function entry to the last use, while it's usually cheaper to
recalculate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272969 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 22:34:04 +00:00
Evgeniy Stepanov
fd0154041b [safestack] Fixup llvm.dbg.value when rewriting unsafe allocas.
When moving unsafe allocas to the unsafe stack, dbg.declare intrinsics are
updated to refer to the new location.

This change does the same to dbg.value intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272968 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 22:34:00 +00:00
Evgeniy Stepanov
00cd59a292 [safestack] Add canary to unsafe stack frames
Add StackProtector to SafeStack. This adds limited protection against
data corruption in the caller frame. Current implementation treats
all stack protector levels as -fstack-protector-all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266004 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-11 22:27:48 +00:00
Anna Zaks
59203823d7 [safestack] Make sure the unsafe stack pointer is popped in all cases
The unsafe stack pointer is only popped in moveStaticAllocasToUnsafeStack so it won't happen if there are no static allocas.

Fixes https://llvm.org/bugs/show_bug.cgi?id=26122

Differential Revision: http://reviews.llvm.org/D16339

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259447 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-02 01:03:11 +00:00
Benjamin Kramer
b714d34a7e Move SafeStack to CodeGen.
It depends on the target machinery, that's not available for
instrumentation passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258942 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 16:53:42 +00:00