]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Driver/sanitizer-ld.c
Vendor import of clang trunk r338150:
[FreeBSD/FreeBSD.git] / test / Driver / sanitizer-ld.c
1 // Test sanitizers ld flags.
2
3 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
4 // RUN:     -target i386-unknown-linux -fuse-ld=ld -fsanitize=address \
5 // RUN:     -resource-dir=%S/Inputs/resource_dir \
6 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
7 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX %s
8 //
9 // CHECK-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
10 // CHECK-ASAN-LINUX-NOT: "-lc"
11 // CHECK-ASAN-LINUX: libclang_rt.asan-i386.a"
12 // CHECK-ASAN-LINUX-NOT: "--export-dynamic"
13 // CHECK-ASAN-LINUX: "--dynamic-list={{.*}}libclang_rt.asan-i386.a.syms"
14 // CHECK-ASAN-LINUX-NOT: "--export-dynamic"
15 // CHECK-ASAN-LINUX: "-lpthread"
16 // CHECK-ASAN-LINUX: "-lrt"
17 // CHECK-ASAN-LINUX: "-ldl"
18
19 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
20 // RUN:     -target i386-unknown-linux -fuse-ld=ld -fsanitize=address -shared-libsan \
21 // RUN:     -resource-dir=%S/Inputs/resource_dir \
22 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
23 // RUN:   | FileCheck --check-prefix=CHECK-SHARED-ASAN-LINUX %s
24
25 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
26 // RUN:     -target i386-unknown-linux -fuse-ld=ld -fsanitize=address -shared-libasan \
27 // RUN:     -resource-dir=%S/Inputs/resource_dir \
28 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
29 // RUN:   | FileCheck --check-prefix=CHECK-SHARED-ASAN-LINUX %s
30
31 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
32 // RUN:     -target i386-unknown-linux -fuse-ld=ld -fsanitize=address \
33 // RUN:     -shared-libsan -static-libsan -shared-libasan             \
34 // RUN:     -resource-dir=%S/Inputs/resource_dir \
35 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
36 // RUN:   | FileCheck --check-prefix=CHECK-SHARED-ASAN-LINUX %s
37 //
38 // CHECK-SHARED-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
39 // CHECK-SHARED-ASAN-LINUX-NOT: "-lc"
40 // CHECK-SHARED-ASAN-LINUX-NOT: libclang_rt.asan-i386.a"
41 // CHECK-SHARED-ASAN-LINUX: libclang_rt.asan-i386.so"
42 // CHECK-SHARED-ASAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan-preinit-i386.a" "--no-whole-archive"
43 // CHECK-SHARED-ASAN-LINUX-NOT: "-lpthread"
44 // CHECK-SHARED-ASAN-LINUX-NOT: "-lrt"
45 // CHECK-SHARED-ASAN-LINUX-NOT: "-ldl"
46 // CHECK-SHARED-ASAN-LINUX-NOT: "--export-dynamic"
47 // CHECK-SHARED-ASAN-LINUX-NOT: "--dynamic-list"
48
49 // RUN: %clang -no-canonical-prefixes %s -### -o %t.so -shared 2>&1 \
50 // RUN:     -target i386-unknown-linux -fuse-ld=ld -fsanitize=address -shared-libsan \
51 // RUN:     -resource-dir=%S/Inputs/resource_dir \
52 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
53 // RUN:   | FileCheck --check-prefix=CHECK-DSO-SHARED-ASAN-LINUX %s
54 //
55 // CHECK-DSO-SHARED-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
56 // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lc"
57 // CHECK-DSO-SHARED-ASAN-LINUX-NOT: libclang_rt.asan-i386.a"
58 // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "libclang_rt.asan-preinit-i386.a"
59 // CHECK-DSO-SHARED-ASAN-LINUX: libclang_rt.asan-i386.so"
60 // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lpthread"
61 // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lrt"
62 // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-ldl"
63 // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "--export-dynamic"
64 // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "--dynamic-list"
65
66 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
67 // RUN:     -target i386-unknown-freebsd -fuse-ld=ld -fsanitize=address \
68 // RUN:     -resource-dir=%S/Inputs/resource_dir \
69 // RUN:     --sysroot=%S/Inputs/basic_freebsd_tree \
70 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-FREEBSD %s
71 //
72 // CHECK-ASAN-FREEBSD: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
73 // CHECK-ASAN-FREEBSD-NOT: "-lc"
74 // CHECK-ASAN-FREEBSD-NOT: libclang_rt.asan_cxx
75 // CHECK-ASAN-FREEBSD: freebsd{{/|\\+}}libclang_rt.asan-i386.a"
76 // CHECK-ASAN-FREEBSD-NOT: libclang_rt.asan_cxx
77 // CHECK-ASAN-FREEBSD-NOT: "--dynamic-list"
78 // CHECK-ASAN-FREEBSD: "--export-dynamic"
79 // CHECK-ASAN-FREEBSD: "-lpthread"
80 // CHECK-ASAN-FREEBSD: "-lrt"
81
82 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
83 // RUN:     -target i386-unknown-freebsd -fuse-ld=ld -fsanitize=address \
84 // RUN:     -resource-dir=%S/Inputs/resource_dir \
85 // RUN:     --sysroot=%S/Inputs/basic_freebsd_tree \
86 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-FREEBSD-LDL %s
87 //
88 // CHECK-ASAN-FREEBSD-LDL: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
89 // CHECK-ASAN-FREEBSD-LDL-NOT: "-ldl"
90
91 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
92 // RUN:     -target i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \
93 // RUN:     -resource-dir=%S/Inputs/empty_resource_dir \
94 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
95 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s
96 //
97 // CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
98 // CHECK-ASAN-LINUX-CXX-NOT: "-lc"
99 // CHECK-ASAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.asan-i386.a" "--no-whole-archive"
100 // CHECK-ASAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.asan_cxx-i386.a" "--no-whole-archive"
101 // CHECK-ASAN-LINUX-CXX-NOT: "--dynamic-list"
102 // CHECK-ASAN-LINUX-CXX: "--export-dynamic"
103 // CHECK-ASAN-LINUX-CXX: stdc++
104 // CHECK-ASAN-LINUX-CXX: "-lpthread"
105 // CHECK-ASAN-LINUX-CXX: "-lrt"
106 // CHECK-ASAN-LINUX-CXX: "-ldl"
107
108 // RUN: %clang -no-canonical-prefixes %s -### -o /dev/null -fsanitize=address \
109 // RUN:     -target i386-unknown-linux -fuse-ld=ld -stdlib=platform \
110 // RUN:     --sysroot=%S/Inputs/basic_linux_tree -lstdc++ -static 2>&1 \
111 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX-STATIC %s
112 //
113 // CHECK-ASAN-LINUX-CXX-STATIC: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
114 // CHECK-ASAN-LINUX-CXX-STATIC-NOT: stdc++
115 // CHECK-ASAN-LINUX-CXX-STATIC: "--whole-archive" "{{.*}}libclang_rt.asan-i386.a" "--no-whole-archive"
116 // CHECK-ASAN-LINUX-CXX-STATIC: stdc++
117
118 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
119 // RUN:     -target arm-linux-gnueabi -fuse-ld=ld -fsanitize=address \
120 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
121 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ARM %s
122 //
123 // CHECK-ASAN-ARM: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
124 // CHECK-ASAN-ARM-NOT: "-lc"
125 // CHECK-ASAN-ARM: libclang_rt.asan-arm.a"
126 //
127 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
128 // RUN:     -target armv7l-linux-gnueabi -fuse-ld=ld -fsanitize=address \
129 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
130 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ARMv7 %s
131 //
132 // CHECK-ASAN-ARMv7: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
133 // CHECK-ASAN-ARMv7-NOT: "-lc"
134 // CHECK-ASAN-ARMv7: libclang_rt.asan-arm.a"
135
136 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
137 // RUN:     -target arm-linux-androideabi -fuse-ld=ld -fsanitize=address \
138 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
139 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID %s
140 //
141 // CHECK-ASAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
142 // CHECK-ASAN-ANDROID-NOT: "-lc"
143 // CHECK-ASAN-ANDROID-NOT: "-pie"
144 // CHECK-ASAN-ANDROID-NOT: "-lpthread"
145 // CHECK-ASAN-ANDROID: libclang_rt.asan-arm-android.so"
146 // CHECK-ASAN-ANDROID-NOT: "-lpthread"
147
148 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
149 // RUN:     -target arm-linux-androideabi -fuse-ld=ld -fsanitize=address \
150 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
151 // RUN:     -static-libsan \
152 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID-STATICLIBASAN %s
153 //
154 // CHECK-ASAN-ANDROID-STATICLIBASAN: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
155 // CHECK-ASAN-ANDROID-STATICLIBASAN: libclang_rt.asan-arm-android.a"
156 // CHECK-ASAN-ANDROID-STATICLIBASAN-NOT: "-lpthread"
157 // CHECK-ASAN-ANDROID-STATICLIBASAN-NOT: "-lrt"
158
159 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
160 // RUN:     -target arm-linux-androideabi -fuse-ld=ld -fsanitize=undefined \
161 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
162 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-ANDROID %s
163 //
164 // CHECK-UBSAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
165 // CHECK-UBSAN-ANDROID-NOT: "-lc"
166 // CHECK-UBSAN-ANDROID-NOT: "-pie"
167 // CHECK-UBSAN-ANDROID-NOT: "-lpthread"
168 // CHECK-UBSAN-ANDROID: libclang_rt.ubsan_standalone-arm-android.so"
169 // CHECK-UBSAN-ANDROID-NOT: "-lpthread"
170
171 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
172 // RUN:     -target arm-linux-androideabi -fuse-ld=ld -fsanitize=undefined \
173 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
174 // RUN:     -static-libsan \
175 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-ANDROID-STATICLIBASAN %s
176 //
177 // CHECK-UBSAN-ANDROID-STATICLIBASAN: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
178 // CHECK-UBSAN-ANDROID-STATICLIBASAN: libclang_rt.ubsan_standalone-arm-android.a"
179 // CHECK-UBSAN-ANDROID-STATICLIBASAN-NOT: "-lpthread"
180 // CHECK-UBSAN-ANDROID-STATICLIBASAN-NOT: "-lrt"
181
182 //
183 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
184 // RUN:     -target i686-linux-android -fuse-ld=ld -fsanitize=address \
185 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
186 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID-X86 %s
187 //
188 // CHECK-ASAN-ANDROID-X86: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
189 // CHECK-ASAN-ANDROID-X86-NOT: "-lc"
190 // CHECK-ASAN-ANDROID-X86-NOT: "-pie"
191 // CHECK-ASAN-ANDROID-X86-NOT: "-lpthread"
192 // CHECK-ASAN-ANDROID-X86: libclang_rt.asan-i686-android.so"
193 // CHECK-ASAN-ANDROID-X86-NOT: "-lpthread"
194 //
195 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
196 // RUN:     -target arm-linux-androideabi -fsanitize=address \
197 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
198 // RUN:     -shared-libsan \
199 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED-LIBASAN %s
200 //
201 // CHECK-ASAN-ANDROID-SHARED-LIBASAN-NOT: argument unused during compilation: '-shared-libsan'
202 //
203 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
204 // RUN:     -target arm-linux-androideabi -fuse-ld=ld -fsanitize=address \
205 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
206 // RUN:     -shared \
207 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED %s
208 //
209 // CHECK-ASAN-ANDROID-SHARED: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
210 // CHECK-ASAN-ANDROID-SHARED-NOT: "-lc"
211 // CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan-arm-android.so"
212 // CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread"
213
214 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
215 // RUN:     -target sparcel-myriad-rtems-elf -fuse-ld=ld -fsanitize=address \
216 // RUN:     --sysroot=%S/Inputs/basic_myriad_tree \
217 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-MYRIAD %s
218 //
219 // CHECK-ASAN-MYRIAD: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
220 // CHECK-ASAN-MYRIAD-NOT: "-lc"
221 // CHECK-ASAN-MYRIAD: libclang_rt.asan-sparcel.a"
222
223 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
224 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld -stdlib=platform -lstdc++ \
225 // RUN:     -fsanitize=thread \
226 // RUN:     -resource-dir=%S/Inputs/resource_dir \
227 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
228 // RUN:   | FileCheck --check-prefix=CHECK-TSAN-LINUX-CXX %s
229 //
230 // CHECK-TSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
231 // CHECK-TSAN-LINUX-CXX-NOT: stdc++
232 // CHECK-TSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.tsan-x86_64.a" "--no-whole-archive"
233 // CHECK-TSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.tsan-x86_64.a.syms"
234 // CHECK-TSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.tsan_cxx-x86_64.a" "--no-whole-archive"
235 // CHECK-TSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.tsan_cxx-x86_64.a.syms"
236 // CHECK-TSAN-LINUX-CXX-NOT: "--export-dynamic"
237 // CHECK-TSAN-LINUX-CXX: stdc++
238 // CHECK-TSAN-LINUX-CXX: "-lpthread"
239 // CHECK-TSAN-LINUX-CXX: "-lrt"
240 // CHECK-TSAN-LINUX-CXX: "-ldl"
241
242 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
243 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld -stdlib=platform -lstdc++ \
244 // RUN:     -fsanitize=memory \
245 // RUN:     -resource-dir=%S/Inputs/resource_dir \
246 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
247 // RUN:   | FileCheck --check-prefix=CHECK-MSAN-LINUX-CXX %s
248 //
249 // CHECK-MSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
250 // CHECK-MSAN-LINUX-CXX-NOT: stdc++
251 // CHECK-MSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.msan-x86_64.a" "--no-whole-archive"
252 // CHECK-MSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.msan-x86_64.a.syms"
253 // CHECK-MSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.msan_cxx-x86_64.a" "--no-whole-archive"
254 // CHECK-MSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.msan_cxx-x86_64.a.syms"
255 // CHECK-MSAN-LINUX-CXX-NOT: "--export-dynamic"
256 // CHECK-MSAN-LINUX-CXX: stdc++
257 // CHECK-MSAN-LINUX-CXX: "-lpthread"
258 // CHECK-MSAN-LINUX-CXX: "-lrt"
259 // CHECK-MSAN-LINUX-CXX: "-ldl"
260
261 // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
262 // RUN:     -target i386-unknown-linux -fuse-ld=ld \
263 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
264 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s
265
266 // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
267 // RUN:     -target i386-unknown-linux -fuse-ld=ld \
268 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
269 // RUN:     -static-libsan \
270 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s
271
272 // CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
273 // CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
274 // CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_standalone_cxx
275 // CHECK-UBSAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone-i386.a" "--no-whole-archive"
276 // CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
277 // CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_standalone_cxx
278 // CHECK-UBSAN-LINUX-NOT: "-lstdc++"
279 // CHECK-UBSAN-LINUX: "-lpthread"
280
281 // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
282 // RUN:     -target i386-unknown-linux -fuse-ld=ld \
283 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
284 // RUN:     -shared-libsan \
285 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHAREDLIBASAN %s
286
287 // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
288 // RUN:     -target i386-unknown-linux -fuse-ld=ld \
289 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
290 // RUN:     -static-libsan -shared-libsan \
291 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHAREDLIBASAN %s
292
293 // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
294 // RUN:     -target i386-unknown-linux -fuse-ld=ld \
295 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
296 // RUN:     -shared -shared-libsan \
297 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHAREDLIBASAN %s
298
299 // CHECK-UBSAN-LINUX-SHAREDLIBASAN: "{{.*}}ld{{(.exe)?}}"
300 // CHECK-UBSAN-LINUX-SHAREDLIBASAN: "{{.*}}libclang_rt.ubsan_standalone-i386.so{{.*}}"
301
302 // RUN: %clang -fsanitize=undefined -fsanitize-link-c++-runtime %s -### -o %t.o 2>&1 \
303 // RUN:     -target i386-unknown-linux \
304 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
305 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-LINK-CXX %s
306 // CHECK-UBSAN-LINUX-LINK-CXX-NOT: "-lstdc++"
307 // CHECK-UBSAN-LINUX-LINK-CXX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone_cxx-i386.a" "--no-whole-archive"
308 // CHECK-UBSAN-LINUX-LINK-CXX-NOT: "-lstdc++"
309
310 // RUN: %clangxx -fsanitize=undefined %s -### -o %t.o 2>&1 \
311 // RUN:     -target i386-unknown-linux -fuse-ld=ld -stdlib=platform \
312 // RUN:     -resource-dir=%S/Inputs/resource_dir \
313 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
314 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-CXX %s
315 // CHECK-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
316 // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
317 // CHECK-UBSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone-i386.a" "--no-whole-archive"
318 // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
319 // CHECK-UBSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone_cxx-i386.a" "--no-whole-archive"
320 // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
321 // CHECK-UBSAN-LINUX-CXX: "-lstdc++"
322 // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
323 // CHECK-UBSAN-LINUX-CXX: "-lpthread"
324
325 // RUN: %clang -fsanitize=undefined -fsanitize-minimal-runtime %s -### -o %t.o 2>&1 \
326 // RUN:     -target i386-unknown-linux -fuse-ld=ld \
327 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
328 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-MINIMAL-LINUX %s
329 // CHECK-UBSAN-MINIMAL-LINUX: "{{.*}}ld{{(.exe)?}}"
330 // CHECK-UBSAN-MINIMAL-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_minimal-i386.a" "--no-whole-archive"
331 // CHECK-UBSAN-MINIMAL-LINUX: "-lpthread"
332
333 // RUN: %clang -fsanitize=undefined -fsanitize-minimal-runtime %s -### -o %t.o 2>&1 \
334 // RUN:     -target x86_64-apple-darwin -fuse-ld=ld \
335 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
336 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-MINIMAL-DARWIN %s
337 // CHECK-UBSAN-MINIMAL-DARWIN: "{{.*}}ld{{(.exe)?}}"
338 // CHECK-UBSAN-MINIMAL-DARWIN: "{{.*}}libclang_rt.ubsan_minimal_osx_dynamic.dylib"
339
340 // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
341 // RUN:     -target x86_64-apple-darwin -fuse-ld=ld -static-libsan \
342 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
343 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-STATIC-DARWIN %s
344 // CHECK-UBSAN-STATIC-DARWIN: "{{.*}}ld{{(.exe)?}}"
345 // CHECK-UBSAN-STATIC-DARWIN: "{{.*}}libclang_rt.ubsan_osx.a"
346
347 // RUN: %clang -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
348 // RUN:     -target i386-unknown-linux -fuse-ld=ld \
349 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
350 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX %s
351 // CHECK-ASAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
352 // CHECK-ASAN-UBSAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan-i386.a" "--no-whole-archive"
353 // CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.ubsan
354 // CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++"
355 // CHECK-ASAN-UBSAN-LINUX: "-lpthread"
356
357 // RUN: %clangxx -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
358 // RUN:     -target i386-unknown-linux -fuse-ld=ld -stdlib=platform \
359 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
360 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX-CXX %s
361 // CHECK-ASAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
362 // CHECK-ASAN-UBSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.asan-i386.a" "--no-whole-archive"
363 // CHECK-ASAN-UBSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.asan_cxx-i386.a" "--no-whole-archive"
364 // CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.ubsan
365 // CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++"
366 // CHECK-ASAN-UBSAN-LINUX-CXX: "-lpthread"
367
368 // RUN: %clangxx -fsanitize=memory,undefined %s -### -o %t.o 2>&1 \
369 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
370 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
371 // RUN:   | FileCheck --check-prefix=CHECK-MSAN-UBSAN-LINUX-CXX %s
372 // CHECK-MSAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
373 // CHECK-MSAN-UBSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.msan-x86_64.a" "--no-whole-archive"
374 // CHECK-MSAN-UBSAN-LINUX-CXX-NOT: libclang_rt.ubsan
375
376 // RUN: %clangxx -fsanitize=thread,undefined %s -### -o %t.o 2>&1 \
377 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
378 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
379 // RUN:   | FileCheck --check-prefix=CHECK-TSAN-UBSAN-LINUX-CXX %s
380 // CHECK-TSAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
381 // CHECK-TSAN-UBSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.tsan-x86_64.a" "--no-whole-archive"
382 // CHECK-TSAN-UBSAN-LINUX-CXX-NOT: libclang_rt.ubsan
383
384 // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
385 // RUN:     -target i386-unknown-linux -fuse-ld=ld \
386 // RUN:     -resource-dir=%S/Inputs/resource_dir \
387 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
388 // RUN:     -shared \
389 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHARED %s
390 // CHECK-UBSAN-LINUX-SHARED: "{{.*}}ld{{(.exe)?}}"
391 // CHECK-UBSAN-LINUX-SHARED-NOT: --export-dynamic
392 // CHECK-UBSAN-LINUX-SHARED-NOT: --dynamic-list
393 // CHECK-UBSAN-LINUX-SHARED-NOT: libclang_rt.ubsan
394
395 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
396 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld -fsanitize=leak \
397 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
398 // RUN:   | FileCheck --check-prefix=CHECK-LSAN-LINUX %s
399 //
400 // CHECK-LSAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
401 // CHECK-LSAN-LINUX-NOT: "-lc"
402 // CHECK-LSAN-LINUX-NOT: libclang_rt.ubsan
403 // CHECK-LSAN-LINUX: libclang_rt.lsan-x86_64.a"
404 // CHECK-LSAN-LINUX: "-lpthread"
405 // CHECK-LSAN-LINUX: "-ldl"
406
407 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
408 // RUN:  -target x86_64-unknown-linux -fuse-ld=ld -fsanitize=leak -fsanitize-coverage=func \
409 // RUN:  --sysroot=%S/Inputs/basic_linux_tree \
410 // RUN:   | FileCheck --check-prefix=CHECK-LSAN-COV-LINUX %s
411 //
412 // CHECK-LSAN-COV-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
413 // CHECK-LSAN-COV-LINUX-NOT: "-lc"
414 // CHECK-LSAN-COV-LINUX-NOT: libclang_rt.ubsan
415 // CHECK-LSAV-COV-LINUX: libclang_rt.lsan-x86_64.a"
416 // CHECK-LSAN-COV-LINUX-NOT: libclang_rt.ubsan
417 // CHECK-LSAN-COV-LINUX: "-lpthread"
418 // CHECK-LSAN-COV-LINUX: "-ldl"
419
420 // RUN: %clang -fsanitize=leak,address %s -### -o %t.o 2>&1 \
421 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
422 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
423 // RUN:   | FileCheck --check-prefix=CHECK-LSAN-ASAN-LINUX %s
424 // CHECK-LSAN-ASAN-LINUX: "{{.*}}ld{{(.exe)?}}"
425 // CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan
426 // CHECK-LSAN-ASAN-LINUX: libclang_rt.asan-x86_64
427 // CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan
428
429 // RUN: %clang -fsanitize=address -fsanitize-coverage=func %s -### -o %t.o 2>&1 \
430 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
431 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
432 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-COV-LINUX %s
433 // CHECK-ASAN-COV-LINUX: "{{.*}}ld{{(.exe)?}}"
434 // CHECK-ASAN-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan-x86_64.a" "--no-whole-archive"
435 // CHECK-ASAN-COV-LINUX-NOT: libclang_rt.ubsan
436 // CHECK-ASAN-COV-LINUX-NOT: "-lstdc++"
437 // CHECK-ASAN-COV-LINUX: "-lpthread"
438
439 // RUN: %clang -fsanitize=memory -fsanitize-coverage=func %s -### -o %t.o 2>&1 \
440 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
441 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
442 // RUN:   | FileCheck --check-prefix=CHECK-MSAN-COV-LINUX %s
443 // CHECK-MSAN-COV-LINUX: "{{.*}}ld{{(.exe)?}}"
444 // CHECK-MSAN-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.msan-x86_64.a" "--no-whole-archive"
445 // CHECK-MSAN-COV-LINUX-NOT: libclang_rt.ubsan
446 // CHECK-MSAN-COV-LINUX-NOT: "-lstdc++"
447 // CHECK-MSAN-COV-LINUX: "-lpthread"
448
449 // RUN: %clang -fsanitize=dataflow -fsanitize-coverage=func %s -### -o %t.o 2>&1 \
450 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
451 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
452 // RUN:   | FileCheck --check-prefix=CHECK-DFSAN-COV-LINUX %s
453 // CHECK-DFSAN-COV-LINUX: "{{.*}}ld{{(.exe)?}}"
454 // CHECK-DFSAN-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.dfsan-x86_64.a" "--no-whole-archive"
455 // CHECK-DFSAN-COV-LINUX-NOT: libclang_rt.ubsan
456 // CHECK-DFSAN-COV-LINUX-NOT: "-lstdc++"
457 // CHECK-DFSAN-COV-LINUX: "-lpthread"
458
459 // RUN: %clang -fsanitize=undefined -fsanitize-coverage=func %s -### -o %t.o 2>&1 \
460 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
461 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
462 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-COV-LINUX %s
463 // CHECK-UBSAN-COV-LINUX: "{{.*}}ld{{(.exe)?}}"
464 // CHECK-UBSAN-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone-x86_64.a" "--no-whole-archive"
465 // CHECK-UBSAN-COV-LINUX-NOT: "-lstdc++"
466 // CHECK-UBSAN-COV-LINUX: "-lpthread"
467
468 // RUN: %clang -fsanitize-coverage=func %s -### -o %t.o 2>&1 \
469 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
470 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
471 // RUN:   | FileCheck --check-prefix=CHECK-COV-LINUX %s
472 // CHECK-COV-LINUX: "{{.*}}ld{{(.exe)?}}"
473 // CHECK-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone-x86_64.a" "--no-whole-archive"
474 // CHECK-COV-LINUX-NOT: "-lstdc++"
475 // CHECK-COV-LINUX: "-lpthread"
476
477 // CFI by itself does not link runtime libraries.
478 // RUN: %clang -fsanitize=cfi %s -### -o %t.o 2>&1 \
479 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld -rtlib=platform \
480 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
481 // RUN:   | FileCheck --check-prefix=CHECK-CFI-LINUX %s
482 // CHECK-CFI-LINUX: "{{.*}}ld{{(.exe)?}}"
483 // CHECK-CFI-LINUX-NOT: libclang_rt.
484
485 // CFI with diagnostics links the UBSan runtime.
486 // RUN: %clang -fsanitize=cfi -fno-sanitize-trap=cfi -fsanitize-recover=cfi \
487 // RUN:     %s -### -o %t.o 2>&1\
488 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
489 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
490 // RUN:   | FileCheck --check-prefix=CHECK-CFI-DIAG-LINUX %s
491 // CHECK-CFI-DIAG-LINUX: "{{.*}}ld{{(.exe)?}}"
492 // CHECK-CFI-DIAG-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.ubsan_standalone-x86_64.a" "--no-whole-archive"
493
494 // Cross-DSO CFI links the CFI runtime.
495 // RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso %s -### -o %t.o 2>&1 \
496 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
497 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
498 // RUN:   | FileCheck --check-prefix=CHECK-CFI-CROSS-DSO-LINUX %s
499 // CHECK-CFI-CROSS-DSO-LINUX: "{{.*}}ld{{(.exe)?}}"
500 // CHECK-CFI-CROSS-DSO-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.cfi-x86_64.a" "--no-whole-archive"
501 // CHECK-CFI-CROSS-DSO-LINUX: -export-dynamic
502
503 // Cross-DSO CFI with diagnostics links just the CFI runtime.
504 // RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso %s -### -o %t.o 2>&1 \
505 // RUN:     -fno-sanitize-trap=cfi -fsanitize-recover=cfi \
506 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
507 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
508 // RUN:   | FileCheck --check-prefix=CHECK-CFI-CROSS-DSO-DIAG-LINUX %s
509 // CHECK-CFI-CROSS-DSO-DIAG-LINUX: "{{.*}}ld{{(.exe)?}}"
510 // CHECK-CFI-CROSS-DSO-DIAG-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.cfi_diag-x86_64.a" "--no-whole-archive"
511 // CHECK-CFI-CROSS-DSO-DIAG-LINUX: -export-dynamic
512
513 // Cross-DSO CFI on Android does not link runtime libraries.
514 // RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso %s -### -o %t.o 2>&1 \
515 // RUN:     -target aarch64-linux-android -fuse-ld=ld \
516 // RUN:     --sysroot=%S/Inputs/basic_android_tree \
517 // RUN:   | FileCheck --check-prefix=CHECK-CFI-CROSS-DSO-ANDROID %s
518 // CHECK-CFI-CROSS-DSO-ANDROID: "{{.*}}ld{{(.exe)?}}"
519 // CHECK-CFI-CROSS-DSO-ANDROID-NOT: libclang_rt.cfi
520
521 // Cross-DSO CFI with diagnostics on Android links just the UBSAN runtime.
522 // RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso %s -### -o %t.o 2>&1 \
523 // RUN:     -fno-sanitize-trap=cfi -fsanitize-recover=cfi \
524 // RUN:     -target aarch64-linux-android -fuse-ld=ld \
525 // RUN:     --sysroot=%S/Inputs/basic_android_tree \
526 // RUN:   | FileCheck --check-prefix=CHECK-CFI-CROSS-DSO-DIAG-ANDROID %s
527 // CHECK-CFI-CROSS-DSO-DIAG-ANDROID: "{{.*}}ld{{(.exe)?}}"
528 // CHECK-CFI-CROSS-DSO-DIAG-ANDROID: "{{[^"]*}}libclang_rt.ubsan_standalone-aarch64-android.so"
529 // CHECK-CFI-CROSS-DSO-DIAG-ANDROID: "-export-dynamic-symbol=__cfi_check"
530
531 // RUN: %clangxx -fsanitize=address %s -### -o %t.o 2>&1 \
532 // RUN:     -mmacosx-version-min=10.6 \
533 // RUN:     -resource-dir=%S/Inputs/resource_dir \
534 // RUN:     -target x86_64-apple-darwin13.4.0 -fuse-ld=ld -stdlib=platform \
535 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
536 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-DARWIN106-CXX %s
537 // CHECK-ASAN-DARWIN106-CXX: "{{.*}}ld{{(.exe)?}}"
538 // CHECK-ASAN-DARWIN106-CXX: libclang_rt.asan_osx_dynamic.dylib
539 // CHECK-ASAN-DARWIN106-CXX-NOT: -lc++abi
540
541 // RUN: %clangxx -fsanitize=leak %s -### -o %t.o 2>&1 \
542 // RUN:     -mmacosx-version-min=10.6 \
543 // RUN:     -resource-dir=%S/Inputs/resource_dir \
544 // RUN:     -target x86_64-apple-darwin13.4.0 -fuse-ld=ld -stdlib=platform \
545 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
546 // RUN:   | FileCheck --check-prefix=CHECK-LSAN-DARWIN106-CXX %s
547 // CHECK-LSAN-DARWIN106-CXX: "{{.*}}ld{{(.exe)?}}"
548 // CHECK-LSAN-DARWIN106-CXX: libclang_rt.lsan_osx_dynamic.dylib
549 // CHECK-LSAN-DARWIN106-CXX-NOT: -lc++abi
550
551 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
552 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld -fsanitize=safe-stack \
553 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
554 // RUN:   | FileCheck --check-prefix=CHECK-SAFESTACK-LINUX %s
555 //
556 // CHECK-SAFESTACK-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
557 // CHECK-SAFESTACK-LINUX-NOT: "-lc"
558 // CHECK-SAFESTACK-LINUX-NOT: whole-archive
559 // CHECK-SAFESTACK-LINUX: libclang_rt.safestack-x86_64.a"
560 // CHECK-SAFESTACK-LINUX: "-u" "__safestack_init"
561 // CHECK-SAFESTACK-LINUX: "-lpthread"
562 // CHECK-SAFESTACK-LINUX: "-ldl"
563
564 // RUN: %clang -fsanitize=shadow-call-stack %s -### -o %t.o 2>&1 \
565 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
566 // RUN:   | FileCheck --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-X86-64 %s
567 // CHECK-SHADOWCALLSTACK-LINUX-X86-64-NOT: error:
568
569 // RUN: %clang -fsanitize=shadow-call-stack %s -### -o %t.o 2>&1 \
570 // RUN:     -target aarch64-unknown-linux -fuse-ld=ld \
571 // RUN:   | FileCheck --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-AARCH64 %s
572 // CHECK-SHADOWCALLSTACK-LINUX-AARCH64: '-fsanitize=shadow-call-stack' only allowed with '-ffixed-x18'
573
574 // RUN: %clang -fsanitize=shadow-call-stack %s -### -o %t.o 2>&1 \
575 // RUN:     -target aarch64-unknown-linux -fuse-ld=ld -ffixed-x18 \
576 // RUN:   | FileCheck --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-AARCH64-X18 %s
577 // RUN: %clang -fsanitize=shadow-call-stack %s -### -o %t.o 2>&1 \
578 // RUN:     -target arm64-unknown-ios -fuse-ld=ld \
579 // RUN:   | FileCheck --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-AARCH64-X18 %s
580 // CHECK-SHADOWCALLSTACK-LINUX-AARCH64-X18-NOT: error:
581
582 // RUN: %clang -fsanitize=shadow-call-stack %s -### -o %t.o 2>&1 \
583 // RUN:     -target x86-unknown-linux -fuse-ld=ld \
584 // RUN:   | FileCheck --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-X86 %s
585 // CHECK-SHADOWCALLSTACK-LINUX-X86: error: unsupported option '-fsanitize=shadow-call-stack' for target 'x86-unknown-linux'
586
587 // RUN: %clang -fsanitize=shadow-call-stack %s -### -o %t.o 2>&1 \
588 // RUN:     -fsanitize=safe-stack -target x86_64-unknown-linux -fuse-ld=ld \
589 // RUN:   | FileCheck --check-prefix=CHECK-SHADOWCALLSTACK-SAFESTACK %s
590 // CHECK-SHADOWCALLSTACK-SAFESTACK: error: invalid argument '-fsanitize=shadow-call-stack' not allowed with '-fsanitize=safe-stack'
591
592 // RUN: %clang -fsanitize=cfi -fsanitize-stats %s -### -o %t.o 2>&1 \
593 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
594 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
595 // RUN:   | FileCheck --check-prefix=CHECK-CFI-STATS-LINUX %s
596 // CHECK-CFI-STATS-LINUX: "{{.*}}ld{{(.exe)?}}"
597 // CHECK-CFI-STATS-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.stats_client-x86_64.a" "--no-whole-archive"
598 // CHECK-CFI-STATS-LINUX-NOT: "--whole-archive"
599 // CHECK-CFI-STATS-LINUX: "{{[^"]*}}libclang_rt.stats-x86_64.a"
600
601 // RUN: %clang -fsanitize=cfi -fsanitize-stats %s -### -o %t.o 2>&1 \
602 // RUN:     -target x86_64-apple-darwin -fuse-ld=ld \
603 // RUN:     -resource-dir=%S/Inputs/resource_dir \
604 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
605 // RUN:   | FileCheck --check-prefix=CHECK-CFI-STATS-DARWIN %s
606 // CHECK-CFI-STATS-DARWIN: "{{.*}}ld{{(.exe)?}}"
607 // CHECK-CFI-STATS-DARWIN: "{{[^"]*}}libclang_rt.stats_client_osx.a"
608 // CHECK-CFI-STATS-DARWIN: "{{[^"]*}}libclang_rt.stats_osx_dynamic.dylib"
609
610 // RUN: %clang -fsanitize=cfi -fsanitize-stats %s -### -o %t.o 2>&1 \
611 // RUN:     -target x86_64-pc-windows \
612 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
613 // RUN:   | FileCheck --check-prefix=CHECK-CFI-STATS-WIN64 %s
614 // CHECK-CFI-STATS-WIN64: "--dependent-lib={{[^"]*}}clang_rt.stats_client-x86_64.lib"
615 // CHECK-CFI-STATS-WIN64: "--dependent-lib={{[^"]*}}clang_rt.stats-x86_64.lib"
616 // CHECK-CFI-STATS-WIN64: "--linker-option=/include:__sanitizer_stats_register"
617
618 // RUN: %clang -fsanitize=cfi -fsanitize-stats %s -### -o %t.o 2>&1 \
619 // RUN:     -target i686-pc-windows \
620 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
621 // RUN:   | FileCheck --check-prefix=CHECK-CFI-STATS-WIN32 %s
622 // CHECK-CFI-STATS-WIN32: "--dependent-lib={{[^"]*}}clang_rt.stats_client-i386.lib"
623 // CHECK-CFI-STATS-WIN32: "--dependent-lib={{[^"]*}}clang_rt.stats-i386.lib"
624 // CHECK-CFI-STATS-WIN32: "--linker-option=/include:___sanitizer_stats_register"
625
626 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
627 // RUN:     -target arm-linux-androideabi -fuse-ld=ld -fsanitize=safe-stack \
628 // RUN:     --sysroot=%S/Inputs/basic_android_tree \
629 // RUN:   | FileCheck --check-prefix=CHECK-SAFESTACK-ANDROID-ARM %s
630 //
631 // CHECK-SAFESTACK-ANDROID-ARM: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
632 // CHECK-SAFESTACK-ANDROID-ARM-NOT: libclang_rt.safestack
633
634 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o -shared 2>&1 \
635 // RUN:     -target arm-linux-androideabi -fuse-ld=ld -fsanitize=safe-stack \
636 // RUN:     --sysroot=%S/Inputs/basic_android_tree \
637 // RUN:   | FileCheck --check-prefix=CHECK-SAFESTACK-SHARED-ANDROID-ARM %s
638 //
639 // CHECK-SAFESTACK-SHARED-ANDROID-ARM: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
640 // CHECK-SAFESTACK-SHARED-ANDROID-ARM-NOT: libclang_rt.safestack
641
642 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
643 // RUN:     -target aarch64-linux-android -fuse-ld=ld -fsanitize=safe-stack \
644 // RUN:     --sysroot=%S/Inputs/basic_android_tree \
645 // RUN:   | FileCheck --check-prefix=CHECK-SAFESTACK-ANDROID-AARCH64 %s
646 //
647 // CHECK-SAFESTACK-ANDROID-AARCH64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
648 // CHECK-SAFESTACK-ANDROID-AARCH64-NOT: libclang_rt.safestack
649
650 // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
651 // RUN:     -target x86_64-scei-ps4 -fuse-ld=ld \
652 // RUN:     -shared \
653 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-PS4 %s
654 // CHECK-UBSAN-PS4: --dependent-lib=libSceDbgUBSanitizer_stub_weak.a
655 // CHECK-UBSAN-PS4: "{{.*}}ld{{(.gold)?(.exe)?}}"
656 // CHECK-UBSAN-PS4: -lSceDbgUBSanitizer_stub_weak
657
658 // RUN: %clang -fsanitize=address %s -### -o %t.o 2>&1 \
659 // RUN:     -target x86_64-scei-ps4 -fuse-ld=ld \
660 // RUN:     -shared \
661 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-PS4 %s
662 // CHECK-ASAN-PS4: --dependent-lib=libSceDbgAddressSanitizer_stub_weak.a
663 // CHECK-ASAN-PS4: "{{.*}}ld{{(.gold)?(.exe)?}}"
664 // CHECK-ASAN-PS4: -lSceDbgAddressSanitizer_stub_weak
665
666 // RUN: %clang -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
667 // RUN:     -target x86_64-scei-ps4 -fuse-ld=ld \
668 // RUN:     -shared \
669 // RUN:   | FileCheck --check-prefix=CHECK-AUBSAN-PS4 %s
670 // CHECK-AUBSAN-PS4-NOT: --dependent-lib=libSceDbgUBSanitizer_stub_weak.a
671 // CHECK-AUBSAN-PS4: --dependent-lib=libSceDbgAddressSanitizer_stub_weak.a
672 // CHECK-AUBSAN-PS4-NOT: --dependent-lib=libSceDbgUBSanitizer_stub_weak.a
673 // CHECK-AUBSAN-PS4: "{{.*}}ld{{(.gold)?(.exe)?}}"
674 // CHECK-AUBSAN-PS4: -lSceDbgAddressSanitizer_stub_weak
675
676 // RUN: %clang -fsanitize=efficiency-cache-frag %s -### -o %t.o 2>&1 \
677 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
678 // RUN:   | FileCheck --check-prefix=CHECK-ESAN-LINUX %s
679 // RUN: %clang -fsanitize=efficiency-working-set %s -### -o %t.o 2>&1 \
680 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld \
681 // RUN:   | FileCheck --check-prefix=CHECK-ESAN-LINUX %s
682 //
683 // CHECK-ESAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
684 // CHECK-ESAN-LINUX: libclang_rt.esan-x86_64.a
685
686 // RUN: %clang -fsanitize=scudo %s -### -o %t.o 2>&1 \
687 // RUN:     -target i386-unknown-linux -fuse-ld=ld \
688 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
689 // RUN:   | FileCheck --check-prefix=CHECK-SCUDO-LINUX %s
690 // CHECK-SCUDO-LINUX: "{{.*}}ld{{(.exe)?}}"
691 // CHECK-SCUDO-LINUX: "-pie"
692 // CHECK-SCUDO-LINUX: "--whole-archive" "{{.*}}libclang_rt.scudo-i386.a" "--no-whole-archive"
693 // CHECK-SCUDO-LINUX-NOT: "-lstdc++"
694 // CHECK-SCUDO-LINUX: "-lpthread"
695 // CHECK-SCUDO-LINUX: "-ldl"
696
697 // RUN: %clang -fsanitize=scudo -fsanitize-minimal-runtime %s -### -o %t.o 2>&1 \
698 // RUN:     -target i386-unknown-linux -fuse-ld=ld \
699 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
700 // RUN:   | FileCheck --check-prefix=CHECK-SCUDO-MINIMAL-LINUX %s
701 // CHECK-SCUDO-MINIMAL-LINUX: "{{.*}}ld{{(.exe)?}}"
702 // CHECK-SCUDO-MINIMAL-LINUX: "-pie"
703 // CHECK-SCUDO-MINIMAL-LINUX: "--whole-archive" "{{.*}}libclang_rt.scudo_minimal-i386.a" "--no-whole-archive"
704 // CHECK-SCUDO-MINIMAL-LINUX: "-lpthread"
705
706 // RUN: %clang -no-canonical-prefixes %s -### -o %t.so -shared 2>&1 \
707 // RUN:     -target i386-unknown-linux -fuse-ld=ld -fsanitize=scudo -shared-libsan \
708 // RUN:     -resource-dir=%S/Inputs/resource_dir \
709 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
710 // RUN:   | FileCheck --check-prefix=CHECK-SCUDO-SHARED-LINUX %s
711 //
712 // CHECK-SCUDO-SHARED-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
713 // CHECK-SCUDO-SHARED-LINUX-NOT: "-lc"
714 // CHECK-SCUDO-SHARED-LINUX-NOT: libclang_rt.scudo-i386.a"
715 // CHECK-SCUDO-SHARED-LINUX: libclang_rt.scudo-i386.so"
716 // CHECK-SCUDO-SHARED-LINUX-NOT: "-lpthread"
717 // CHECK-SCUDO-SHARED-LINUX-NOT: "-lrt"
718 // CHECK-SCUDO-SHARED-LINUX-NOT: "-ldl"
719 // CHECK-SCUDO-SHARED-LINUX-NOT: "--export-dynamic"
720 // CHECK-SCUDO-SHARED-LINUX-NOT: "--dynamic-list"
721
722 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
723 // RUN:     -target arm-linux-androideabi -fuse-ld=ld -fsanitize=scudo \
724 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
725 // RUN:   | FileCheck --check-prefix=CHECK-SCUDO-ANDROID %s
726 //
727 // CHECK-SCUDO-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
728 // CHECK-SCUDO-ANDROID-NOT: "-lc"
729 // CHECK-SCUDO-ANDROID: "-pie"
730 // CHECK-SCUDO-ANDROID-NOT: "-lpthread"
731 // CHECK-SCUDO-ANDROID: libclang_rt.scudo-arm-android.so"
732 // CHECK-SCUDO-ANDROID-NOT: "-lpthread"
733
734 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
735 // RUN:     -target arm-linux-androideabi -fuse-ld=ld -fsanitize=scudo \
736 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
737 // RUN:     -static-libsan \
738 // RUN:   | FileCheck --check-prefix=CHECK-SCUDO-ANDROID-STATIC %s
739 // CHECK-SCUDO-ANDROID-STATIC: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
740 // CHECK-SCUDO-ANDROID-STATIC: "-pie"
741 // CHECK-SCUDO-ANDROID-STATIC: "--whole-archive" "{{.*}}libclang_rt.scudo-arm-android.a" "--no-whole-archive"
742 // CHECK-SCUDO-ANDROID-STATIC-NOT: "-lstdc++"
743 // CHECK-SCUDO-ANDROID-STATIC-NOT: "-lpthread"
744 // CHECK-SCUDO-ANDROID-STATIC-NOT: "-lrt"
745
746 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
747 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \
748 // RUN:     -resource-dir=%S/Inputs/resource_dir \
749 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
750 // RUN:   | FileCheck --check-prefix=CHECK-HWASAN-X86-64-LINUX %s
751 //
752 // CHECK-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
753 // CHECK-HWASAN-X86-64-LINUX: "-pie"
754 // CHECK-HWASAN-X86-64-LINUX-NOT: "-lc"
755 // CHECK-HWASAN-X86-64-LINUX: libclang_rt.hwasan-x86_64.a"
756 // CHECK-HWASAN-X86-64-LINUX-NOT: "--export-dynamic"
757 // CHECK-HWASAN-X86-64-LINUX: "--dynamic-list={{.*}}libclang_rt.hwasan-x86_64.a.syms"
758 // CHECK-HWASAN-X86-64-LINUX-NOT: "--export-dynamic"
759 // CHECK-HWASAN-X86-64-LINUX: "-lpthread"
760 // CHECK-HWASAN-X86-64-LINUX: "-lrt"
761 // CHECK-HWASAN-X86-64-LINUX: "-ldl"
762
763 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
764 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \
765 // RUN:     -shared-libsan -resource-dir=%S/Inputs/resource_dir \
766 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
767 // RUN:   | FileCheck --check-prefix=CHECK-SHARED-HWASAN-X86-64-LINUX %s
768 //
769 // CHECK-SHARED-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
770 // CHECK-SHARED-HWASAN-X86-64-LINUX: "-pie"
771 // CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lc"
772 // CHECK-SHARED-HWASAN-X86-64-LINUX: libclang_rt.hwasan-x86_64.so"
773 // CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lpthread"
774 // CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lrt"
775 // CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-ldl"
776 // CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "--export-dynamic"
777 // CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "--dynamic-list"
778
779 // RUN: %clang -no-canonical-prefixes %s -### -o %t.so -shared 2>&1 \
780 // RUN:     -target x86_64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \
781 // RUN:     -shared-libsan -resource-dir=%S/Inputs/resource_dir \
782 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
783 // RUN:   | FileCheck --check-prefix=CHECK-DSO-SHARED-HWASAN-X86-64-LINUX %s
784 //
785 // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
786 // CHECK-DSO_SHARED-HWASAN-X86-64-LINUX: "-pie"
787 // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lc"
788 // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX: libclang_rt.hwasan-x86_64.so"
789 // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lpthread"
790 // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lrt"
791 // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-ldl"
792 // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "--export-dynamic"
793 // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "--dynamic-list"
794
795 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
796 // RUN:     -target aarch64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \
797 // RUN:     -resource-dir=%S/Inputs/resource_dir \
798 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
799 // RUN:   | FileCheck --check-prefix=CHECK-HWASAN-AARCH64-LINUX %s
800 //
801 // CHECK-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
802 // CHECK-HWASAN-AARCH64-LINUX: "-pie"
803 // CHECK-HWASAN-AARCH64-LINUX-NOT: "-lc"
804 // CHECK-HWASAN-AARCH64-LINUX: libclang_rt.hwasan-aarch64.a"
805 // CHECK-HWASAN-AARCH64-LINUX-NOT: "--export-dynamic"
806 // CHECK-HWASAN-AARCH64-LINUX: "--dynamic-list={{.*}}libclang_rt.hwasan-aarch64.a.syms"
807 // CHECK-HWASAN-AARCH64-LINUX-NOT: "--export-dynamic"
808 // CHECK-HWASAN-AARCH64-LINUX: "-lpthread"
809 // CHECK-HWASAN-AARCH64-LINUX: "-lrt"
810 // CHECK-HWASAN-AARCH64-LINUX: "-ldl"
811
812 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
813 // RUN:     -target aarch64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \
814 // RUN:     -shared-libsan \
815 // RUN:     -resource-dir=%S/Inputs/resource_dir \
816 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
817 // RUN:   | FileCheck --check-prefix=CHECK-SHARED-HWASAN-AARCH64-LINUX %s
818 //
819 // CHECK-SHARED-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
820 // CHECK-SHARED-HWASAN-AARCH64-LINUX: "-pie"
821 // CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lc"
822 // CHECK-SHARED-HWASAN-AARCH64-LINUX: libclang_rt.hwasan-aarch64.so"
823 // CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lpthread"
824 // CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lrt"
825 // CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-ldl"
826 // CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "--export-dynamic"
827 // CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "--dynamic-list"
828
829 // RUN: %clang -no-canonical-prefixes %s -### -o %t.so -shared 2>&1 \
830 // RUN:     -target aarch64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \
831 // RUN:     -shared-libsan -resource-dir=%S/Inputs/resource_dir \
832 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
833 // RUN:   | FileCheck --check-prefix=CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX %s
834 //
835 // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
836 // CHECK-DSO_SHARED-HWASAN-AARCH64-LINUX: "-pie"
837 // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lc"
838 // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX: libclang_rt.hwasan-aarch64.so"
839 // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lpthread"
840 // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lrt"
841 // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-ldl"
842 // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "--export-dynamic"
843 // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "--dynamic-list"