1*673dc3d4SNico Weber // Make sure ASan removes the runtime library from DYLD_INSERT_LIBRARIES before 2*673dc3d4SNico Weber // executing other programs. 3*673dc3d4SNico Weber 4*673dc3d4SNico Weber // RUN: %clangxx_asan %s -o %t 5*673dc3d4SNico Weber // RUN: %clangxx %p/../Helpers/echo-env.cpp -o %t-echo-env 6*673dc3d4SNico Weber // RUN: %clangxx -DSHARED_LIB %s \ 7*673dc3d4SNico Weber // RUN: -dynamiclib -o %t-darwin-dummy-shared-lib-so.dylib 8*673dc3d4SNico Weber 9*673dc3d4SNico Weber // Make sure DYLD_INSERT_LIBRARIES doesn't contain the runtime library before 10*673dc3d4SNico Weber // execl(). 11*673dc3d4SNico Weber 12*673dc3d4SNico Weber // RUN: %run %t %t-echo-env >/dev/null 2>&1 13*673dc3d4SNico Weber // RUN: %env DYLD_INSERT_LIBRARIES=%t-darwin-dummy-shared-lib-so.dylib \ 14*673dc3d4SNico Weber // RUN: %run %t %t-echo-env 2>&1 | FileCheck %s || exit 1 15*673dc3d4SNico Weber 16*673dc3d4SNico Weber // UNSUPPORTED: ios 17*673dc3d4SNico Weber 18*673dc3d4SNico Weber #if !defined(SHARED_LIB) 19*673dc3d4SNico Weber #include <unistd.h> main(int argc,char * argv[])20*673dc3d4SNico Weberint main(int argc, char *argv[]) { 21*673dc3d4SNico Weber execl(argv[1], argv[1], "DYLD_INSERT_LIBRARIES", NULL); 22*673dc3d4SNico Weber // CHECK: {{DYLD_INSERT_LIBRARIES = .*darwin-dummy-shared-lib-so.dylib.*}} 23*673dc3d4SNico Weber return 0; 24*673dc3d4SNico Weber } 25*673dc3d4SNico Weber #else // SHARED_LIB foo()26*673dc3d4SNico Webervoid foo() {} 27*673dc3d4SNico Weber #endif // SHARED_LIB 28