compiler_attributes.h: Add __disable_sanitizer_instrumentation
The new attribute maps to __attribute__((disable_sanitizer_instrumentation)), which will be supported by Clang >= 14.0. Future support in GCC is also possible. This attribute disables compiler instrumentation for kernel sanitizer tools, making it easier to implement noinstr. It is different from the existing __no_sanitize* attributes, which may still allow certain types of instrumentation to prevent false positives. Signed-off-by: Alexander Potapenko <glider@google.com> Signed-off-by: Marco Elver <elver@google.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
0509811952
commit
a015b70859
|
@ -308,6 +308,24 @@
|
|||
# define __compiletime_warning(msg)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Optional: only supported since clang >= 14.0
|
||||
*
|
||||
* clang: https://clang.llvm.org/docs/AttributeReference.html#disable-sanitizer-instrumentation
|
||||
*
|
||||
* disable_sanitizer_instrumentation is not always similar to
|
||||
* no_sanitize((<sanitizer-name>)): the latter may still let specific sanitizers
|
||||
* insert code into functions to prevent false positives. Unlike that,
|
||||
* disable_sanitizer_instrumentation prevents all kinds of instrumentation to
|
||||
* functions with the attribute.
|
||||
*/
|
||||
#if __has_attribute(disable_sanitizer_instrumentation)
|
||||
# define __disable_sanitizer_instrumentation \
|
||||
__attribute__((disable_sanitizer_instrumentation))
|
||||
#else
|
||||
# define __disable_sanitizer_instrumentation
|
||||
#endif
|
||||
|
||||
/*
|
||||
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-weak-function-attribute
|
||||
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-weak-variable-attribute
|
||||
|
|
Loading…
Reference in New Issue