From 87a59e5652be8ffeccc627d12f3be85f982e3acd Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Thu, 6 Jun 2013 07:58:00 +0000 Subject: [PATCH] [ASan] make free_hook_realloc test more robust llvm-svn: 183387 --- .../lib/asan/lit_tests/free_hook_realloc.cc | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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; } -- GitLab