diff options
Diffstat (limited to 'docs/UndefinedBehaviorSanitizer.rst')
| -rw-r--r-- | docs/UndefinedBehaviorSanitizer.rst | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/docs/UndefinedBehaviorSanitizer.rst b/docs/UndefinedBehaviorSanitizer.rst index 85dd549baaf8..0a08a41e2d9b 100644 --- a/docs/UndefinedBehaviorSanitizer.rst +++ b/docs/UndefinedBehaviorSanitizer.rst @@ -75,6 +75,7 @@ Available checks are: of a misaligned reference. - ``-fsanitize=bool``: Load of a ``bool`` value which is neither ``true`` nor ``false``. + - ``-fsanitize=builtin``: Passing invalid values to compiler builtins. - ``-fsanitize=bounds``: Out of bounds array indexing, in cases where the array bound can be statically determined. - ``-fsanitize=enum``: Load of a value of an enumerated type which @@ -86,7 +87,8 @@ Available checks are: - ``-fsanitize=float-divide-by-zero``: Floating point division by zero. - ``-fsanitize=function``: Indirect call of a function through a - function pointer of the wrong type (Linux, C++ and x86/x86_64 only). + function pointer of the wrong type (Darwin/Linux, C++ and x86/x86_64 + only). - ``-fsanitize=integer-divide-by-zero``: Integer division by zero. - ``-fsanitize=nonnull-attribute``: Passing null pointer as a function parameter which is declared to never be null. @@ -130,11 +132,11 @@ Available checks are: it is often unintentional, so UBSan offers to catch it. - ``-fsanitize=vla-bound``: A variable-length array whose bound does not evaluate to a positive value. - - ``-fsanitize=vptr``: Use of an object whose vptr indicates that - it is of the wrong dynamic type, or that its lifetime has not - begun or has ended. Incompatible with ``-fno-rtti``. Link must - be performed by ``clang++``, not ``clang``, to make sure C++-specific - parts of the runtime library and C++ standard libraries are present. + - ``-fsanitize=vptr``: Use of an object whose vptr indicates that it is of + the wrong dynamic type, or that its lifetime has not begun or has ended. + Incompatible with ``-fno-rtti``. Link must be performed by ``clang++``, not + ``clang``, to make sure C++-specific parts of the runtime library and C++ + standard libraries are present. You can also use the following check groups: - ``-fsanitize=undefined``: All of the checks listed above other than @@ -154,6 +156,19 @@ Volatile The ``null``, ``alignment``, ``object-size``, and ``vptr`` checks do not apply to pointers to types with the ``volatile`` qualifier. +Minimal Runtime +=============== + +There is a minimal UBSan runtime available suitable for use in production +environments. This runtime has a small attack surface. It only provides very +basic issue logging and deduplication, and does not support ``-fsanitize=vptr`` +checking. + +To use the minimal runtime, add ``-fsanitize-minimal-runtime`` to the clang +command line options. For example, if you're used to compiling with +``-fsanitize=undefined``, you could enable the minimal runtime with +``-fsanitize=undefined -fsanitize-minimal-runtime``. + Stack traces and report symbolization ===================================== If you want UBSan to print symbolized stack trace for each error report, you |
