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