Clang Project

clang_source_code/test/Driver/darwin-sanitizer-ld.c
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