Skip to content

Commit 6c0522b

Browse files
Address Petr's comment
1 parent 179791b commit 6c0522b

1 file changed

Lines changed: 18 additions & 5 deletions

File tree

‎development-tools/sanitizers.rst‎

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,30 +34,43 @@ necessary compiler and linker flags.
3434
- Detects
3535
- ``configure`` option
3636
- Compilers
37-
* - AddressSanitizer (ASan)
37+
* - `AddressSanitizer (ASan)
38+
<https://clang.llvm.org/docs/AddressSanitizer.html>`__
3839
- Out-of-bounds accesses, use-after-free, leaks
3940
- :option:`python:--with-address-sanitizer`
4041
- GCC, Clang
41-
* - HWAddressSanitizer (HWASan)
42+
* - `HWAddressSanitizer (HWASan)
43+
<https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html>`__
4244
- Like ASan, with hardware pointer tagging
4345
- :option:`python:--with-hwaddress-sanitizer`
4446
- GCC, Clang (AArch64; experimental on x86-64)
45-
* - MemorySanitizer (MSan)
47+
* - `MemorySanitizer (MSan)
48+
<https://clang.llvm.org/docs/MemorySanitizer.html>`__
4649
- Reads of uninitialized memory
4750
- :option:`python:--with-memory-sanitizer`
4851
- Clang
49-
* - UndefinedBehaviorSanitizer (UBSan)
52+
* - `UndefinedBehaviorSanitizer (UBSan)
53+
<https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html>`__
5054
- Signed overflow, misaligned access, invalid shifts, null dereference
5155
- :option:`python:--with-undefined-behavior-sanitizer`
5256
- GCC, Clang
53-
* - ThreadSanitizer (TSan)
57+
* - `ThreadSanitizer (TSan)
58+
<https://clang.llvm.org/docs/ThreadSanitizer.html>`__
5459
- Data races
5560
- :option:`python:--with-thread-sanitizer`
5661
- GCC, Clang
5762

5863
UBSan can be combined with any of the others. ASan, HWASan, MSan and TSan
5964
are mutually exclusive.
6065

66+
Compilers provide additional sanitizers that CPython has no ``configure``
67+
option for. They may or may not work with CPython, and can be enabled
68+
manually through ``CFLAGS`` and ``LDFLAGS``. See `Controlling Code Generation
69+
<https://clang.llvm.org/docs/UsersManual.html#controlling-code-generation>`__
70+
for Clang's full list and `Instrumentation Options
71+
<https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html>`__ for
72+
GCC's, which currently keeps its options compatible with Clang's.
73+
6174

6275
Building and testing
6376
====================

0 commit comments

Comments
 (0)