151d8f598SEmily Shi // Checks that module map does not print at 0, prints once after aborting with 1, 251d8f598SEmily Shi // and prints once before and after aborting with 2 351d8f598SEmily Shi 451d8f598SEmily Shi // mac header is "Process module map" 551d8f598SEmily Shi // other posix header is "Process memory map follows" 651d8f598SEmily Shi // windows header is "Dumping process modules" (ignored here) 751d8f598SEmily Shi // we should consider unifying the message cross platform 851d8f598SEmily Shi 951d8f598SEmily Shi // RUN: %clangxx -DUSING_%tool_name %s -o %t -w 1051d8f598SEmily Shi 11*56ed64dfSVitaly Buka // RUN: %env_tool_opts="print_module_map=0:halt_on_error=1" not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-MM0 12*56ed64dfSVitaly Buka // RUN: %env_tool_opts="print_module_map=1:halt_on_error=1" not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-MM1 13*56ed64dfSVitaly Buka // RUN: %env_tool_opts="print_module_map=2:halt_on_error=1" not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-MM2 1451d8f598SEmily Shi 1551d8f598SEmily Shi // tsan support pending rdar://67747473 1651d8f598SEmily Shi // XFAIL: tsan 1751d8f598SEmily Shi 1851d8f598SEmily Shi // FIXME: Add linux support. 1951d8f598SEmily Shi // XFAIL: msan && linux 2051d8f598SEmily Shi 2151d8f598SEmily Shi // FIXME: Add lsan support. 2251d8f598SEmily Shi // XFAIL: lsan 2351d8f598SEmily Shi 2451d8f598SEmily Shi int global; 2551d8f598SEmily Shi main()2651d8f598SEmily Shiint main() { 2751d8f598SEmily Shi #if defined(USING_ubsan) 2851d8f598SEmily Shi int value = 5; 2951d8f598SEmily Shi int computation = value / 0; // Division by zero. 3051d8f598SEmily Shi #else 3151d8f598SEmily Shi volatile int *a = new int[100]; 3251d8f598SEmily Shi delete[] a; 3351d8f598SEmily Shi global = a[0]; // use-after-free: triggers ASan/TSan report. 3451d8f598SEmily Shi #endif 3551d8f598SEmily Shi return 0; 3651d8f598SEmily Shi } 3751d8f598SEmily Shi 38*56ed64dfSVitaly Buka // CHECK-NOT: {{Process .*map}} 3951d8f598SEmily Shi // CHECK: SUMMARY: 4051d8f598SEmily Shi // CHECK-MM0-NOT: {{Process .*map}} 41*56ed64dfSVitaly Buka 42*56ed64dfSVitaly Buka // CHECK-MM1: {{Process (module|memory) map}} 4351d8f598SEmily Shi // CHECK-MM1-NOT: {{Process .*map}} 44*56ed64dfSVitaly Buka 4551d8f598SEmily Shi // CHECK-MM2: {{Process (module|memory) map}} 46*56ed64dfSVitaly Buka // CHECK-MM2: {{Process (module|memory) map}} 47*56ed64dfSVitaly Buka // CHECK-MM2-NOT: {{Process .*map}} 48