aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQinkun Bao <qinkun@google.com>2025-06-04 00:10:32 +0000
committerQinkun Bao <qinkun@google.com>2025-06-04 00:10:32 +0000
commite8450a2cab928ec9fdfa6cb6b0e97859ddc84fc1 (patch)
tree47539abd0b4ff1d4cffd2c0d21de9f1f4a7d0f87
parent2ff2a076cc089f0c977ce7aea231ee5541879f8a (diff)
parent76241dc34c9f881e7fd55d3e17df451a5912d302 (diff)
downloadllvm-users/qinkunbao/spr/sanitizerdocnfi-update-the-doc-for-prefixsanitize-1.zip
llvm-users/qinkunbao/spr/sanitizerdocnfi-update-the-doc-for-prefixsanitize-1.tar.gz
llvm-users/qinkunbao/spr/sanitizerdocnfi-update-the-doc-for-prefixsanitize-1.tar.bz2
Created using spr 1.3.6
-rw-r--r--clang/docs/ReleaseNotes.rst4
-rw-r--r--clang/docs/SanitizerSpecialCaseList.rst18
-rw-r--r--clang/include/clang/Basic/DiagnosticGroups.td16
3 files changed, 27 insertions, 11 deletions
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index eccee1a..49ce9ef 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -1045,7 +1045,9 @@ Sanitizers
----------
- ``-fsanitize=vptr`` is no longer a part of ``-fsanitize=undefined``.
-- Sanitizer ignorelists now support the syntax ``src:*=sanitize``.
+- Sanitizer ignorelists now support the syntax ``src:*=sanitize``,
+ ``type:*=sanitize``, ``fun:*=sanitize``, ``global:*=sanitize``,
+ and ``mainfile:*=sanitize``.
Python Binding Changes
----------------------
diff --git a/clang/docs/SanitizerSpecialCaseList.rst b/clang/docs/SanitizerSpecialCaseList.rst
index 6f924cf..61b6c55 100644
--- a/clang/docs/SanitizerSpecialCaseList.rst
+++ b/clang/docs/SanitizerSpecialCaseList.rst
@@ -79,7 +79,8 @@ instrumentation for arithmetic operations containing values of type ``int``.
The ``=sanitize`` category is also supported. Any ``=sanitize`` category
entries enable sanitizer instrumentation, even if it was ignored by entries
-before.
+before. Entries can be ``src``, ``type``, ``global``, ``fun``, and
+``mainfile``.
With this, one may disable instrumentation for some or all types and
specifically allow instrumentation for one or many types -- including types
@@ -103,7 +104,7 @@ supported sanitizers.
}
If multiple entries match the source, then the latest entry takes the
-precedence.
+precedence. Here are a few examples.
.. code-block:: bash
@@ -119,6 +120,19 @@ precedence.
src:*/mylib/test.cc
src:*/mylib/*=sanitize
+ $ cat ignorelist3.txt
+ # Type T will not be instrumented.
+ type:*
+ type:T=sanitize
+ type:T
+
+ $ cat ignorelist4.txt
+ # Function `bad_bar`` will be instrumented.
+ # Function `good_bar` will not be instrumented.
+ fun:*
+ fun:*bar
+ fun:bad_bar=sanitize
+
Format
======
diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td
index be75b9e..beda73e 100644
--- a/clang/include/clang/Basic/DiagnosticGroups.td
+++ b/clang/include/clang/Basic/DiagnosticGroups.td
@@ -813,19 +813,19 @@ changes to one object won't affect the others, the object's initializer will run
once per copy, etc.
Specifically, this warning fires when it detects an object which:
- 1. Is defined as ``inline`` in a header file (so it might get compiled into multiple libaries), and
- 2. Has external linkage (otherwise it's supposed to be duplicated), and
- 3. Has hidden visibility.
+1. Is defined as ``inline`` in a header file (so it might get compiled into multiple libaries), and
+2. Has external linkage (otherwise it's supposed to be duplicated), and
+3. Has hidden visibility.
As well as one of the following:
- 1. The object is mutable, or
- 2. The object's initializer definitely has side effects.
+1. The object is mutable, or
+2. The object's initializer definitely has side effects.
The warning can be resolved by removing one of the conditions above. In rough
order of preference, this may be done by:
- 1. Marking the object ``const`` (if possible)
- 2. Moving the object's definition to a source file
- 3. Giving the object non-hidden visibility, e.g. using ``__attribute((visibility("default")))``.
+1. Marking the object ``const`` (if possible)
+2. Moving the object's definition to a source file
+3. Giving the object non-hidden visibility, e.g. using ``__attribute((visibility("default")))``.
Note that for (2), all levels of a pointer variable must be constant;
``const int*`` will trigger the warning because the pointer itself is mutable.