forked from OSchip/llvm-project
Moving the documentation for the sanitizer negation attributes into AttrDocs.
llvm-svn: 201850
This commit is contained in:
parent
a0c95eb2d6
commit
7803b888c4
|
@ -291,6 +291,44 @@ not ODR-equivalent.
|
|||
Query for this feature with ``__has_attribute(enable_if)``.
|
||||
|
||||
|
||||
no_sanitize_address (no_address_safety_analysis, gnu::no_address_safety_analysis, gnu::no_sanitize_address)
|
||||
-----------------------------------------------------------------------------------------------------------
|
||||
.. csv-table:: Supported Syntaxes
|
||||
:header: "GNU", "C++11", "__declspec", "Keyword"
|
||||
|
||||
"X","X","",""
|
||||
|
||||
Use ``__attribute__((no_sanitize_address))`` on a function declaration to
|
||||
specify that address safety instrumentation (e.g. AddressSanitizer) should
|
||||
not be applied to that function.
|
||||
|
||||
|
||||
no_sanitize_memory
|
||||
------------------
|
||||
.. csv-table:: Supported Syntaxes
|
||||
:header: "GNU", "C++11", "__declspec", "Keyword"
|
||||
|
||||
"X","","",""
|
||||
|
||||
Use ``__attribute__((no_sanitize_memory))`` on a function declaration to
|
||||
specify that checks for uninitialized memory should not be inserted
|
||||
(e.g. by MemorySanitizer). The function may still be instrumented by the tool
|
||||
to avoid false positives in other places.
|
||||
|
||||
|
||||
no_sanitize_thread
|
||||
------------------
|
||||
.. csv-table:: Supported Syntaxes
|
||||
:header: "GNU", "C++11", "__declspec", "Keyword"
|
||||
|
||||
"X","","",""
|
||||
|
||||
Use ``__attribute__((no_sanitize_thread))`` on a function declaration to
|
||||
specify that checks for data races on plain (non-atomic) memory accesses should
|
||||
not be inserted by ThreadSanitizer. The function is still instrumented by the
|
||||
tool to avoid false positives and provide meaningful stack traces.
|
||||
|
||||
|
||||
objc_method_family
|
||||
------------------
|
||||
.. csv-table:: Supported Syntaxes
|
||||
|
|
|
@ -1639,46 +1639,15 @@ in the analyzer's `list of source-level annotations
|
|||
Extensions for Dynamic Analysis
|
||||
===============================
|
||||
|
||||
.. _langext-address_sanitizer:
|
||||
|
||||
AddressSanitizer
|
||||
----------------
|
||||
|
||||
Use ``__has_feature(address_sanitizer)`` to check if the code is being built
|
||||
with :doc:`AddressSanitizer`.
|
||||
|
||||
Use ``__attribute__((no_sanitize_address))``
|
||||
on a function declaration
|
||||
to specify that address safety instrumentation (e.g. AddressSanitizer) should
|
||||
not be applied to that function.
|
||||
|
||||
.. _langext-thread_sanitizer:
|
||||
|
||||
ThreadSanitizer
|
||||
----------------
|
||||
|
||||
Use ``__has_feature(thread_sanitizer)`` to check if the code is being built
|
||||
with :doc:`ThreadSanitizer`.
|
||||
|
||||
Use ``__attribute__((no_sanitize_thread))`` on a function declaration
|
||||
to specify that checks for data races on plain (non-atomic) memory accesses
|
||||
should not be inserted by ThreadSanitizer.
|
||||
The function is still instrumented by the tool to avoid false positives and
|
||||
provide meaningful stack traces.
|
||||
|
||||
.. _langext-memory_sanitizer:
|
||||
|
||||
MemorySanitizer
|
||||
----------------
|
||||
Use ``__has_feature(memory_sanitizer)`` to check if the code is being built
|
||||
with :doc:`MemorySanitizer`.
|
||||
|
||||
Use ``__attribute__((no_sanitize_memory))`` on a function declaration
|
||||
to specify that checks for uninitialized memory should not be inserted
|
||||
(e.g. by MemorySanitizer). The function may still be instrumented by the tool
|
||||
to avoid false positives in other places.
|
||||
|
||||
|
||||
Thread Safety Analysis
|
||||
======================
|
||||
|
||||
|
|
|
@ -1244,21 +1244,21 @@ def NoSanitizeAddress : InheritableAttr {
|
|||
let Spellings = [GCC<"no_address_safety_analysis">,
|
||||
GCC<"no_sanitize_address">];
|
||||
let Subjects = SubjectList<[Function, FunctionTemplate], ErrorDiag>;
|
||||
let Documentation = [Undocumented];
|
||||
let Documentation = [NoSanitizeAddressDocs];
|
||||
}
|
||||
|
||||
// Attribute to disable ThreadSanitizer checks.
|
||||
def NoSanitizeThread : InheritableAttr {
|
||||
let Spellings = [GNU<"no_sanitize_thread">];
|
||||
let Subjects = SubjectList<[Function, FunctionTemplate], ErrorDiag>;
|
||||
let Documentation = [Undocumented];
|
||||
let Documentation = [NoSanitizeThreadDocs];
|
||||
}
|
||||
|
||||
// Attribute to disable MemorySanitizer checks.
|
||||
def NoSanitizeMemory : InheritableAttr {
|
||||
let Spellings = [GNU<"no_sanitize_memory">];
|
||||
let Subjects = SubjectList<[Function, FunctionTemplate], ErrorDiag>;
|
||||
let Documentation = [Undocumented];
|
||||
let Documentation = [NoSanitizeMemoryDocs];
|
||||
}
|
||||
|
||||
// C/C++ Thread safety attributes (e.g. for deadlock, data race checking)
|
||||
|
|
|
@ -571,3 +571,35 @@ This attribute accepts a single parameter that must be one of the following:
|
|||
``unknown``, ``consumed``, or ``unconsumed``.
|
||||
}];
|
||||
}
|
||||
|
||||
def NoSanitizeAddressDocs : Documentation {
|
||||
let Category = DocCatFunction;
|
||||
// This function has multiple distinct spellings, and so it requires a custom
|
||||
// heading to be specified. The most common spelling is sufficient.
|
||||
let Heading = "no_sanitize_address";
|
||||
let Content = [{
|
||||
Use ``__attribute__((no_sanitize_address))`` on a function declaration to
|
||||
specify that address safety instrumentation (e.g. AddressSanitizer) should
|
||||
not be applied to that function.
|
||||
}];
|
||||
}
|
||||
|
||||
def NoSanitizeThreadDocs : Documentation {
|
||||
let Category = DocCatFunction;
|
||||
let Content = [{
|
||||
Use ``__attribute__((no_sanitize_thread))`` on a function declaration to
|
||||
specify that checks for data races on plain (non-atomic) memory accesses should
|
||||
not be inserted by ThreadSanitizer. The function is still instrumented by the
|
||||
tool to avoid false positives and provide meaningful stack traces.
|
||||
}];
|
||||
}
|
||||
|
||||
def NoSanitizeMemoryDocs : Documentation {
|
||||
let Category = DocCatFunction;
|
||||
let Content = [{
|
||||
Use ``__attribute__((no_sanitize_memory))`` on a function declaration to
|
||||
specify that checks for uninitialized memory should not be inserted
|
||||
(e.g. by MemorySanitizer). The function may still be instrumented by the tool
|
||||
to avoid false positives in other places.
|
||||
}];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue