gcc: quiet Wattribute for no_sanitize("address")

This is an unfortunate instance where the __has_attribute check does
not function usefully.  Gcc does have the attribute, but for gcc it only
applies to functions, not variables, and trying to apply it to a
variable generates Wattribute.  So far we only apply the attribute to
variables.  Only enable the attribute for clang, for now.

Reviewed by:	Anton Rang <rang at acm.org>
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D22875
This commit is contained in:
rlibby 2019-12-21 02:43:20 +00:00 committed by Sebastian Huber
parent b9967c3f90
commit b9af5041bd
1 changed files with 6 additions and 2 deletions

View File

@ -709,8 +709,12 @@
/* Function should not be analyzed. */ /* Function should not be analyzed. */
#define __no_lock_analysis __lock_annotate(no_thread_safety_analysis) #define __no_lock_analysis __lock_annotate(no_thread_safety_analysis)
/* Function or variable should not be sanitized, ie. by AddressSanitizer */ /*
#if __has_attribute(no_sanitize) * Function or variable should not be sanitized, i.e. by AddressSanitizer.
* GCC has the nosanitize attribute, but as a function attribute only, and
* warns on use as a variable attribute.
*/
#if __has_attribute(no_sanitize) && defined(__clang__)
#define __nosanitizeaddress __attribute__((no_sanitize("address"))) #define __nosanitizeaddress __attribute__((no_sanitize("address")))
#else #else
#define __nosanitizeaddress #define __nosanitizeaddress