@@ -12,6 +12,7 @@ This feature allows for use of one of following sanitizers:
12
12
* [ AddressSanitizer] ( #addresssanitizer ) a fast memory error detector.
13
13
* [ ControlFlowIntegrity] ( #controlflowintegrity ) LLVM Control Flow Integrity (CFI) provides
14
14
forward-edge control flow protection.
15
+ * [ DataFlowSanitizer] ( #dataflowsanitizer ) a generic dynamic data flow analysis framework.
15
16
* [ HWAddressSanitizer] ( #hwaddresssanitizer ) a memory error detector similar to
16
17
AddressSanitizer, but based on partial hardware assistance.
17
18
* [ KernelControlFlowIntegrity] ( #kernelcontrolflowintegrity ) LLVM Kernel Control
@@ -25,10 +26,12 @@ This feature allows for use of one of following sanitizers:
25
26
* [ ShadowCallStack] ( #shadowcallstack ) provides backward-edge control flow protection (aarch64 only).
26
27
* [ ThreadSanitizer] ( #threadsanitizer ) a fast data race detector.
27
28
28
- To enable a sanitizer compile with ` -Zsanitizer=address ` ,` -Zsanitizer=cfi ` ,
29
- ` -Zsanitizer=hwaddress ` , ` -Zsanitizer=leak ` , ` -Zsanitizer=memory ` ,
30
- ` -Zsanitizer=memtag ` , ` -Zsanitizer=shadow-call-stack ` , or ` -Zsanitizer=thread ` .
31
- You might also need the ` --target ` and ` build-std ` flags. Example:
29
+ To enable a sanitizer compile with ` -Zsanitizer=address ` , ` -Zsanitizer=cfi ` ,
30
+ ` -Zsanitizer=dataflow ` ,` -Zsanitizer=hwaddress ` , ` -Zsanitizer=leak ` ,
31
+ ` -Zsanitizer=memory ` , ` -Zsanitizer=memtag ` , ` -Zsanitizer=shadow-call-stack ` , or
32
+ ` -Zsanitizer=thread ` . You might also need the ` --target ` and ` build-std ` flags.
33
+
34
+ Example:
32
35
``` shell
33
36
$ RUSTFLAGS=-Zsanitizer=address cargo build -Zbuild-std --target x86_64-unknown-linux-gnu
34
37
```
@@ -625,6 +628,21 @@ LLVM KCFI is supported on the following targets:
625
628
See the [Clang KernelControlFlowIntegrity documentation][clang-kcfi] for more
626
629
details.
627
630
631
+ # DataFlowSanitizer
632
+
633
+ DataFlowSanitizer is a generalised dynamic data flow analysis.
634
+
635
+ Unlike other Sanitizer tools, this tool is not designed to detect a specific
636
+ class of bugs on its own. Instead, it provides a generic dynamic data flow
637
+ analysis framework to be used by clients to help detect application-specific
638
+ issues within their own code.
639
+
640
+ DataFlowSanitizer is supported on the following targets:
641
+
642
+ * ` x86_64-unknown-linux-gnu`
643
+
644
+ See the [Clang DataFlowSanitizer documentation][clang-dataflow] for more details.
645
+
628
646
# KernelAddressSanitizer
629
647
630
648
KernelAddressSanitizer (KASAN) is a freestanding version of AddressSanitizer
@@ -835,6 +853,7 @@ Sanitizers produce symbolized stacktraces when llvm-symbolizer binary is in `PAT
835
853
* [Sanitizers project page](https://github.com./google/sanitizers/wiki/)
836
854
* [AddressSanitizer in Clang][clang-asan]
837
855
* [ControlFlowIntegrity in Clang][clang-cfi]
856
+ * [DataFlowSanitizer in Clang][clang-dataflow]
838
857
* [HWAddressSanitizer in Clang][clang-hwasan]
839
858
* [Linux Kernel' s KernelAddressSanitizer documentation][linux-kasan]
840
859
* [LeakSanitizer in Clang][clang-lsan]
@@ -844,6 +863,7 @@ Sanitizers produce symbolized stacktraces when llvm-symbolizer binary is in `PAT
844
863
845
864
[clang-asan]: https://clang.llvm.org/docs/AddressSanitizer.html
846
865
[clang-cfi]: https://clang.llvm.org/docs/ControlFlowIntegrity.html
866
+ [clang-dataflow]: https://clang.llvm.org/docs/DataFlowSanitizer.html
847
867
[clang-hwasan]: https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html
848
868
[clang-kcfi]: https://clang.llvm.org/docs/ControlFlowIntegrity.html#fsanitize-kcfi
849
869
[clang-lsan]: https://clang.llvm.org/docs/LeakSanitizer.html
0 commit comments