From: Ivan Maidanski Date: Mon, 20 Nov 2017 06:56:25 +0000 (+0300) Subject: Fix 'unknown attribute no_sanitize' compiler warning for GCC X-Git-Tag: v7.6.2~46 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f5acd957181029de72b9d117d0785b98365f20eb;p=libatomic_ops Fix 'unknown attribute no_sanitize' compiler warning for GCC (fix commits 9020c5db, 6a3eee47, c058d9dc, 637f7fe1) * src/atomic_ops.h [!__has_feature && __SANITIZE_ADDRESS__] (AO_ADDRESS_SANITIZER): Define. * src/atomic_ops.h [!AO_ATTR_NO_SANITIZE_MEMORY && AO_MEMORY_SANITIZER && !AO_CLANG_PREREQ(3,8)] (AO_ATTR_NO_SANITIZE_MEMORY): Define to __attribute__((no_sanitize_memory)). * src/atomic_ops.h [!AO_ATTR_NO_SANITIZE_THREAD && AO_THREAD_SANITIZER && !AO_CLANG_PREREQ(3,8)] (AO_ATTR_NO_SANITIZE_THREAD): Define to __attribute__((no_sanitize_thread)). --- diff --git a/src/atomic_ops.h b/src/atomic_ops.h index 568a8c5..187e1f9 100644 --- a/src/atomic_ops.h +++ b/src/atomic_ops.h @@ -203,23 +203,30 @@ # if __has_feature(thread_sanitizer) # define AO_THREAD_SANITIZER # endif -#endif +#else +# ifdef __SANITIZE_ADDRESS__ + /* GCC v4.8+ */ +# define AO_ADDRESS_SANITIZER +# endif +#endif /* !__has_feature */ #ifndef AO_ATTR_NO_SANITIZE_MEMORY -# if defined(AO_MEMORY_SANITIZER) \ - && (!defined(__clang__) || AO_CLANG_PREREQ(3, 8)) +# ifndef AO_MEMORY_SANITIZER +# define AO_ATTR_NO_SANITIZE_MEMORY /* empty */ +# elif AO_CLANG_PREREQ(3, 8) # define AO_ATTR_NO_SANITIZE_MEMORY __attribute__((no_sanitize("memory"))) # else -# define AO_ATTR_NO_SANITIZE_MEMORY /* empty */ +# define AO_ATTR_NO_SANITIZE_MEMORY __attribute__((no_sanitize_memory)) # endif #endif /* !AO_ATTR_NO_SANITIZE_MEMORY */ #ifndef AO_ATTR_NO_SANITIZE_THREAD -# if defined(AO_THREAD_SANITIZER) \ - && (!defined(__clang__) || AO_CLANG_PREREQ(3, 8)) +# ifndef AO_THREAD_SANITIZER +# define AO_ATTR_NO_SANITIZE_THREAD /* empty */ +# elif AO_CLANG_PREREQ(3, 8) # define AO_ATTR_NO_SANITIZE_THREAD __attribute__((no_sanitize("thread"))) # else -# define AO_ATTR_NO_SANITIZE_THREAD /* empty */ +# define AO_ATTR_NO_SANITIZE_THREAD __attribute__((no_sanitize_thread)) # endif #endif /* !AO_ATTR_NO_SANITIZE_THREAD */