1 // RUN: %clangxx_asan -O2 %s -o %t 2 // RUN: %t 2>&1 | FileCheck %s 3 #include <stdlib.h> 4 #include <unistd.h> 5 6 extern "C" { 7 // Note: avoid calling functions that allocate memory in malloc/free 8 // to avoid infinite recursion. 9 void __asan_malloc_hook(void *ptr, size_t sz) { 10 write(1, "MallocHook\n", sizeof("MallocHook\n")); 11 } 12 void __asan_free_hook(void *ptr) { 13 write(1, "FreeHook\n", sizeof("FreeHook\n")); 14 } 15 } // extern "C" 16 17 int main() { 18 volatile int *x = new int; 19 // CHECK: MallocHook 20 *x = 0; 21 delete x; 22 // CHECK: FreeHook 23 return 0; 24 } 25