1*7c3d14c8STreehugger Robot // In a non-forking sandbox, we fallback to dladdr(). Test that we provide 2*7c3d14c8STreehugger Robot // properly demangled C++ names in that case. 3*7c3d14c8STreehugger Robot 4*7c3d14c8STreehugger Robot // RUN: %clangxx_asan -O0 %s -o %t 5*7c3d14c8STreehugger Robot // RUN: not %run %t 2>&1 | FileCheck %s 6*7c3d14c8STreehugger Robot // RUN: %env_asan_opts=verbosity=2 not %run sandbox-exec -p '(version 1)(allow default)(deny process-fork)' %t 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-DLADDR 7*7c3d14c8STreehugger Robot 8*7c3d14c8STreehugger Robot #include <stdlib.h> 9*7c3d14c8STreehugger Robot 10*7c3d14c8STreehugger Robot class MyClass { 11*7c3d14c8STreehugger Robot public: my_function(int n)12*7c3d14c8STreehugger Robot int my_function(int n) { 13*7c3d14c8STreehugger Robot char *x = (char*)malloc(n * sizeof(char)); 14*7c3d14c8STreehugger Robot free(x); 15*7c3d14c8STreehugger Robot return x[5]; 16*7c3d14c8STreehugger Robot // CHECK-DLADDR: Using dladdr symbolizer 17*7c3d14c8STreehugger Robot // CHECK: {{.*ERROR: AddressSanitizer: heap-use-after-free on address}} 18*7c3d14c8STreehugger Robot // CHECK: {{READ of size 1 at 0x.* thread T0}} 19*7c3d14c8STreehugger Robot // CHECK-DLADDR: failed to fork 20*7c3d14c8STreehugger Robot // CHECK: {{ #0 0x.* in MyClass::my_function\(int\)}} 21*7c3d14c8STreehugger Robot // CHECK: {{freed by thread T0 here:}} 22*7c3d14c8STreehugger Robot // CHECK: {{ #0 0x.* in wrap_free}} 23*7c3d14c8STreehugger Robot // CHECK: {{ #1 0x.* in MyClass::my_function\(int\)}} 24*7c3d14c8STreehugger Robot // CHECK: {{previously allocated by thread T0 here:}} 25*7c3d14c8STreehugger Robot // CHECK: {{ #0 0x.* in wrap_malloc}} 26*7c3d14c8STreehugger Robot // CHECK: {{ #1 0x.* in MyClass::my_function\(int\)}} 27*7c3d14c8STreehugger Robot } 28*7c3d14c8STreehugger Robot }; 29*7c3d14c8STreehugger Robot main()30*7c3d14c8STreehugger Robotint main() { 31*7c3d14c8STreehugger Robot MyClass o; 32*7c3d14c8STreehugger Robot return o.my_function(10); 33*7c3d14c8STreehugger Robot } 34