1*673dc3d4SNico Weber // Tests heap_profile=1. 2*673dc3d4SNico Weber // Printing memory profiling only works in the configuration where we can 3*673dc3d4SNico Weber // detect leaks. 4*673dc3d4SNico Weber // REQUIRES: leak-detection 5*673dc3d4SNico Weber // 6*673dc3d4SNico Weber // RUN: %clangxx_asan %s -o %t 7*673dc3d4SNico Weber // RUN: %env_asan_opts=heap_profile=1 %run %t 2>&1 | FileCheck %s 8*673dc3d4SNico Weber #include <sanitizer/common_interface_defs.h> 9*673dc3d4SNico Weber 10*673dc3d4SNico Weber #include <stdio.h> 11*673dc3d4SNico Weber #include <string.h> 12*673dc3d4SNico Weber #include <unistd.h> 13*673dc3d4SNico Weber 14*673dc3d4SNico Weber char *sink[1000]; 15*673dc3d4SNico Weber main()16*673dc3d4SNico Weberint main() { 17*673dc3d4SNico Weber 18*673dc3d4SNico Weber for (int i = 0; i < 3; i++) { 19*673dc3d4SNico Weber const size_t kSize = 13000000; 20*673dc3d4SNico Weber char *x = new char[kSize]; 21*673dc3d4SNico Weber memset(x, 0, kSize); 22*673dc3d4SNico Weber sink[i] = x; 23*673dc3d4SNico Weber sleep(1); 24*673dc3d4SNico Weber } 25*673dc3d4SNico Weber } 26*673dc3d4SNico Weber 27*673dc3d4SNico Weber // CHECK: HEAP PROFILE at RSS 28*673dc3d4SNico Weber // CHECK: 13000000 byte(s) 29*673dc3d4SNico Weber // CHECK: HEAP PROFILE at RSS 30*673dc3d4SNico Weber // CHECK: 26000000 byte(s) 31*673dc3d4SNico Weber // CHECK: HEAP PROFILE at RSS 32*673dc3d4SNico Weber // CHECK: 39000000 byte(s) 33