diff --git a/compiler-rt/lib/asan/lit_tests/free_hook_realloc.cc b/compiler-rt/lib/asan/lit_tests/free_hook_realloc.cc index 5f678e6dc01f..92f5acd6dc8c 100644 --- a/compiler-rt/lib/asan/lit_tests/free_hook_realloc.cc +++ b/compiler-rt/lib/asan/lit_tests/free_hook_realloc.cc @@ -1,18 +1,31 @@ // Check that free hook doesn't conflict with Realloc. -// RUN: %clangxx_asan -O2 %s -o %t && %t -#include +// RUN: %clangxx_asan -O2 %s -o %t +// RUN: %t 2>&1 | FileCheck %s #include +#include + +static void *glob_ptr; extern "C" { void __asan_free_hook(void *ptr) { - *(int*)ptr = 0; + if (ptr == glob_ptr) { + *(int*)ptr = 0; + write(1, "FreeHook\n", sizeof("FreeHook\n")); + } } } int main() { int *x = (int*)malloc(100); x[0] = 42; + glob_ptr = x; int *y = (int*)realloc(x, 200); - assert(y[0] == 42); + // Verify that free hook was called and didn't spoil the memory. + if (y[0] != 42) { + _exit(1); + } + write(1, "Passed\n", sizeof("Passed\n")); + // CHECK: FreeHook + // CHECK: Passed return 0; }