From: Peter Collingbourne Date: Tue, 24 May 2016 23:38:02 +0000 (+0000) Subject: docs: Document how safestack handles setjmp and exceptions. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e8a97b24a38889b92879ddb3bd313dfd3b1519d5;p=clang docs: Document how safestack handles setjmp and exceptions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@270634 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/SafeStack.rst b/docs/SafeStack.rst index 21e9b6c621..f01b75f5cb 100644 --- a/docs/SafeStack.rst +++ b/docs/SafeStack.rst @@ -178,6 +178,17 @@ Please refer to the `Code-Pointer Integrity `__ project page for more information about the design of the SafeStack and its related technologies. +setjmp and exception handling +----------------------------- + +The `OSDI'14 paper `_ mentions that +on Linux the instrumentation pass finds calls to setjmp or functions that +may throw an exception, and inserts required instrumentation at their call +sites. Specifically, the instrumentation pass saves the shadow stack pointer +on the safe stack before the call site, and restores it either after the +call to setjmp or after an exception has been caught. This is implemented +in the function ``SafeStack::createStackRestorePoints``. + Publications ------------