From c1856835d13e938c838bc66851db0351a6db4b66 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Mon, 7 Jul 2014 18:47:29 +0000 Subject: [PATCH] [Sanitizer] Move test for malloc/free hooks under test/sanitizer_common llvm-svn: 212474 --- compiler-rt/test/msan/malloc_hook.cc | 36 --------------- .../TestCases/malloc_hook.cc | 7 ++- compiler-rt/test/tsan/malloc_hook.cc | 53 ---------------------- 3 files changed, 3 insertions(+), 93 deletions(-) delete mode 100644 compiler-rt/test/msan/malloc_hook.cc rename compiler-rt/test/{asan => sanitizer_common}/TestCases/malloc_hook.cc (84%) delete mode 100644 compiler-rt/test/tsan/malloc_hook.cc diff --git a/compiler-rt/test/msan/malloc_hook.cc b/compiler-rt/test/msan/malloc_hook.cc deleted file mode 100644 index f81955a..0000000 --- a/compiler-rt/test/msan/malloc_hook.cc +++ /dev/null @@ -1,36 +0,0 @@ -// RUN: %clangxx_msan -O2 %s -o %t -// RUN: %run %t 2>&1 | FileCheck %s -#include -#include -#include - -extern "C" { - -const volatile void *global_ptr; - -// Note: avoid calling functions that allocate memory in malloc/free -// to avoid infinite recursion. -void __sanitizer_malloc_hook(const volatile void *ptr, size_t sz) { - if (__sanitizer_get_ownership(ptr)) { - write(1, "MallocHook\n", sizeof("MallocHook\n")); - global_ptr = ptr; - } -} -void __sanitizer_free_hook(const volatile void *ptr) { - if (__sanitizer_get_ownership(ptr) && ptr == global_ptr) - write(1, "FreeHook\n", sizeof("FreeHook\n")); -} -} // extern "C" - -int main() { - volatile int *x = new int; - // CHECK: MallocHook - // Check that malloc hook was called with correct argument. - if (global_ptr != (void*)x) { - _exit(1); - } - *x = 0; - delete x; - // CHECK: FreeHook - return 0; -} diff --git a/compiler-rt/test/asan/TestCases/malloc_hook.cc b/compiler-rt/test/sanitizer_common/TestCases/malloc_hook.cc similarity index 84% rename from compiler-rt/test/asan/TestCases/malloc_hook.cc rename to compiler-rt/test/sanitizer_common/TestCases/malloc_hook.cc index af51e8b..686e098 100644 --- a/compiler-rt/test/asan/TestCases/malloc_hook.cc +++ b/compiler-rt/test/sanitizer_common/TestCases/malloc_hook.cc @@ -1,8 +1,7 @@ -// RUN: %clangxx_asan -O2 %s -o %t -// RUN: %run %t 2>&1 | FileCheck %s +// RUN: %clangxx -O2 %s -o %t && %run %t 2>&1 | FileCheck %s -// Malloc/free hooks are not supported on Windows. -// XFAIL: win32 +// Malloc/free hooks are not supported on Windows and doesn't work in LSan. +// XFAIL: win32, lsan #include #include diff --git a/compiler-rt/test/tsan/malloc_hook.cc b/compiler-rt/test/tsan/malloc_hook.cc deleted file mode 100644 index af4fb84..0000000 --- a/compiler-rt/test/tsan/malloc_hook.cc +++ /dev/null @@ -1,53 +0,0 @@ -// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s -#include -#include -#include -#include -#include -#include - -static int malloc_count; -static int free_count; - -extern "C" { -void __sanitizer_malloc_hook(const volatile void *ptr, size_t size) { - (void)ptr; - (void)size; - __sync_fetch_and_add(&malloc_count, 1); -} - -void __sanitizer_free_hook(const volatile void *ptr) { - (void)ptr; - __sync_fetch_and_add(&free_count, 1); -} -} - -void *Thread1(void *x) { - ((int*)x)[0]++; - return 0; -} - -void *Thread2(void *x) { - sleep(1); - ((int*)x)[0]++; - return 0; -} - -int main() { - int *x = new int; - pthread_t t[2]; - pthread_create(&t[0], 0, Thread1, x); - pthread_create(&t[1], 0, Thread2, x); - pthread_join(t[0], 0); - pthread_join(t[1], 0); - delete x; - if (malloc_count == 0 || free_count == 0) { - fprintf(stderr, "FAILED %d %d\n", malloc_count, free_count); - exit(1); - } - fprintf(stderr, "DONE\n"); -} - -// CHECK: WARNING: ThreadSanitizer: data race -// CHECK-NOT: FAILED -// CHECK: DONE -- 2.7.4