blob: 603e5104cc232105a5b5a2ebd2182054699d9904 [file] [log] [blame]
Alexey Samsonov86143042013-02-27 11:14:55 +00001// Test sanitizers ld flags.
2
3// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
4// RUN: -target i386-unknown-linux -fsanitize=address \
Richard Smith76e6e132013-03-23 00:30:08 +00005// RUN: -resource-dir=%S/Inputs/resource_dir \
Alexey Samsonov86143042013-02-27 11:14:55 +00006// 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: "-lpthread"
Evgeniy Stepanov3a8aff92013-05-24 14:28:03 +000013// CHECK-ASAN-LINUX: "-lrt"
Alexey Samsonov86143042013-02-27 11:14:55 +000014// CHECK-ASAN-LINUX: "-ldl"
Richard Smith76e6e132013-03-23 00:30:08 +000015// CHECK-ASAN-LINUX-NOT: "-export-dynamic"
16// CHECK-ASAN-LINUX: "--dynamic-list={{.*}}libclang_rt.asan-i386.a.syms"
Alexey Samsonov86143042013-02-27 11:14:55 +000017
Stephen Hines651f13c2014-04-23 16:59:28 -070018// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
19// RUN: -target i386-unknown-linux -fsanitize=address -shared-libasan \
20// RUN: -resource-dir=%S/Inputs/resource_dir \
21// RUN: --sysroot=%S/Inputs/basic_linux_tree \
22// RUN: | FileCheck --check-prefix=CHECK-SHARED-ASAN-LINUX %s
23//
24// CHECK-SHARED-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
25// CHECK-SHARED-ASAN-LINUX-NOT: "-lc"
26// CHECK-SHARED-ASAN-LINUX-NOT: libclang_rt.asan-i386.a"
27// CHECK-SHARED-ASAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.asan-preinit-i386.a" "-no-whole-archive"
28// CHECK-SHARED-ASAN-LINUX: libclang_rt.asan-i386.so"
29// CHECK-SHARED-ASAN-LINUX-NOT: "-lpthread"
30// CHECK-SHARED-ASAN-LINUX-NOT: "-lrt"
31// CHECK-SHARED-ASAN-LINUX-NOT: "-ldl"
32// CHECK-SHARED-ASAN-LINUX-NOT: "-export-dynamic"
33// CHECK-SHARED-ASAN-LINUX-NOT: "--dynamic-list"
34
35// RUN: %clang -no-canonical-prefixes %s -### -o %t.so -shared 2>&1 \
36// RUN: -target i386-unknown-linux -fsanitize=address -shared-libasan \
37// RUN: -resource-dir=%S/Inputs/resource_dir \
38// RUN: --sysroot=%S/Inputs/basic_linux_tree \
39// RUN: | FileCheck --check-prefix=CHECK-DSO-SHARED-ASAN-LINUX %s
40//
41// CHECK-DSO-SHARED-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
42// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lc"
43// CHECK-DSO-SHARED-ASAN-LINUX-NOT: libclang_rt.asan-i386.a"
44// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "libclang_rt.asan-preinit-i386.a"
45// CHECK-DSO-SHARED-ASAN-LINUX: libclang_rt.asan-i386.so"
46// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lpthread"
47// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lrt"
48// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-ldl"
49// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-export-dynamic"
50// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "--dynamic-list"
51
52// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
53// RUN: -target i386-unknown-freebsd -fsanitize=address \
54// RUN: -resource-dir=%S/Inputs/resource_dir \
55// RUN: --sysroot=%S/Inputs/basic_freebsd_tree \
56// RUN: | FileCheck --check-prefix=CHECK-ASAN-FREEBSD %s
57//
58// CHECK-ASAN-FREEBSD: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
59// CHECK-ASAN-FREEBSD-NOT: "-lc"
60// CHECK-ASAN-FREEBSD: freebsd{{/|\\+}}libclang_rt.asan-i386.a"
61// CHECK-ASAN-FREEBSD: "-lpthread"
62// CHECK-ASAN-FREEBSD: "-lrt"
63// CHECK-ASAN-FREEBSD: "-export-dynamic"
64// CHECK-ASAN-FREEBSD-NOT: "--dynamic-list"
65
66// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
67// RUN: -target i386-unknown-freebsd -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-LDL %s
71//
72// CHECK-ASAN-FREEBSD-LDL: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
73// CHECK-ASAN-FREEBSD-LDL-NOT: "-ldl"
74
Alexey Samsonov86143042013-02-27 11:14:55 +000075// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
76// RUN: -target i386-unknown-linux -fsanitize=address \
Richard Smith76e6e132013-03-23 00:30:08 +000077// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
Alexey Samsonov86143042013-02-27 11:14:55 +000078// RUN: --sysroot=%S/Inputs/basic_linux_tree \
79// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s
80//
81// CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
82// CHECK-ASAN-LINUX-CXX-NOT: "-lc"
83// CHECK-ASAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
84// CHECK-ASAN-LINUX-CXX: "-lpthread"
Evgeniy Stepanov3a8aff92013-05-24 14:28:03 +000085// CHECK-ASAN-LINUX-CXX: "-lrt"
Alexey Samsonov86143042013-02-27 11:14:55 +000086// CHECK-ASAN-LINUX-CXX: "-ldl"
87// CHECK-ASAN-LINUX-CXX: "-export-dynamic"
Richard Smith76e6e132013-03-23 00:30:08 +000088// CHECK-ASAN-LINUX-CXX-NOT: "--dynamic-list"
Alexey Samsonov86143042013-02-27 11:14:55 +000089// CHECK-ASAN-LINUX-CXX: stdc++
90
91// RUN: %clang -no-canonical-prefixes %s -### -o /dev/null -fsanitize=address \
92// RUN: -target i386-unknown-linux --sysroot=%S/Inputs/basic_linux_tree \
93// RUN: -lstdc++ -static 2>&1 \
94// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX-STATIC %s
95//
96// CHECK-ASAN-LINUX-CXX-STATIC: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
97// CHECK-ASAN-LINUX-CXX-STATIC-NOT: stdc++
98// CHECK-ASAN-LINUX-CXX-STATIC: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
99// CHECK-ASAN-LINUX-CXX-STATIC: stdc++
100
101// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Stephen Hines651f13c2014-04-23 16:59:28 -0700102// RUN: -target arm-linux-gnueabi -fsanitize=address \
103// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
104// RUN: | FileCheck --check-prefix=CHECK-ASAN-ARM %s
105//
106// CHECK-ASAN-ARM: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
107// CHECK-ASAN-ARM-NOT: "-lc"
108// CHECK-ASAN-ARM: libclang_rt.asan-arm.a"
109//
110// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
111// RUN: -target armv7l-linux-gnueabi -fsanitize=address \
112// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
113// RUN: | FileCheck --check-prefix=CHECK-ASAN-ARMv7 %s
114//
115// CHECK-ASAN-ARMv7: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
116// CHECK-ASAN-ARMv7-NOT: "-lc"
117// CHECK-ASAN-ARMv7: libclang_rt.asan-arm.a"
118
119// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Samsonov86143042013-02-27 11:14:55 +0000120// RUN: -target arm-linux-androideabi -fsanitize=address \
121// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
122// RUN: | FileCheck --check-prefix=CHECK-ASAN-ANDROID %s
123//
124// CHECK-ASAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
125// CHECK-ASAN-ANDROID-NOT: "-lc"
126// CHECK-ASAN-ANDROID: libclang_rt.asan-arm-android.so"
127// CHECK-ASAN-ANDROID-NOT: "-lpthread"
Stephen Hines651f13c2014-04-23 16:59:28 -0700128// CHECK-ASAN-ANDROID: "-pie"
129// CHECK-ASAN-ANDROID-NOT: "-lpthread"
Alexey Samsonov86143042013-02-27 11:14:55 +0000130//
131// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
132// RUN: -target arm-linux-androideabi -fsanitize=address \
133// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
134// RUN: -shared \
135// RUN: | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED %s
136//
137// CHECK-ASAN-ANDROID-SHARED: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
138// CHECK-ASAN-ANDROID-SHARED-NOT: "-lc"
139// CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan-arm-android.so"
140// CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread"
141
142// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
143// RUN: -target x86_64-unknown-linux -lstdc++ -fsanitize=thread \
Richard Smith76e6e132013-03-23 00:30:08 +0000144// RUN: -resource-dir=%S/Inputs/resource_dir \
Alexey Samsonov86143042013-02-27 11:14:55 +0000145// RUN: --sysroot=%S/Inputs/basic_linux_tree \
146// RUN: | FileCheck --check-prefix=CHECK-TSAN-LINUX-CXX %s
147//
148// CHECK-TSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
149// CHECK-TSAN-LINUX-CXX-NOT: stdc++
150// CHECK-TSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.tsan-x86_64.a" "-no-whole-archive"
151// CHECK-TSAN-LINUX-CXX: "-lpthread"
Evgeniy Stepanov3a8aff92013-05-24 14:28:03 +0000152// CHECK-TSAN-LINUX-CXX: "-lrt"
Alexey Samsonov86143042013-02-27 11:14:55 +0000153// CHECK-TSAN-LINUX-CXX: "-ldl"
Richard Smith76e6e132013-03-23 00:30:08 +0000154// CHECK-TSAN-LINUX-CXX-NOT: "-export-dynamic"
155// CHECK-TSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.tsan-x86_64.a.syms"
Alexey Samsonov86143042013-02-27 11:14:55 +0000156// CHECK-TSAN-LINUX-CXX: stdc++
157
158// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
159// RUN: -target x86_64-unknown-linux -lstdc++ -fsanitize=memory \
Richard Smith76e6e132013-03-23 00:30:08 +0000160// RUN: -resource-dir=%S/Inputs/resource_dir \
Alexey Samsonov86143042013-02-27 11:14:55 +0000161// RUN: --sysroot=%S/Inputs/basic_linux_tree \
162// RUN: | FileCheck --check-prefix=CHECK-MSAN-LINUX-CXX %s
163//
164// CHECK-MSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
165// CHECK-MSAN-LINUX-CXX-NOT: stdc++
166// CHECK-MSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.msan-x86_64.a" "-no-whole-archive"
167// CHECK-MSAN-LINUX-CXX: "-lpthread"
Evgeniy Stepanov3a8aff92013-05-24 14:28:03 +0000168// CHECK-MSAN-LINUX-CXX: "-lrt"
Alexey Samsonov86143042013-02-27 11:14:55 +0000169// CHECK-MSAN-LINUX-CXX: "-ldl"
Richard Smith76e6e132013-03-23 00:30:08 +0000170// CHECK-MSAN-LINUX-CXX-NOT: "-export-dynamic"
171// CHECK-MSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.msan-x86_64.a.syms"
Alexey Samsonov86143042013-02-27 11:14:55 +0000172// CHECK-MSAN-LINUX-CXX: stdc++
173
174// RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
175// RUN: -target i386-unknown-linux \
176// RUN: --sysroot=%S/Inputs/basic_linux_tree \
177// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s
178// CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
Richard Smith61a574f2013-03-20 23:49:07 +0000179// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
Peter Collingbournebf548552013-10-20 21:29:13 +0000180// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
Nick Lewycky63d29e22013-10-19 00:27:23 +0000181// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
Peter Collingbournebf548552013-10-20 21:29:13 +0000182// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
183// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
Alexey Samsonov86143042013-02-27 11:14:55 +0000184// CHECK-UBSAN-LINUX: "-lpthread"
Richard Smith61a574f2013-03-20 23:49:07 +0000185// CHECK-UBSAN-LINUX-NOT: "-lstdc++"
186
187// RUN: %clangxx -fsanitize=undefined %s -### -o %t.o 2>&1 \
188// RUN: -target i386-unknown-linux \
189// RUN: --sysroot=%S/Inputs/basic_linux_tree \
190// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-CXX %s
191// CHECK-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
192// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
Peter Collingbournebf548552013-10-20 21:29:13 +0000193// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
Richard Smith61a574f2013-03-20 23:49:07 +0000194// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
Peter Collingbournebf548552013-10-20 21:29:13 +0000195// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
196// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
Richard Smith61a574f2013-03-20 23:49:07 +0000197// CHECK-UBSAN-LINUX-CXX: "-lpthread"
198// CHECK-UBSAN-LINUX-CXX: "-lstdc++"
199
200// RUN: %clang -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
201// RUN: -target i386-unknown-linux \
202// RUN: --sysroot=%S/Inputs/basic_linux_tree \
203// RUN: | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX %s
204// CHECK-ASAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
205// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
206// CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
207// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
Peter Collingbournebf548552013-10-20 21:29:13 +0000208// CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
Richard Smith61a574f2013-03-20 23:49:07 +0000209// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
210// CHECK-ASAN-UBSAN-LINUX: "-lpthread"
211// CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++"
212
213// RUN: %clangxx -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
214// RUN: -target i386-unknown-linux \
215// RUN: --sysroot=%S/Inputs/basic_linux_tree \
216// RUN: | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX-CXX %s
217// CHECK-ASAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
218// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
219// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
220// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
Peter Collingbournebf548552013-10-20 21:29:13 +0000221// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
222// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
Richard Smith61a574f2013-03-20 23:49:07 +0000223// CHECK-ASAN-UBSAN-LINUX-CXX: "-lpthread"
224// CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++"
Alexey Samsonov86143042013-02-27 11:14:55 +0000225
226// RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
227// RUN: -target i386-unknown-linux \
228// RUN: --sysroot=%S/Inputs/basic_linux_tree \
229// RUN: -shared \
230// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHARED %s
231// CHECK-UBSAN-LINUX-SHARED: "{{.*}}ld{{(.exe)?}}"
Nick Lewycky1f8d6632013-08-13 22:32:35 +0000232// CHECK-UBSAN-LINUX-SHARED: libclang_rt.ubsan-i386.a"
Sergey Matveev050309f2013-05-27 11:17:01 +0000233
234// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
235// RUN: -target x86_64-unknown-linux -fsanitize=leak \
236// RUN: --sysroot=%S/Inputs/basic_linux_tree \
237// RUN: | FileCheck --check-prefix=CHECK-LSAN-LINUX %s
238//
239// CHECK-LSAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
240// CHECK-LSAN-LINUX-NOT: "-lc"
241// CHECK-LSAN-LINUX: libclang_rt.lsan-x86_64.a"
242// CHECK-LSAN-LINUX: "-lpthread"
243// CHECK-LSAN-LINUX: "-ldl"
244
245// RUN: %clang -fsanitize=leak,undefined %s -### -o %t.o 2>&1 \
246// RUN: -target x86_64-unknown-linux \
247// RUN: --sysroot=%S/Inputs/basic_linux_tree \
248// RUN: | FileCheck --check-prefix=CHECK-LSAN-UBSAN-LINUX %s
249// CHECK-LSAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
250// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san
251// CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.lsan-x86_64.a" "-no-whole-archive"
252// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san
Peter Collingbournebf548552013-10-20 21:29:13 +0000253// CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-x86_64.a" "-no-whole-archive"
Sergey Matveev050309f2013-05-27 11:17:01 +0000254// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
255// CHECK-LSAN-UBSAN-LINUX: "-lpthread"
256// CHECK-LSAN-UBSAN-LINUX-NOT: "-lstdc++"
257
258// RUN: %clang -fsanitize=leak,address %s -### -o %t.o 2>&1 \
259// RUN: -target x86_64-unknown-linux \
260// RUN: --sysroot=%S/Inputs/basic_linux_tree \
261// RUN: | FileCheck --check-prefix=CHECK-LSAN-ASAN-LINUX %s
262// CHECK-LSAN-ASAN-LINUX: "{{.*}}ld{{(.exe)?}}"
263// CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan
264// CHECK-LSAN-ASAN-LINUX: libclang_rt.asan-x86_64
265// CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan