ASan: intercept prctl on Linux only

llvm-svn: 169616
This commit is contained in:
Alexey Samsonov 2012-12-07 17:54:38 +00:00
parent e0930d3316
commit fa94fa52ad
2 changed files with 9 additions and 3 deletions

View File

@ -41,8 +41,10 @@ using __sanitizer::uptr;
#if defined(__linux__) #if defined(__linux__)
# define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX 1 # define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX 1
# define ASAN_INTERCEPT_PRCTL 1
#else #else
# define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX 0 # define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX 0
# define ASAN_INTERCEPT_PRCTL 0
#endif #endif
#if !defined(__APPLE__) #if !defined(__APPLE__)

View File

@ -177,10 +177,11 @@ INTERCEPTOR(void, siglongjmp, void *env, int val) {
} }
#endif #endif
#if ASAN_INTERCEPT_PRCTL
#define PR_SET_NAME 15 #define PR_SET_NAME 15
INTERCEPTOR(int, prctl, int option,
INTERCEPTOR(int, prctl, int option, unsigned long arg2, unsigned long arg3, unsigned long arg2, unsigned long arg3, // NOLINT
unsigned long arg4, unsigned long arg5) { unsigned long arg4, unsigned long arg5) { // NOLINT
int res = REAL(prctl(option, arg2, arg3, arg4, arg5)); int res = REAL(prctl(option, arg2, arg3, arg4, arg5));
if (option == PR_SET_NAME) { if (option == PR_SET_NAME) {
AsanThread *t = asanThreadRegistry().GetCurrent(); AsanThread *t = asanThreadRegistry().GetCurrent();
@ -193,6 +194,7 @@ INTERCEPTOR(int, prctl, int option, unsigned long arg2, unsigned long arg3,
} }
return res; return res;
} }
#endif
#if ASAN_INTERCEPT___CXA_THROW #if ASAN_INTERCEPT___CXA_THROW
INTERCEPTOR(void, __cxa_throw, void *a, void *b, void *c) { INTERCEPTOR(void, __cxa_throw, void *a, void *b, void *c) {
@ -737,7 +739,9 @@ void InitializeAsanInterceptors() {
#if ASAN_INTERCEPT_SIGLONGJMP #if ASAN_INTERCEPT_SIGLONGJMP
ASAN_INTERCEPT_FUNC(siglongjmp); ASAN_INTERCEPT_FUNC(siglongjmp);
#endif #endif
#if ASAN_INTERCEPT_PRCTL
ASAN_INTERCEPT_FUNC(prctl); ASAN_INTERCEPT_FUNC(prctl);
#endif
// Intercept exception handling functions. // Intercept exception handling functions.
#if ASAN_INTERCEPT___CXA_THROW #if ASAN_INTERCEPT___CXA_THROW