[sanitizer] Warn if interception fails.
This includes a clang-format pass over common interceptors. llvm-svn: 194372
This commit is contained in:
parent
fa421639de
commit
b69699eb58
|
@ -107,6 +107,19 @@ using namespace __asan; // NOLINT
|
|||
DECLARE_REAL_AND_INTERCEPTOR(void *, malloc, uptr)
|
||||
DECLARE_REAL_AND_INTERCEPTOR(void, free, void *)
|
||||
|
||||
#if !SANITIZER_MAC
|
||||
#define ASAN_INTERCEPT_FUNC(name) \
|
||||
do { \
|
||||
if ((!INTERCEPT_FUNCTION(name) || !REAL(name)) && \
|
||||
common_flags()->verbosity > 0) \
|
||||
Report("AddressSanitizer: failed to intercept '" #name "'\n"); \
|
||||
} while (0)
|
||||
#else
|
||||
// OS X interceptors don't need to be initialized with INTERCEPT_FUNCTION.
|
||||
#define ASAN_INTERCEPT_FUNC(name)
|
||||
#endif // SANITIZER_MAC
|
||||
|
||||
#define COMMON_INTERCEPT_FUNCTION(name) ASAN_INTERCEPT_FUNC(name)
|
||||
#define COMMON_INTERCEPTOR_UNPOISON_PARAM(ctx, count) \
|
||||
do { \
|
||||
} while (false)
|
||||
|
@ -653,16 +666,6 @@ INTERCEPTOR(int, __cxa_atexit, void (*func)(void *), void *arg,
|
|||
}
|
||||
#endif // ASAN_INTERCEPT___CXA_ATEXIT
|
||||
|
||||
#if !SANITIZER_MAC
|
||||
#define ASAN_INTERCEPT_FUNC(name) do { \
|
||||
if (!INTERCEPT_FUNCTION(name) && common_flags()->verbosity > 0) \
|
||||
Report("AddressSanitizer: failed to intercept '" #name "'\n"); \
|
||||
} while (0)
|
||||
#else
|
||||
// OS X interceptors don't need to be initialized with INTERCEPT_FUNCTION.
|
||||
#define ASAN_INTERCEPT_FUNC(name)
|
||||
#endif // SANITIZER_MAC
|
||||
|
||||
#if SANITIZER_WINDOWS
|
||||
INTERCEPTOR_WINAPI(DWORD, CreateThread,
|
||||
void* security, uptr stack_size,
|
||||
|
|
|
@ -294,14 +294,16 @@ void __msan_init() {
|
|||
|
||||
SetDieCallback(MsanDie);
|
||||
InitTlsSize();
|
||||
|
||||
const char *msan_options = GetEnv("MSAN_OPTIONS");
|
||||
InitializeFlags(&msan_flags, msan_options);
|
||||
__sanitizer_set_report_path(common_flags()->log_path);
|
||||
|
||||
InitializeInterceptors();
|
||||
InstallAtExitHandler(); // Needs __cxa_atexit interceptor.
|
||||
|
||||
if (MSAN_REPLACE_OPERATORS_NEW_AND_DELETE)
|
||||
ReplaceOperatorsNewAndDelete();
|
||||
const char *msan_options = GetEnv("MSAN_OPTIONS");
|
||||
InitializeFlags(&msan_flags, msan_options);
|
||||
__sanitizer_set_report_path(common_flags()->log_path);
|
||||
if (StackSizeIsUnlimited()) {
|
||||
if (common_flags()->verbosity)
|
||||
Printf("Unlimited stack, doing reexec\n");
|
||||
|
|
|
@ -1234,7 +1234,7 @@ int OnExit() {
|
|||
|
||||
extern "C" int *__errno_location(void);
|
||||
|
||||
// A version of CHECK_UNPOISED using a saved scope value. Used in common
|
||||
// A version of CHECK_UNPOISONED using a saved scope value. Used in common
|
||||
// interceptors.
|
||||
#define CHECK_UNPOISONED_CTX(ctx, x, n) \
|
||||
do { \
|
||||
|
@ -1242,6 +1242,14 @@ extern "C" int *__errno_location(void);
|
|||
CHECK_UNPOISONED_0(x, n); \
|
||||
} while (0)
|
||||
|
||||
#define MSAN_INTERCEPT_FUNC(name) \
|
||||
do { \
|
||||
if ((!INTERCEPT_FUNCTION(name) || !REAL(name)) && \
|
||||
common_flags()->verbosity > 0) \
|
||||
Report("MemorySanitizer: failed to intercept '" #name "'\n"); \
|
||||
} while (0)
|
||||
|
||||
#define COMMON_INTERCEPT_FUNCTION(name) MSAN_INTERCEPT_FUNC(name)
|
||||
#define COMMON_INTERCEPTOR_UNPOISON_PARAM(ctx, count) \
|
||||
UnpoisonParam(count)
|
||||
#define COMMON_INTERCEPTOR_WRITE_RANGE(ctx, ptr, size) \
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1840,6 +1840,7 @@ struct TsanInterceptorContext {
|
|||
// Causes interceptor recursion (glob64() calls lstat64())
|
||||
#undef SANITIZER_INTERCEPT_GLOB
|
||||
|
||||
#define COMMON_INTERCEPT_FUNCTION(name) INTERCEPT_FUNCTION(name)
|
||||
#define COMMON_INTERCEPTOR_UNPOISON_PARAM(ctx, count) \
|
||||
do { \
|
||||
} while (false)
|
||||
|
|
Loading…
Reference in New Issue