xref: /minix3/external/bsd/llvm/dist/clang/test/Driver/sanitizer-ld.c (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1f4a2713aSLionel Sambuc // Test sanitizers ld flags.
2f4a2713aSLionel Sambuc 
3f4a2713aSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
4f4a2713aSLionel Sambuc // RUN:     -target i386-unknown-linux -fsanitize=address \
5f4a2713aSLionel Sambuc // RUN:     -resource-dir=%S/Inputs/resource_dir \
6f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
7f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX %s
8f4a2713aSLionel Sambuc //
9f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
10f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-NOT: "-lc"
11f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX: libclang_rt.asan-i386.a"
12*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-NOT: "-export-dynamic"
13*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX: "--dynamic-list={{.*}}libclang_rt.asan-i386.a.syms"
14*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-NOT: "-export-dynamic"
15f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX: "-lpthread"
16f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX: "-lrt"
17f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX: "-ldl"
18*0a6a1f1dSLionel Sambuc 
19*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
20*0a6a1f1dSLionel Sambuc // RUN:     -target i386-unknown-linux -fsanitize=address -shared-libasan \
21*0a6a1f1dSLionel Sambuc // RUN:     -resource-dir=%S/Inputs/resource_dir \
22*0a6a1f1dSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
23*0a6a1f1dSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-SHARED-ASAN-LINUX %s
24*0a6a1f1dSLionel Sambuc //
25*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
26*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "-lc"
27*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: libclang_rt.asan-i386.a"
28*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX: libclang_rt.asan-i386.so"
29*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.asan-preinit-i386.a" "-no-whole-archive"
30*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "-lpthread"
31*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "-lrt"
32*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "-ldl"
33*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "-export-dynamic"
34*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "--dynamic-list"
35*0a6a1f1dSLionel Sambuc 
36*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.so -shared 2>&1 \
37*0a6a1f1dSLionel Sambuc // RUN:     -target i386-unknown-linux -fsanitize=address -shared-libasan \
38*0a6a1f1dSLionel Sambuc // RUN:     -resource-dir=%S/Inputs/resource_dir \
39*0a6a1f1dSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
40*0a6a1f1dSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-DSO-SHARED-ASAN-LINUX %s
41*0a6a1f1dSLionel Sambuc //
42*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
43*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lc"
44*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: libclang_rt.asan-i386.a"
45*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "libclang_rt.asan-preinit-i386.a"
46*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX: libclang_rt.asan-i386.so"
47*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lpthread"
48*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lrt"
49*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-ldl"
50*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-export-dynamic"
51*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "--dynamic-list"
52*0a6a1f1dSLionel Sambuc 
53*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
54*0a6a1f1dSLionel Sambuc // RUN:     -target i386-unknown-freebsd -fsanitize=address \
55*0a6a1f1dSLionel Sambuc // RUN:     -resource-dir=%S/Inputs/resource_dir \
56*0a6a1f1dSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_freebsd_tree \
57*0a6a1f1dSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-FREEBSD %s
58*0a6a1f1dSLionel Sambuc //
59*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
60*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-NOT: "-lc"
61*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-NOT: libclang_rt.asan_cxx
62*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD: freebsd{{/|\\+}}libclang_rt.asan-i386.a"
63*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-NOT: libclang_rt.asan_cxx
64*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-NOT: "--dynamic-list"
65*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD: "-export-dynamic"
66*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD: "-lpthread"
67*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD: "-lrt"
68*0a6a1f1dSLionel Sambuc 
69*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
70*0a6a1f1dSLionel Sambuc // RUN:     -target i386-unknown-freebsd -fsanitize=address \
71*0a6a1f1dSLionel Sambuc // RUN:     -resource-dir=%S/Inputs/resource_dir \
72*0a6a1f1dSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_freebsd_tree \
73*0a6a1f1dSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-FREEBSD-LDL %s
74*0a6a1f1dSLionel Sambuc //
75*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-LDL: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
76*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-LDL-NOT: "-ldl"
77f4a2713aSLionel Sambuc 
78f4a2713aSLionel Sambuc // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
79f4a2713aSLionel Sambuc // RUN:     -target i386-unknown-linux -fsanitize=address \
80f4a2713aSLionel Sambuc // RUN:     -resource-dir=%S/Inputs/empty_resource_dir \
81f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
82f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s
83f4a2713aSLionel Sambuc //
84f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
85f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX-NOT: "-lc"
86f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
87*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan_cxx-i386.a" "-no-whole-archive"
88*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-CXX-NOT: "--dynamic-list"
89*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-export-dynamic"
90*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-CXX: stdc++
91f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-lpthread"
92f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-lrt"
93f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-ldl"
94f4a2713aSLionel Sambuc 
95f4a2713aSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o /dev/null -fsanitize=address \
96f4a2713aSLionel Sambuc // RUN:     -target i386-unknown-linux --sysroot=%S/Inputs/basic_linux_tree \
97f4a2713aSLionel Sambuc // RUN:     -lstdc++ -static 2>&1 \
98f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX-STATIC %s
99f4a2713aSLionel Sambuc //
100f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX-STATIC: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
101f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX-STATIC-NOT: stdc++
102f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX-STATIC: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
103f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX-STATIC: stdc++
104f4a2713aSLionel Sambuc 
105f4a2713aSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
106*0a6a1f1dSLionel Sambuc // RUN:     -target arm-linux-gnueabi -fsanitize=address \
107*0a6a1f1dSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
108*0a6a1f1dSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ARM %s
109*0a6a1f1dSLionel Sambuc //
110*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARM: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
111*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARM-NOT: "-lc"
112*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARM: libclang_rt.asan-arm.a"
113*0a6a1f1dSLionel Sambuc //
114*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
115*0a6a1f1dSLionel Sambuc // RUN:     -target armv7l-linux-gnueabi -fsanitize=address \
116*0a6a1f1dSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
117*0a6a1f1dSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ARMv7 %s
118*0a6a1f1dSLionel Sambuc //
119*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARMv7: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
120*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARMv7-NOT: "-lc"
121*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARMv7: libclang_rt.asan-arm.a"
122*0a6a1f1dSLionel Sambuc 
123*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
124f4a2713aSLionel Sambuc // RUN:     -target arm-linux-androideabi -fsanitize=address \
125f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
126f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID %s
127f4a2713aSLionel Sambuc //
128f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
129f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-NOT: "-lc"
130*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ANDROID: "-pie"
131*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ANDROID-NOT: "-lpthread"
132f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID: libclang_rt.asan-arm-android.so"
133f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-NOT: "-lpthread"
134f4a2713aSLionel Sambuc //
135f4a2713aSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
136f4a2713aSLionel Sambuc // RUN:     -target arm-linux-androideabi -fsanitize=address \
137f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
138*0a6a1f1dSLionel Sambuc // RUN:     -shared-libasan \
139*0a6a1f1dSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED-LIBASAN %s
140*0a6a1f1dSLionel Sambuc //
141*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ANDROID-SHARED-LIBASAN-NOT: argument unused during compilation: '-shared-libasan'
142*0a6a1f1dSLionel Sambuc //
143*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
144*0a6a1f1dSLionel Sambuc // RUN:     -target arm-linux-androideabi -fsanitize=address \
145*0a6a1f1dSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
146f4a2713aSLionel Sambuc // RUN:     -shared \
147f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED %s
148f4a2713aSLionel Sambuc //
149f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-SHARED: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
150f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-SHARED-NOT: "-lc"
151f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan-arm-android.so"
152f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread"
153f4a2713aSLionel Sambuc 
154f4a2713aSLionel Sambuc // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
155f4a2713aSLionel Sambuc // RUN:     -target x86_64-unknown-linux -lstdc++ -fsanitize=thread \
156f4a2713aSLionel Sambuc // RUN:     -resource-dir=%S/Inputs/resource_dir \
157f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
158f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-TSAN-LINUX-CXX %s
159f4a2713aSLionel Sambuc //
160f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
161f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX-NOT: stdc++
162f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.tsan-x86_64.a" "-no-whole-archive"
163*0a6a1f1dSLionel Sambuc // CHECK-TSAN-LINUX-CXX-NOT: "-export-dynamic"
164*0a6a1f1dSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.tsan-x86_64.a.syms"
165*0a6a1f1dSLionel Sambuc // CHECK-TSAN-LINUX-CXX-NOT: "-export-dynamic"
166*0a6a1f1dSLionel Sambuc // CHECK-TSAN-LINUX-CXX: stdc++
167f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "-lpthread"
168f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "-lrt"
169f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "-ldl"
170f4a2713aSLionel Sambuc 
171f4a2713aSLionel Sambuc // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
172f4a2713aSLionel Sambuc // RUN:     -target x86_64-unknown-linux -lstdc++ -fsanitize=memory \
173f4a2713aSLionel Sambuc // RUN:     -resource-dir=%S/Inputs/resource_dir \
174f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
175f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-MSAN-LINUX-CXX %s
176f4a2713aSLionel Sambuc //
177f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
178f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX-NOT: stdc++
179f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.msan-x86_64.a" "-no-whole-archive"
180*0a6a1f1dSLionel Sambuc // CHECK-MSAN-LINUX-CXX-NOT: "-export-dynamic"
181*0a6a1f1dSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.msan-x86_64.a.syms"
182*0a6a1f1dSLionel Sambuc // CHECK-MSAN-LINUX-CXX-NOT: "-export-dynamic"
183*0a6a1f1dSLionel Sambuc // CHECK-MSAN-LINUX-CXX: stdc++
184f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "-lpthread"
185f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "-lrt"
186f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "-ldl"
187f4a2713aSLionel Sambuc 
188f4a2713aSLionel Sambuc // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
189f4a2713aSLionel Sambuc // RUN:     -target i386-unknown-linux \
190f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
191f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s
192f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
193f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
194*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
195f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
196f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
197f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
198*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
199*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
200*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
201f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: "-lstdc++"
202*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX: "-lpthread"
203*0a6a1f1dSLionel Sambuc 
204*0a6a1f1dSLionel Sambuc // RUN: %clang -fsanitize=undefined -fsanitize-link-c++-runtime %s -### -o %t.o 2>&1 \
205*0a6a1f1dSLionel Sambuc // RUN:     -target i386-unknown-linux \
206*0a6a1f1dSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
207*0a6a1f1dSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-LINK-CXX %s
208*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-LINK-CXX-NOT: "-lstdc++"
209*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-LINK-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
210*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-LINK-CXX-NOT: "-lstdc++"
211f4a2713aSLionel Sambuc 
212f4a2713aSLionel Sambuc // RUN: %clangxx -fsanitize=undefined %s -### -o %t.o 2>&1 \
213f4a2713aSLionel Sambuc // RUN:     -target i386-unknown-linux \
214*0a6a1f1dSLionel Sambuc // RUN:     -resource-dir=%S/Inputs/resource_dir \
215f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
216f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-CXX %s
217f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
218f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
219f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
220f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
221f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
222*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
223*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.ubsan-i386.a.syms"
224*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
225f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
226*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
227*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.ubsan_cxx-i386.a.syms"
228*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
229f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "-lstdc++"
230*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
231*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "-lpthread"
232f4a2713aSLionel Sambuc 
233f4a2713aSLionel Sambuc // RUN: %clang -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
234f4a2713aSLionel Sambuc // RUN:     -target i386-unknown-linux \
235f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
236f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX %s
237f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
238f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
239f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
240f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
241f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
242f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
243f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++"
244*0a6a1f1dSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX: "-lpthread"
245f4a2713aSLionel Sambuc 
246f4a2713aSLionel Sambuc // RUN: %clangxx -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
247f4a2713aSLionel Sambuc // RUN:     -target i386-unknown-linux \
248f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
249f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX-CXX %s
250f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
251f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
252f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
253f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
254f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
255f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
256f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++"
257*0a6a1f1dSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "-lpthread"
258f4a2713aSLionel Sambuc 
259f4a2713aSLionel Sambuc // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
260f4a2713aSLionel Sambuc // RUN:     -target i386-unknown-linux \
261*0a6a1f1dSLionel Sambuc // RUN:     -resource-dir=%S/Inputs/resource_dir \
262f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
263f4a2713aSLionel Sambuc // RUN:     -shared \
264f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHARED %s
265f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED: "{{.*}}ld{{(.exe)?}}"
266*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED-NOT: --export-dynamic
267*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED-NOT: --dynamic-list
268*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED-NOT: libclang_rt.ubsan-i386.a"
269*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED-NOT: --export-dynamic
270*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED-NOT: --dynamic-list
271f4a2713aSLionel Sambuc 
272f4a2713aSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
273f4a2713aSLionel Sambuc // RUN:     -target x86_64-unknown-linux -fsanitize=leak \
274f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
275f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-LSAN-LINUX %s
276f4a2713aSLionel Sambuc //
277f4a2713aSLionel Sambuc // CHECK-LSAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
278f4a2713aSLionel Sambuc // CHECK-LSAN-LINUX-NOT: "-lc"
279f4a2713aSLionel Sambuc // CHECK-LSAN-LINUX: libclang_rt.lsan-x86_64.a"
280f4a2713aSLionel Sambuc // CHECK-LSAN-LINUX: "-lpthread"
281f4a2713aSLionel Sambuc // CHECK-LSAN-LINUX: "-ldl"
282f4a2713aSLionel Sambuc 
283f4a2713aSLionel Sambuc // RUN: %clang -fsanitize=leak,undefined %s -### -o %t.o 2>&1 \
284f4a2713aSLionel Sambuc // RUN:     -target x86_64-unknown-linux \
285f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
286f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-LSAN-UBSAN-LINUX %s
287f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
288f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san
289f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.lsan-x86_64.a" "-no-whole-archive"
290f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san
291f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-x86_64.a" "-no-whole-archive"
292f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
293f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX-NOT: "-lstdc++"
294*0a6a1f1dSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX: "-lpthread"
295f4a2713aSLionel Sambuc 
296f4a2713aSLionel Sambuc // RUN: %clang -fsanitize=leak,address %s -### -o %t.o 2>&1 \
297f4a2713aSLionel Sambuc // RUN:     -target x86_64-unknown-linux \
298f4a2713aSLionel Sambuc // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
299f4a2713aSLionel Sambuc // RUN:   | FileCheck --check-prefix=CHECK-LSAN-ASAN-LINUX %s
300f4a2713aSLionel Sambuc // CHECK-LSAN-ASAN-LINUX: "{{.*}}ld{{(.exe)?}}"
301f4a2713aSLionel Sambuc // CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan
302f4a2713aSLionel Sambuc // CHECK-LSAN-ASAN-LINUX: libclang_rt.asan-x86_64
303f4a2713aSLionel Sambuc // CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan
304