#ifndef ASAN_INTERCEPTORS_H
#define ASAN_INTERCEPTORS_H
#include "asan_interceptors_memintrinsics.h"
#include "asan_internal.h"
#include "interception/interception.h"
#include "sanitizer_common/sanitizer_platform.h"
#include "sanitizer_common/sanitizer_platform_interceptors.h"
namespace __asan {
void InitializeAsanInterceptors();
void InitializePlatformInterceptors();
}
#if !SANITIZER_FUCHSIA
#if !SANITIZER_WINDOWS
#define ASAN_INTERCEPT__LONGJMP …
#define ASAN_INTERCEPT_INDEX …
#define ASAN_INTERCEPT_PTHREAD_CREATE …
#else
#define ASAN_INTERCEPT__LONGJMP …
#define ASAN_INTERCEPT_INDEX …
#define ASAN_INTERCEPT_PTHREAD_CREATE …
#endif
#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
SANITIZER_SOLARIS
#define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX …
#else
#define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX …
#endif
#if SANITIZER_GLIBC || SANITIZER_SOLARIS
#define ASAN_INTERCEPT_SWAPCONTEXT …
#else
#define ASAN_INTERCEPT_SWAPCONTEXT …
#endif
#if !SANITIZER_WINDOWS
#define ASAN_INTERCEPT_SIGLONGJMP …
#else
#define ASAN_INTERCEPT_SIGLONGJMP …
#endif
#if SANITIZER_GLIBC
#define ASAN_INTERCEPT___LONGJMP_CHK …
#else
#define ASAN_INTERCEPT___LONGJMP_CHK …
#endif
#if ASAN_HAS_EXCEPTIONS && !SANITIZER_SOLARIS && !SANITIZER_NETBSD && \
(!SANITIZER_WINDOWS || (defined(__MINGW32__) && defined(__i386__)))
#define ASAN_INTERCEPT___CXA_THROW …
#define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION …
# if defined(_GLIBCXX_SJLJ_EXCEPTIONS) || (SANITIZER_IOS && defined(__arm__))
#define ASAN_INTERCEPT__UNWIND_SJLJ_RAISEEXCEPTION …
# else
#define ASAN_INTERCEPT__UNWIND_RAISEEXCEPTION …
# endif
#else
#define ASAN_INTERCEPT___CXA_THROW …
#define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION …
#define ASAN_INTERCEPT__UNWIND_RAISEEXCEPTION …
#define ASAN_INTERCEPT__UNWIND_SJLJ_RAISEEXCEPTION …
#endif
#if !SANITIZER_WINDOWS
#define ASAN_INTERCEPT___CXA_ATEXIT …
#else
#define ASAN_INTERCEPT___CXA_ATEXIT …
#endif
#if SANITIZER_NETBSD
#define ASAN_INTERCEPT_ATEXIT …
#else
#define ASAN_INTERCEPT_ATEXIT …
#endif
#if SANITIZER_GLIBC
#define ASAN_INTERCEPT___STRDUP …
#else
#define ASAN_INTERCEPT___STRDUP …
#endif
#if SANITIZER_GLIBC && ASAN_INTERCEPT_PTHREAD_CREATE
#define ASAN_INTERCEPT_TIMEDJOIN …
#define ASAN_INTERCEPT_TRYJOIN …
#else
#define ASAN_INTERCEPT_TIMEDJOIN …
#define ASAN_INTERCEPT_TRYJOIN …
#endif
#if SANITIZER_LINUX && \
(defined(__arm__) || defined(__aarch64__) || defined(__i386__) || \
defined(__x86_64__) || SANITIZER_RISCV64 || SANITIZER_LOONGARCH64)
#define ASAN_INTERCEPT_VFORK …
#else
#define ASAN_INTERCEPT_VFORK …
#endif
#if SANITIZER_NETBSD
#define ASAN_INTERCEPT_PTHREAD_ATFORK …
#else
#define ASAN_INTERCEPT_PTHREAD_ATFORK …
#endif
DECLARE_REAL(…)
DECLARE_REAL(…)
DECLARE_REAL(…)
DECLARE_REAL(…)
DECLARE_REAL(…)
DECLARE_REAL(…)
# if !SANITIZER_APPLE
#define ASAN_INTERCEPT_FUNC(name) …
#define ASAN_INTERCEPT_FUNC_VER(name, ver) …
#define ASAN_INTERCEPT_FUNC_VER_UNVERSIONED_FALLBACK(name, ver) …
# else
#define ASAN_INTERCEPT_FUNC …
# endif
#define ASAN_INTERCEPTOR_ENTER(ctx, func) …
#define COMMON_INTERCEPT_FUNCTION(name) …
#endif
#endif