diff --git a/compiler-rt/lib/asan/asan_interceptors.h b/compiler-rt/lib/asan/asan_interceptors.h index 2d551cfafd1f5..7081e8bbb2af0 100644 --- a/compiler-rt/lib/asan/asan_interceptors.h +++ b/compiler-rt/lib/asan/asan_interceptors.h @@ -33,104 +33,104 @@ void InitializePlatformInterceptors(); // Use macro to describe if specific function should be // intercepted on a given platform. -#if !SANITIZER_WINDOWS -# define ASAN_INTERCEPT__LONGJMP 1 -# define ASAN_INTERCEPT_INDEX 1 -# define ASAN_INTERCEPT_PTHREAD_CREATE 1 -#else -# define ASAN_INTERCEPT__LONGJMP 0 -# define ASAN_INTERCEPT_INDEX 0 -# define ASAN_INTERCEPT_PTHREAD_CREATE 0 -#endif - -#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \ - SANITIZER_SOLARIS -# define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX 1 -#else -# define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX 0 -#endif - -#if SANITIZER_GLIBC || SANITIZER_SOLARIS -# define ASAN_INTERCEPT_SWAPCONTEXT 1 -#else -# define ASAN_INTERCEPT_SWAPCONTEXT 0 -#endif - -#if !SANITIZER_WINDOWS -# define ASAN_INTERCEPT_SIGLONGJMP 1 -#else -# define ASAN_INTERCEPT_SIGLONGJMP 0 -#endif - -#if SANITIZER_GLIBC -# define ASAN_INTERCEPT___LONGJMP_CHK 1 -#else -# define ASAN_INTERCEPT___LONGJMP_CHK 0 -#endif - -#if ASAN_HAS_EXCEPTIONS && !SANITIZER_SOLARIS && !SANITIZER_NETBSD && \ - (!SANITIZER_WINDOWS || (defined(__MINGW32__) && defined(__i386__))) -# define ASAN_INTERCEPT___CXA_THROW 1 -# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 1 -# if defined(_GLIBCXX_SJLJ_EXCEPTIONS) || (SANITIZER_IOS && defined(__arm__)) -# define ASAN_INTERCEPT__UNWIND_SJLJ_RAISEEXCEPTION 1 -# else -# define ASAN_INTERCEPT__UNWIND_RAISEEXCEPTION 1 -# endif -#else -# define ASAN_INTERCEPT___CXA_THROW 0 -# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 0 -# define ASAN_INTERCEPT__UNWIND_RAISEEXCEPTION 0 -# define ASAN_INTERCEPT__UNWIND_SJLJ_RAISEEXCEPTION 0 -#endif - -#if !SANITIZER_WINDOWS -# define ASAN_INTERCEPT___CXA_ATEXIT 1 -#else -# define ASAN_INTERCEPT___CXA_ATEXIT 0 -#endif - -#if SANITIZER_NETBSD -# define ASAN_INTERCEPT_ATEXIT 1 -#else -# define ASAN_INTERCEPT_ATEXIT 0 -#endif - -#if SANITIZER_GLIBC -# define ASAN_INTERCEPT___STRDUP 1 -#else -# define ASAN_INTERCEPT___STRDUP 0 -#endif - -#if SANITIZER_GLIBC && ASAN_INTERCEPT_PTHREAD_CREATE -# define ASAN_INTERCEPT_TIMEDJOIN 1 -# define ASAN_INTERCEPT_TRYJOIN 1 -#else -# define ASAN_INTERCEPT_TIMEDJOIN 0 -# define ASAN_INTERCEPT_TRYJOIN 0 -#endif - -#if SANITIZER_LINUX && \ - (defined(__arm__) || defined(__aarch64__) || defined(__i386__) || \ - defined(__x86_64__) || SANITIZER_RISCV64 || SANITIZER_LOONGARCH64) -# define ASAN_INTERCEPT_VFORK 1 -#else -# define ASAN_INTERCEPT_VFORK 0 -#endif - -#if SANITIZER_NETBSD -# define ASAN_INTERCEPT_PTHREAD_ATFORK 1 -#else -# define ASAN_INTERCEPT_PTHREAD_ATFORK 0 -#endif - -DECLARE_REAL(int, memcmp, const void *a1, const void *a2, SIZE_T size) -DECLARE_REAL(char*, strchr, const char *str, int c) -DECLARE_REAL(SIZE_T, strlen, const char *s) -DECLARE_REAL(char*, strncpy, char *to, const char *from, SIZE_T size) -DECLARE_REAL(SIZE_T, strnlen, const char *s, SIZE_T maxlen) +# if !SANITIZER_WINDOWS +# define ASAN_INTERCEPT__LONGJMP 1 +# define ASAN_INTERCEPT_INDEX 1 +# define ASAN_INTERCEPT_PTHREAD_CREATE 1 +# else +# define ASAN_INTERCEPT__LONGJMP 0 +# define ASAN_INTERCEPT_INDEX 0 +# define ASAN_INTERCEPT_PTHREAD_CREATE 0 +# endif + +# if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \ + SANITIZER_SOLARIS +# define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX 1 +# else +# define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX 0 +# endif + +# if SANITIZER_GLIBC || SANITIZER_SOLARIS +# define ASAN_INTERCEPT_SWAPCONTEXT 1 +# else +# define ASAN_INTERCEPT_SWAPCONTEXT 0 +# endif + +# if !SANITIZER_WINDOWS +# define ASAN_INTERCEPT_SIGLONGJMP 1 +# else +# define ASAN_INTERCEPT_SIGLONGJMP 0 +# endif + +# if SANITIZER_GLIBC +# define ASAN_INTERCEPT___LONGJMP_CHK 1 +# else +# define ASAN_INTERCEPT___LONGJMP_CHK 0 +# endif + +# if ASAN_HAS_EXCEPTIONS && !SANITIZER_SOLARIS && !SANITIZER_NETBSD && \ + (!SANITIZER_WINDOWS || (defined(__MINGW32__) && defined(__i386__))) +# define ASAN_INTERCEPT___CXA_THROW 1 +# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 1 +# if defined(_GLIBCXX_SJLJ_EXCEPTIONS) || (SANITIZER_IOS && defined(__arm__)) +# define ASAN_INTERCEPT__UNWIND_SJLJ_RAISEEXCEPTION 1 +# else +# define ASAN_INTERCEPT__UNWIND_RAISEEXCEPTION 1 +# endif +# else +# define ASAN_INTERCEPT___CXA_THROW 0 +# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 0 +# define ASAN_INTERCEPT__UNWIND_RAISEEXCEPTION 0 +# define ASAN_INTERCEPT__UNWIND_SJLJ_RAISEEXCEPTION 0 +# endif + +# if !SANITIZER_WINDOWS +# define ASAN_INTERCEPT___CXA_ATEXIT 1 +# else +# define ASAN_INTERCEPT___CXA_ATEXIT 0 +# endif + +# if SANITIZER_NETBSD +# define ASAN_INTERCEPT_ATEXIT 1 +# else +# define ASAN_INTERCEPT_ATEXIT 0 +# endif + +# if SANITIZER_GLIBC +# define ASAN_INTERCEPT___STRDUP 1 +# else +# define ASAN_INTERCEPT___STRDUP 0 +# endif + +# if SANITIZER_GLIBC && ASAN_INTERCEPT_PTHREAD_CREATE +# define ASAN_INTERCEPT_TIMEDJOIN 1 +# define ASAN_INTERCEPT_TRYJOIN 1 +# else +# define ASAN_INTERCEPT_TIMEDJOIN 0 +# define ASAN_INTERCEPT_TRYJOIN 0 +# endif + +# if SANITIZER_LINUX && \ + (defined(__arm__) || defined(__aarch64__) || defined(__i386__) || \ + defined(__x86_64__) || SANITIZER_RISCV64 || SANITIZER_LOONGARCH64) +# define ASAN_INTERCEPT_VFORK 1 +# else +# define ASAN_INTERCEPT_VFORK 0 +# endif + +# if SANITIZER_NETBSD +# define ASAN_INTERCEPT_PTHREAD_ATFORK 1 +# else +# define ASAN_INTERCEPT_PTHREAD_ATFORK 0 +# endif + +DECLARE_REAL(int, memcmp, const void* a1, const void* a2, SIZE_T size) +DECLARE_REAL(char*, strchr, const char* str, int c) +DECLARE_REAL(SIZE_T, strlen, const char* s) +DECLARE_REAL(char*, strncpy, char* to, const char* from, SIZE_T size) +DECLARE_REAL(SIZE_T, strnlen, const char* s, SIZE_T maxlen) DECLARE_REAL(SIZE_T, wcsnlen, const wchar_t* s, SIZE_T maxlen) -DECLARE_REAL(char*, strstr, const char *s1, const char *s2) +DECLARE_REAL(char*, strstr, const char* s1, const char* s2) # if !SANITIZER_APPLE # define ASAN_INTERCEPT_FUNC(name) \ @@ -157,11 +157,11 @@ DECLARE_REAL(char*, strstr, const char *s1, const char *s2) # define ASAN_INTERCEPT_FUNC(name) # endif // SANITIZER_APPLE -#define ASAN_INTERCEPTOR_ENTER(ctx, func) \ - AsanInterceptorContext _ctx = {#func}; \ - ctx = (void *)&_ctx; \ - (void) ctx; -#define COMMON_INTERCEPT_FUNCTION(name) ASAN_INTERCEPT_FUNC(name) +# define ASAN_INTERCEPTOR_ENTER(ctx, func) \ + AsanInterceptorContext _ctx = {#func}; \ + ctx = (void*)&_ctx; \ + (void)ctx; +# define COMMON_INTERCEPT_FUNCTION(name) ASAN_INTERCEPT_FUNC(name) #endif // !SANITIZER_FUCHSIA