blob: ee0d611964367312842b3782ac63941d7fda2ccd [file] [log] [blame]
Alexey Samsonovbfb0cd32013-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 Smithf3e624c2013-03-23 00:30:08 +00005// RUN: -resource-dir=%S/Inputs/resource_dir \
Alexey Samsonovbfb0cd32013-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 Stepanov758b5072013-05-24 14:28:03 +000013// CHECK-ASAN-LINUX: "-lrt"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000014// CHECK-ASAN-LINUX: "-ldl"
Richard Smithf3e624c2013-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 Samsonovbfb0cd32013-02-27 11:14:55 +000017
Viktor Kutuzovaa5b5f72014-03-18 09:36:50 +000018// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
19// RUN: -target i386-unknown-freebsd -fsanitize=address \
20// RUN: -resource-dir=%S/Inputs/resource_dir \
21// RUN: --sysroot=%S/Inputs/basic_freebsd_tree \
22// RUN: | FileCheck --check-prefix=CHECK-ASAN-FREEBSD %s
23//
24// CHECK-ASAN-FREEBSD: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
25// CHECK-ASAN-FREEBSD-NOT: "-lc"
26// CHECK-ASAN-FREEBSD: freebsd/libclang_rt.asan-i386.a"
27// CHECK-ASAN-FREEBSD: "-lpthread"
28// CHECK-ASAN-FREEBSD: "-lrt"
29// CHECK-ASAN-FREEBSD: "-export-dynamic"
30// CHECK-ASAN-FREEBSD-NOT: "--dynamic-list"
31
32// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
33// RUN: -target i386-unknown-freebsd -fsanitize=address \
34// RUN: -resource-dir=%S/Inputs/resource_dir \
35// RUN: --sysroot=%S/Inputs/basic_freebsd_tree \
36// RUN: | FileCheck --check-prefix=CHECK-ASAN-FREEBSD-LDL %s
37//
38// CHECK-ASAN-FREEBSD-LDL: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
39// CHECK-ASAN-FREEBSD-LDL-NOT: "-ldl"
40
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000041// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
42// RUN: -target i386-unknown-linux -fsanitize=address \
Richard Smithf3e624c2013-03-23 00:30:08 +000043// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000044// RUN: --sysroot=%S/Inputs/basic_linux_tree \
45// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s
46//
47// CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
48// CHECK-ASAN-LINUX-CXX-NOT: "-lc"
49// CHECK-ASAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
50// CHECK-ASAN-LINUX-CXX: "-lpthread"
Evgeniy Stepanov758b5072013-05-24 14:28:03 +000051// CHECK-ASAN-LINUX-CXX: "-lrt"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000052// CHECK-ASAN-LINUX-CXX: "-ldl"
53// CHECK-ASAN-LINUX-CXX: "-export-dynamic"
Richard Smithf3e624c2013-03-23 00:30:08 +000054// CHECK-ASAN-LINUX-CXX-NOT: "--dynamic-list"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000055// CHECK-ASAN-LINUX-CXX: stdc++
56
57// RUN: %clang -no-canonical-prefixes %s -### -o /dev/null -fsanitize=address \
58// RUN: -target i386-unknown-linux --sysroot=%S/Inputs/basic_linux_tree \
59// RUN: -lstdc++ -static 2>&1 \
60// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX-STATIC %s
61//
62// CHECK-ASAN-LINUX-CXX-STATIC: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
63// CHECK-ASAN-LINUX-CXX-STATIC-NOT: stdc++
64// CHECK-ASAN-LINUX-CXX-STATIC: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
65// CHECK-ASAN-LINUX-CXX-STATIC: stdc++
66
67// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Renato Goline2dbedd2014-01-31 12:21:55 +000068// RUN: -target arm-linux-gnueabi -fsanitize=address \
69// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
70// RUN: | FileCheck --check-prefix=CHECK-ASAN-ARM %s
71//
72// CHECK-ASAN-ARM: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
73// CHECK-ASAN-ARM-NOT: "-lc"
74// CHECK-ASAN-ARM: libclang_rt.asan-arm.a"
75//
76// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
77// RUN: -target armv7l-linux-gnueabi -fsanitize=address \
78// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
79// RUN: | FileCheck --check-prefix=CHECK-ASAN-ARMv7 %s
80//
81// CHECK-ASAN-ARMv7: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
82// CHECK-ASAN-ARMv7-NOT: "-lc"
83// CHECK-ASAN-ARMv7: libclang_rt.asan-arm.a"
84//
85
86// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000087// RUN: -target arm-linux-androideabi -fsanitize=address \
88// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
89// RUN: | FileCheck --check-prefix=CHECK-ASAN-ANDROID %s
90//
91// CHECK-ASAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
92// CHECK-ASAN-ANDROID-NOT: "-lc"
93// CHECK-ASAN-ANDROID: libclang_rt.asan-arm-android.so"
94// CHECK-ASAN-ANDROID-NOT: "-lpthread"
Alexey Samsonove65ceb92014-02-25 13:26:03 +000095// CHECK-ASAN-ANDROID: "-pie"
96// CHECK-ASAN-ANDROID-NOT: "-lpthread"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000097//
98// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
99// RUN: -target arm-linux-androideabi -fsanitize=address \
100// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
101// RUN: -shared \
102// RUN: | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED %s
103//
104// CHECK-ASAN-ANDROID-SHARED: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
105// CHECK-ASAN-ANDROID-SHARED-NOT: "-lc"
106// CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan-arm-android.so"
107// CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread"
108
109// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
110// RUN: -target x86_64-unknown-linux -lstdc++ -fsanitize=thread \
Richard Smithf3e624c2013-03-23 00:30:08 +0000111// RUN: -resource-dir=%S/Inputs/resource_dir \
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000112// RUN: --sysroot=%S/Inputs/basic_linux_tree \
113// RUN: | FileCheck --check-prefix=CHECK-TSAN-LINUX-CXX %s
114//
115// CHECK-TSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
116// CHECK-TSAN-LINUX-CXX-NOT: stdc++
117// CHECK-TSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.tsan-x86_64.a" "-no-whole-archive"
118// CHECK-TSAN-LINUX-CXX: "-lpthread"
Evgeniy Stepanov758b5072013-05-24 14:28:03 +0000119// CHECK-TSAN-LINUX-CXX: "-lrt"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000120// CHECK-TSAN-LINUX-CXX: "-ldl"
Richard Smithf3e624c2013-03-23 00:30:08 +0000121// CHECK-TSAN-LINUX-CXX-NOT: "-export-dynamic"
122// CHECK-TSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.tsan-x86_64.a.syms"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000123// CHECK-TSAN-LINUX-CXX: stdc++
124
125// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
126// RUN: -target x86_64-unknown-linux -lstdc++ -fsanitize=memory \
Richard Smithf3e624c2013-03-23 00:30:08 +0000127// RUN: -resource-dir=%S/Inputs/resource_dir \
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000128// RUN: --sysroot=%S/Inputs/basic_linux_tree \
129// RUN: | FileCheck --check-prefix=CHECK-MSAN-LINUX-CXX %s
130//
131// CHECK-MSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
132// CHECK-MSAN-LINUX-CXX-NOT: stdc++
133// CHECK-MSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.msan-x86_64.a" "-no-whole-archive"
134// CHECK-MSAN-LINUX-CXX: "-lpthread"
Evgeniy Stepanov758b5072013-05-24 14:28:03 +0000135// CHECK-MSAN-LINUX-CXX: "-lrt"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000136// CHECK-MSAN-LINUX-CXX: "-ldl"
Richard Smithf3e624c2013-03-23 00:30:08 +0000137// CHECK-MSAN-LINUX-CXX-NOT: "-export-dynamic"
138// CHECK-MSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.msan-x86_64.a.syms"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000139// CHECK-MSAN-LINUX-CXX: stdc++
140
141// RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
142// RUN: -target i386-unknown-linux \
143// RUN: --sysroot=%S/Inputs/basic_linux_tree \
144// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s
145// CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
Richard Smithcff3cde2013-03-20 23:49:07 +0000146// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000147// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
Nick Lewycky24921692013-10-19 00:27:23 +0000148// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000149// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
150// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000151// CHECK-UBSAN-LINUX: "-lpthread"
Richard Smithcff3cde2013-03-20 23:49:07 +0000152// CHECK-UBSAN-LINUX-NOT: "-lstdc++"
153
154// RUN: %clangxx -fsanitize=undefined %s -### -o %t.o 2>&1 \
155// RUN: -target i386-unknown-linux \
156// RUN: --sysroot=%S/Inputs/basic_linux_tree \
157// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-CXX %s
158// CHECK-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
159// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000160// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
Richard Smithcff3cde2013-03-20 23:49:07 +0000161// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000162// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
163// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
Richard Smithcff3cde2013-03-20 23:49:07 +0000164// CHECK-UBSAN-LINUX-CXX: "-lpthread"
165// CHECK-UBSAN-LINUX-CXX: "-lstdc++"
166
167// RUN: %clang -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
168// RUN: -target i386-unknown-linux \
169// RUN: --sysroot=%S/Inputs/basic_linux_tree \
170// RUN: | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX %s
171// CHECK-ASAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
172// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
173// CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
174// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000175// CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
Richard Smithcff3cde2013-03-20 23:49:07 +0000176// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
177// CHECK-ASAN-UBSAN-LINUX: "-lpthread"
178// CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++"
179
180// RUN: %clangxx -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
181// RUN: -target i386-unknown-linux \
182// RUN: --sysroot=%S/Inputs/basic_linux_tree \
183// RUN: | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX-CXX %s
184// CHECK-ASAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
185// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
186// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
187// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000188// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
189// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
Richard Smithcff3cde2013-03-20 23:49:07 +0000190// CHECK-ASAN-UBSAN-LINUX-CXX: "-lpthread"
191// CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000192
193// RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
194// RUN: -target i386-unknown-linux \
195// RUN: --sysroot=%S/Inputs/basic_linux_tree \
196// RUN: -shared \
197// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHARED %s
198// CHECK-UBSAN-LINUX-SHARED: "{{.*}}ld{{(.exe)?}}"
Nick Lewyckybbd6db82013-08-13 22:32:35 +0000199// CHECK-UBSAN-LINUX-SHARED: libclang_rt.ubsan-i386.a"
Sergey Matveev1814e9e2013-05-27 11:17:01 +0000200
201// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
202// RUN: -target x86_64-unknown-linux -fsanitize=leak \
203// RUN: --sysroot=%S/Inputs/basic_linux_tree \
204// RUN: | FileCheck --check-prefix=CHECK-LSAN-LINUX %s
205//
206// CHECK-LSAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
207// CHECK-LSAN-LINUX-NOT: "-lc"
208// CHECK-LSAN-LINUX: libclang_rt.lsan-x86_64.a"
209// CHECK-LSAN-LINUX: "-lpthread"
210// CHECK-LSAN-LINUX: "-ldl"
211
212// RUN: %clang -fsanitize=leak,undefined %s -### -o %t.o 2>&1 \
213// RUN: -target x86_64-unknown-linux \
214// RUN: --sysroot=%S/Inputs/basic_linux_tree \
215// RUN: | FileCheck --check-prefix=CHECK-LSAN-UBSAN-LINUX %s
216// CHECK-LSAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
217// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san
218// CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.lsan-x86_64.a" "-no-whole-archive"
219// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000220// CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-x86_64.a" "-no-whole-archive"
Sergey Matveev1814e9e2013-05-27 11:17:01 +0000221// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
222// CHECK-LSAN-UBSAN-LINUX: "-lpthread"
223// CHECK-LSAN-UBSAN-LINUX-NOT: "-lstdc++"
224
225// RUN: %clang -fsanitize=leak,address %s -### -o %t.o 2>&1 \
226// RUN: -target x86_64-unknown-linux \
227// RUN: --sysroot=%S/Inputs/basic_linux_tree \
228// RUN: | FileCheck --check-prefix=CHECK-LSAN-ASAN-LINUX %s
229// CHECK-LSAN-ASAN-LINUX: "{{.*}}ld{{(.exe)?}}"
230// CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan
231// CHECK-LSAN-ASAN-LINUX: libclang_rt.asan-x86_64
232// CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan