You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds support for LLVM [SafeStack] which provides backward edge control
flow protection by separating the stack into two parts: data which is
only accessed in provable safe ways is allocated on the normal stack
(the "safe stack") and all other data is placed in a separate allocation
(the "unsafe stack").
SafeStack support is enabled by passing `-Zsanitizer=safestack`.
[SafeStack]: https://clang.llvm.org/docs/SafeStack.html
Copy file name to clipboardExpand all lines: src/doc/unstable-book/src/compiler-flags/sanitizer.md
+13-1
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,8 @@ This feature allows for use of one of following sanitizers:
21
21
*[MemorySanitizer](#memorysanitizer) a detector of uninitialized reads.
22
22
*[MemTagSanitizer](#memtagsanitizer) fast memory error detector based on
23
23
Armv8.5-A Memory Tagging Extension.
24
-
*[ShadowCallStack](#shadowcallstack) provides backward-edge control flow protection.
24
+
*[SafeStack](#safestack) provides backward-edge control flow protection by separating the stack into safe and unsafe regions.
25
+
*[ShadowCallStack](#shadowcallstack) provides backward-edge control flow protection (aarch64 only).
25
26
*[ThreadSanitizer](#threadsanitizer) a fast data race detector.
26
27
27
28
To enable a sanitizer compile with `-Zsanitizer=address`,`-Zsanitizer=cfi`,
@@ -712,6 +713,16 @@ To enable this target feature compile with `-C target-feature="+mte"`.
712
713
713
714
See the [LLVM MemTagSanitizer documentation][llvm-memtag] for more details.
714
715
716
+
# SafeStack
717
+
718
+
SafeStack provides backward edge control flow protection by separating the stack into data which is only accessed safely (the safe stack) and all other data (the unsafe stack).
719
+
720
+
SafeStack can be enabled with the `-Zsanitizer=safestack` option and is supported on the following targets:
721
+
722
+
* `x86_64-unknown-linux-gnu`
723
+
724
+
See the [Clang SafeStack documentation][clang-safestack] for more details.
725
+
715
726
# ShadowCallStack
716
727
717
728
ShadowCallStack provides backward edge control flow protection by storing a function's return address in a separately allocated 'shadow call stack' and loading the return address from that shadow call stack.
@@ -828,6 +839,7 @@ Sanitizers produce symbolized stacktraces when llvm-symbolizer binary is in `PAT
0 commit comments