================ @@ -48,6 +48,64 @@ Example $ clang -fsanitize=address -fsanitize-ignorelist=ignorelist.txt foo.c ; ./a.out # No error report here. +Usage with UndefinedBehaviorSanitizer +===================================== + +The arithmetic overflow sanitizers ``unsigned-integer-overflow`` and +``signed-integer-overflow`` as well as the implicit integer truncation +sanitizers ``implicit-signed-integer-truncation`` and +``implicit-unsigned-integer-truncation`` support the ability to adjust +instrumentation based on type. + +.. code-block:: bash + + $ cat foo.c + void foo() { + int a = 2147483647; // INT_MAX + ++a; // Normally, an overflow with -fsanitize=signed-integer-overflow + } + $ cat ignorelist.txt + [signed-integer-overflow] + type:int + $ clang -fsanitize=signed-integer-overflow -fsanitize-ignorelist=ignorelist.txt foo.c ; ./a.out + # no signed-integer-overflow error + +For example, supplying the above ``ignorelist.txt`` to +``-fsanitize-ignorelist=ignorelist.txt`` disables overflow sanitizer +instrumentation for arithmetic operations containing values of type ``int``. + +The following SCL categories are supported: ``=no_sanitize`` and ``=sanitize``. +The ``no_sanitize`` category is the default for any entry within an ignorelist +and specifies that the query, if matched, will have its sanitizer +instrumentation ignored. Conversely, ``sanitize`` causes its queries, if +matched, to be left out of the ignorelist -- essentially ensuring sanitizer +instrumentation remains for those types. This is useful for whitelisting ---------------- vitalybuka wrote:
Something like? Any match of ``sanitize`` cancels out all matches of ``no_sanitize``, regardless of position in ignore lists. https://github.com/llvm/llvm-project/pull/107332 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits