1*67e74705SXin Li // Test sanitizer link flags on Darwin. 2*67e74705SXin Li 3*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ 4*67e74705SXin Li // RUN: -stdlib=platform -fsanitize=address %s -o %t.o 2>&1 \ 5*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-ASAN %s 6*67e74705SXin Li 7*67e74705SXin Li // CHECK-ASAN: "{{.*}}ld{{(.exe)?}}" 8*67e74705SXin Li // CHECK-ASAN-NOT: "-lstdc++" 9*67e74705SXin Li // CHECK-ASAN-NOT: "-lc++" 10*67e74705SXin Li // CHECK-ASAN: libclang_rt.asan_osx_dynamic.dylib" 11*67e74705SXin Li // CHECK-ASAN: "-rpath" "@executable_path" 12*67e74705SXin Li // CHECK-ASAN: "-rpath" "{{.*}}lib{{.*}}darwin" 13*67e74705SXin Li 14*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ 15*67e74705SXin Li // RUN: -fPIC -shared -fsanitize=address %s -o %t.so 2>&1 \ 16*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-DYN-ASAN %s 17*67e74705SXin Li 18*67e74705SXin Li // CHECK-DYN-ASAN: "{{.*}}ld{{(.exe)?}}" 19*67e74705SXin Li // CHECK-DYN-ASAN: "-dylib" 20*67e74705SXin Li // CHECK-DYN-ASAN: libclang_rt.asan_osx_dynamic.dylib" 21*67e74705SXin Li // CHECK-DYN-ASAN: "-rpath" "@executable_path" 22*67e74705SXin Li // CHECK-DYN-ASAN: "-rpath" "{{.*}}lib{{.*}}darwin" 23*67e74705SXin Li 24*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ 25*67e74705SXin Li // RUN: -stdlib=platform -fsanitize=undefined %s -o %t.o 2>&1 \ 26*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-UBSAN %s 27*67e74705SXin Li 28*67e74705SXin Li // CHECK-UBSAN: "{{.*}}ld{{(.exe)?}}" 29*67e74705SXin Li // CHECK-UBSAN-NOT: "-lstdc++" 30*67e74705SXin Li // CHECK-UBSAN-NOT: "-lc++" 31*67e74705SXin Li // CHECK-UBSAN: libclang_rt.ubsan_osx_dynamic.dylib" 32*67e74705SXin Li // CHECK-UBSAN: "-rpath" "@executable_path" 33*67e74705SXin Li // CHECK-UBSAN: "-rpath" "{{.*}}lib{{.*}}darwin" 34*67e74705SXin Li 35*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ 36*67e74705SXin Li // RUN: -fsanitize=bounds -fsanitize-undefined-trap-on-error \ 37*67e74705SXin Li // RUN: %s -o %t.o 2>&1 \ 38*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-BOUNDS %s 39*67e74705SXin Li 40*67e74705SXin Li // CHECK-BOUNDS: "{{.*}}ld{{(.exe)?}}" 41*67e74705SXin Li // CHECK-BOUNDS-NOT: libclang_rt.ubsan_osx.a" 42*67e74705SXin Li 43*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ 44*67e74705SXin Li // RUN: -fPIC -shared -fsanitize=undefined %s -o %t.so 2>&1 \ 45*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-DYN-UBSAN %s 46*67e74705SXin Li 47*67e74705SXin Li // CHECK-DYN-UBSAN: "{{.*}}ld{{(.exe)?}}" 48*67e74705SXin Li // CHECK-DYN-UBSAN: "-dylib" 49*67e74705SXin Li // CHECK-DYN-UBSAN: libclang_rt.ubsan_osx_dynamic.dylib" 50*67e74705SXin Li // CHECK-DYN-UBSAN: "-rpath" "@executable_path" 51*67e74705SXin Li // CHECK-DYN-UBSAN: "-rpath" "{{.*}}lib{{.*}}darwin" 52*67e74705SXin Li 53*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ 54*67e74705SXin Li // RUN: -fsanitize=bounds -fsanitize-undefined-trap-on-error \ 55*67e74705SXin Li // RUN: %s -o %t.so -fPIC -shared 2>&1 \ 56*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-DYN-BOUNDS %s 57*67e74705SXin Li 58*67e74705SXin Li // CHECK-DYN-BOUNDS: "{{.*}}ld{{(.exe)?}}" 59*67e74705SXin Li // CHECK-DYN-BOUNDS-NOT: ubsan_osx 60*67e74705SXin Li 61*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ 62*67e74705SXin Li // RUN: -stdlib=platform -fsanitize=address -mios-simulator-version-min=7.0 \ 63*67e74705SXin Li // RUN: %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-IOSSIM %s 64*67e74705SXin Li 65*67e74705SXin Li // CHECK-ASAN-IOSSIM: "{{.*}}ld{{(.exe)?}}" 66*67e74705SXin Li // CHECK-ASAN-IOSSIM-NOT: "-lstdc++" 67*67e74705SXin Li // CHECK-ASAN-IOSSIM-NOT: "-lc++" 68*67e74705SXin Li // CHECK-ASAN-IOSSIM: libclang_rt.asan_iossim_dynamic.dylib" 69*67e74705SXin Li // CHECK-ASAN-IOSSIM: "-rpath" "@executable_path" 70*67e74705SXin Li // CHECK-ASAN-IOSSIM: "-rpath" "{{.*}}lib{{.*}}darwin" 71*67e74705SXin Li 72*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ 73*67e74705SXin Li // RUN: -stdlib=platform -fsanitize=address \ 74*67e74705SXin Li // RUN: -mtvos-simulator-version-min=8.3.0 %s -o %t.o 2>&1 \ 75*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-ASAN-TVOSSIM %s 76*67e74705SXin Li 77*67e74705SXin Li // CHECK-ASAN-TVOSSIM: "{{.*}}ld{{(.exe)?}}" 78*67e74705SXin Li // CHECK-ASAN-TVOSSIM-NOT: "-lstdc++" 79*67e74705SXin Li // CHECK-ASAN-TVOSSIM-NOT: "-lc++" 80*67e74705SXin Li // CHECK-ASAN-TVOSSIM: libclang_rt.asan_tvossim_dynamic.dylib" 81*67e74705SXin Li // CHECK-ASAN-TVOSSIM: "-rpath" "@executable_path" 82*67e74705SXin Li // CHECK-ASAN-TVOSSIM: "-rpath" "{{.*}}lib{{.*}}darwin" 83*67e74705SXin Li 84*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ 85*67e74705SXin Li // RUN: -stdlib=platform -fsanitize=address \ 86*67e74705SXin Li // RUN: -mwatchos-simulator-version-min=2.0.0 %s -o %t.o 2>&1 \ 87*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-ASAN-WATCHOSSIM %s 88*67e74705SXin Li 89*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM: "{{.*}}ld{{(.exe)?}}" 90*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM-NOT: "-lstdc++" 91*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM-NOT: "-lc++" 92*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM: libclang_rt.asan_watchossim_dynamic.dylib" 93*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM: "-rpath" "@executable_path" 94*67e74705SXin Li // CHECK-ASAN-WATCHOSSIM: "-rpath" "{{.*}}lib{{.*}}darwin" 95*67e74705SXin Li 96*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target armv7-apple-ios \ 97*67e74705SXin Li // RUN: -stdlib=platform -fsanitize=address -miphoneos-version-min=7 \ 98*67e74705SXin Li // RUN: %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-IOS %s 99*67e74705SXin Li 100*67e74705SXin Li // CHECK-ASAN-IOS: "{{.*}}ld{{(.exe)?}}" 101*67e74705SXin Li // CHECK-ASAN-IOS-NOT: "-lstdc++" 102*67e74705SXin Li // CHECK-ASAN-IOS-NOT: "-lc++" 103*67e74705SXin Li // CHECK-ASAN-IOS: libclang_rt.asan_ios_dynamic.dylib" 104*67e74705SXin Li // CHECK-ASAN-IOS: "-rpath" "@executable_path" 105*67e74705SXin Li // CHECK-ASAN-IOS: "-rpath" "{{.*}}lib{{.*}}darwin" 106*67e74705SXin Li 107*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target arm64-apple-tvos \ 108*67e74705SXin Li // RUN: -stdlib=platform -fsanitize=address -mtvos-version-min=8.3 \ 109*67e74705SXin Li // RUN: %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-TVOS %s 110*67e74705SXin Li 111*67e74705SXin Li // CHECK-ASAN-TVOS: "{{.*}}ld{{(.exe)?}}" 112*67e74705SXin Li // CHECK-ASAN-TVOS-NOT: "-lstdc++" 113*67e74705SXin Li // CHECK-ASAN-TVOS-NOT: "-lc++" 114*67e74705SXin Li // CHECK-ASAN-TVOS: libclang_rt.asan_tvos_dynamic.dylib" 115*67e74705SXin Li // CHECK-ASAN-TVOS: "-rpath" "@executable_path" 116*67e74705SXin Li // CHECK-ASAN-TVOS: "-rpath" "{{.*}}lib{{.*}}darwin" 117*67e74705SXin Li 118*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -target armv7k-apple-watchos \ 119*67e74705SXin Li // RUN: -stdlib=platform -fsanitize=address -mwatchos-version-min=2.0 \ 120*67e74705SXin Li // RUN: %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-WATCHOS %s 121*67e74705SXin Li 122*67e74705SXin Li // CHECK-ASAN-WATCHOS: "{{.*}}ld{{(.exe)?}}" 123*67e74705SXin Li // CHECK-ASAN-WATCHOS-NOT: "-lstdc++" 124*67e74705SXin Li // CHECK-ASAN-WATCHOS-NOT: "-lc++" 125*67e74705SXin Li // CHECK-ASAN-WATCHOS: libclang_rt.asan_watchos_dynamic.dylib" 126*67e74705SXin Li // CHECK-ASAN-WATCHOS: "-rpath" "@executable_path" 127*67e74705SXin Li // CHECK-ASAN-WATCHOS: "-rpath" "{{.*}}lib{{.*}}darwin" 128