blob: 57f33d8737a2d654fa1cfdbd6f9273e08c525535 [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
18// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
19// RUN: -target i386-unknown-linux -fsanitize=address \
Richard Smithf3e624c2013-03-23 00:30:08 +000020// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000021// RUN: --sysroot=%S/Inputs/basic_linux_tree \
22// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s
23//
24// CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
25// CHECK-ASAN-LINUX-CXX-NOT: "-lc"
26// CHECK-ASAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
27// CHECK-ASAN-LINUX-CXX: "-lpthread"
Evgeniy Stepanov758b5072013-05-24 14:28:03 +000028// CHECK-ASAN-LINUX-CXX: "-lrt"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000029// CHECK-ASAN-LINUX-CXX: "-ldl"
30// CHECK-ASAN-LINUX-CXX: "-export-dynamic"
Richard Smithf3e624c2013-03-23 00:30:08 +000031// CHECK-ASAN-LINUX-CXX-NOT: "--dynamic-list"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000032// CHECK-ASAN-LINUX-CXX: stdc++
33
34// RUN: %clang -no-canonical-prefixes %s -### -o /dev/null -fsanitize=address \
35// RUN: -target i386-unknown-linux --sysroot=%S/Inputs/basic_linux_tree \
36// RUN: -lstdc++ -static 2>&1 \
37// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX-STATIC %s
38//
39// CHECK-ASAN-LINUX-CXX-STATIC: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
40// CHECK-ASAN-LINUX-CXX-STATIC-NOT: stdc++
41// CHECK-ASAN-LINUX-CXX-STATIC: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
42// CHECK-ASAN-LINUX-CXX-STATIC: stdc++
43
44// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Renato Goline2dbedd2014-01-31 12:21:55 +000045// RUN: -target arm-linux-gnueabi -fsanitize=address \
46// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
47// RUN: | FileCheck --check-prefix=CHECK-ASAN-ARM %s
48//
49// CHECK-ASAN-ARM: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
50// CHECK-ASAN-ARM-NOT: "-lc"
51// CHECK-ASAN-ARM: libclang_rt.asan-arm.a"
52//
53// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
54// RUN: -target armv7l-linux-gnueabi -fsanitize=address \
55// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
56// RUN: | FileCheck --check-prefix=CHECK-ASAN-ARMv7 %s
57//
58// CHECK-ASAN-ARMv7: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
59// CHECK-ASAN-ARMv7-NOT: "-lc"
60// CHECK-ASAN-ARMv7: libclang_rt.asan-arm.a"
61//
62
63// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000064// RUN: -target arm-linux-androideabi -fsanitize=address \
65// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
66// RUN: | FileCheck --check-prefix=CHECK-ASAN-ANDROID %s
67//
68// CHECK-ASAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
69// CHECK-ASAN-ANDROID-NOT: "-lc"
70// CHECK-ASAN-ANDROID: libclang_rt.asan-arm-android.so"
71// CHECK-ASAN-ANDROID-NOT: "-lpthread"
Alexey Samsonove65ceb92014-02-25 13:26:03 +000072// CHECK-ASAN-ANDROID: "-pie"
73// CHECK-ASAN-ANDROID-NOT: "-lpthread"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000074//
75// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
76// RUN: -target arm-linux-androideabi -fsanitize=address \
77// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
78// RUN: -shared \
79// RUN: | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED %s
80//
81// CHECK-ASAN-ANDROID-SHARED: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
82// CHECK-ASAN-ANDROID-SHARED-NOT: "-lc"
83// CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan-arm-android.so"
84// CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread"
85
86// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
87// RUN: -target x86_64-unknown-linux -lstdc++ -fsanitize=thread \
Richard Smithf3e624c2013-03-23 00:30:08 +000088// RUN: -resource-dir=%S/Inputs/resource_dir \
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000089// RUN: --sysroot=%S/Inputs/basic_linux_tree \
90// RUN: | FileCheck --check-prefix=CHECK-TSAN-LINUX-CXX %s
91//
92// CHECK-TSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
93// CHECK-TSAN-LINUX-CXX-NOT: stdc++
94// CHECK-TSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.tsan-x86_64.a" "-no-whole-archive"
95// CHECK-TSAN-LINUX-CXX: "-lpthread"
Evgeniy Stepanov758b5072013-05-24 14:28:03 +000096// CHECK-TSAN-LINUX-CXX: "-lrt"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +000097// CHECK-TSAN-LINUX-CXX: "-ldl"
Richard Smithf3e624c2013-03-23 00:30:08 +000098// CHECK-TSAN-LINUX-CXX-NOT: "-export-dynamic"
99// CHECK-TSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.tsan-x86_64.a.syms"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000100// CHECK-TSAN-LINUX-CXX: stdc++
101
102// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
103// RUN: -target x86_64-unknown-linux -lstdc++ -fsanitize=memory \
Richard Smithf3e624c2013-03-23 00:30:08 +0000104// RUN: -resource-dir=%S/Inputs/resource_dir \
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000105// RUN: --sysroot=%S/Inputs/basic_linux_tree \
106// RUN: | FileCheck --check-prefix=CHECK-MSAN-LINUX-CXX %s
107//
108// CHECK-MSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
109// CHECK-MSAN-LINUX-CXX-NOT: stdc++
110// CHECK-MSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.msan-x86_64.a" "-no-whole-archive"
111// CHECK-MSAN-LINUX-CXX: "-lpthread"
Evgeniy Stepanov758b5072013-05-24 14:28:03 +0000112// CHECK-MSAN-LINUX-CXX: "-lrt"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000113// CHECK-MSAN-LINUX-CXX: "-ldl"
Richard Smithf3e624c2013-03-23 00:30:08 +0000114// CHECK-MSAN-LINUX-CXX-NOT: "-export-dynamic"
115// CHECK-MSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.msan-x86_64.a.syms"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000116// CHECK-MSAN-LINUX-CXX: stdc++
117
118// RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
119// RUN: -target i386-unknown-linux \
120// RUN: --sysroot=%S/Inputs/basic_linux_tree \
121// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s
122// CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
Richard Smithcff3cde2013-03-20 23:49:07 +0000123// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000124// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
Nick Lewycky24921692013-10-19 00:27:23 +0000125// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000126// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
127// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000128// CHECK-UBSAN-LINUX: "-lpthread"
Richard Smithcff3cde2013-03-20 23:49:07 +0000129// CHECK-UBSAN-LINUX-NOT: "-lstdc++"
130
131// RUN: %clangxx -fsanitize=undefined %s -### -o %t.o 2>&1 \
132// RUN: -target i386-unknown-linux \
133// RUN: --sysroot=%S/Inputs/basic_linux_tree \
134// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-CXX %s
135// CHECK-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
136// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000137// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
Richard Smithcff3cde2013-03-20 23:49:07 +0000138// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000139// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
140// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
Richard Smithcff3cde2013-03-20 23:49:07 +0000141// CHECK-UBSAN-LINUX-CXX: "-lpthread"
142// CHECK-UBSAN-LINUX-CXX: "-lstdc++"
143
144// RUN: %clang -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
145// RUN: -target i386-unknown-linux \
146// RUN: --sysroot=%S/Inputs/basic_linux_tree \
147// RUN: | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX %s
148// CHECK-ASAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
149// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
150// CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
151// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000152// CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
Richard Smithcff3cde2013-03-20 23:49:07 +0000153// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
154// CHECK-ASAN-UBSAN-LINUX: "-lpthread"
155// CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++"
156
157// RUN: %clangxx -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
158// RUN: -target i386-unknown-linux \
159// RUN: --sysroot=%S/Inputs/basic_linux_tree \
160// RUN: | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX-CXX %s
161// CHECK-ASAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
162// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
163// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
164// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000165// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
166// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
Richard Smithcff3cde2013-03-20 23:49:07 +0000167// CHECK-ASAN-UBSAN-LINUX-CXX: "-lpthread"
168// CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++"
Alexey Samsonovbfb0cd32013-02-27 11:14:55 +0000169
170// RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
171// RUN: -target i386-unknown-linux \
172// RUN: --sysroot=%S/Inputs/basic_linux_tree \
173// RUN: -shared \
174// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHARED %s
175// CHECK-UBSAN-LINUX-SHARED: "{{.*}}ld{{(.exe)?}}"
Nick Lewyckybbd6db82013-08-13 22:32:35 +0000176// CHECK-UBSAN-LINUX-SHARED: libclang_rt.ubsan-i386.a"
Sergey Matveev1814e9e2013-05-27 11:17:01 +0000177
178// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
179// RUN: -target x86_64-unknown-linux -fsanitize=leak \
180// RUN: --sysroot=%S/Inputs/basic_linux_tree \
181// RUN: | FileCheck --check-prefix=CHECK-LSAN-LINUX %s
182//
183// CHECK-LSAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
184// CHECK-LSAN-LINUX-NOT: "-lc"
185// CHECK-LSAN-LINUX: libclang_rt.lsan-x86_64.a"
186// CHECK-LSAN-LINUX: "-lpthread"
187// CHECK-LSAN-LINUX: "-ldl"
188
189// RUN: %clang -fsanitize=leak,undefined %s -### -o %t.o 2>&1 \
190// RUN: -target x86_64-unknown-linux \
191// RUN: --sysroot=%S/Inputs/basic_linux_tree \
192// RUN: | FileCheck --check-prefix=CHECK-LSAN-UBSAN-LINUX %s
193// CHECK-LSAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
194// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san
195// CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.lsan-x86_64.a" "-no-whole-archive"
196// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san
Peter Collingbournef7ef3fd812013-10-20 21:29:13 +0000197// CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-x86_64.a" "-no-whole-archive"
Sergey Matveev1814e9e2013-05-27 11:17:01 +0000198// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
199// CHECK-LSAN-UBSAN-LINUX: "-lpthread"
200// CHECK-LSAN-UBSAN-LINUX-NOT: "-lstdc++"
201
202// RUN: %clang -fsanitize=leak,address %s -### -o %t.o 2>&1 \
203// RUN: -target x86_64-unknown-linux \
204// RUN: --sysroot=%S/Inputs/basic_linux_tree \
205// RUN: | FileCheck --check-prefix=CHECK-LSAN-ASAN-LINUX %s
206// CHECK-LSAN-ASAN-LINUX: "{{.*}}ld{{(.exe)?}}"
207// CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan
208// CHECK-LSAN-ASAN-LINUX: libclang_rt.asan-x86_64
209// CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan