Skip to content

Commit 6787146

Browse files
committed
[𝘀𝗽𝗿] initial version
Created using spr 1.3.4
1 parent 55e87a7 commit 6787146

File tree

3 files changed

+70
-6
lines changed

3 files changed

+70
-6
lines changed

clang/lib/Driver/SanitizerArgs.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,10 +1098,11 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC,
10981098
options::OPT_fno_sanitize_link_runtime, LinkRuntimes);
10991099

11001100
// Parse -link-cxx-sanitizer flag.
1101-
LinkCXXRuntimes = Args.hasArg(options::OPT_fsanitize_link_cxx_runtime,
1102-
options::OPT_fno_sanitize_link_cxx_runtime,
1103-
LinkCXXRuntimes) ||
1104-
D.CCCIsCXX();
1101+
LinkCXXRuntimes =
1102+
D.CCCIsCXX() && !Args.hasArg(clang::driver::options::OPT_nostdlibxx);
1103+
LinkCXXRuntimes =
1104+
Args.hasFlag(options::OPT_fsanitize_link_cxx_runtime,
1105+
options::OPT_fno_sanitize_link_cxx_runtime, LinkCXXRuntimes);
11051106

11061107
NeedsMemProfRt = Args.hasFlag(options::OPT_fmemory_profile,
11071108
options::OPT_fmemory_profile_EQ,

clang/test/Driver/sanitizer-ld.c

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,14 @@
132132
// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
133133
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
134134
// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s
135-
//
135+
136+
// RUN: %clangxx -### %s 2>&1 \
137+
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \
138+
// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
139+
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
140+
// RUN: -fsanitize-link-c++-runtime \
141+
// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s
142+
136143
// CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
137144
// CHECK-ASAN-LINUX-CXX-NOT: "-lc"
138145
// CHECK-ASAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"
@@ -145,6 +152,62 @@
145152
// CHECK-ASAN-LINUX-CXX: "-ldl"
146153
// CHECK-ASAN-LINUX-CXX: "-lresolv"
147154

155+
// RUN: %clang -### %s 2>&1 \
156+
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \
157+
// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
158+
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
159+
// RUN: -fno-sanitize-link-c++-runtime \
160+
// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CNOCXX %s
161+
162+
// CHECK-ASAN-LINUX-CNOCXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
163+
// CHECK-ASAN-LINUX-CNOCXX-NOT: "-lc"
164+
// CHECK-ASAN-LINUX-CNOCXX: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"
165+
// CHECK-ASAN-LINUX-CNOCXX-NOT: libclang_rt.asan_cxx
166+
// CHECK-ASAN-LINUX-CNOCXX-NOT: "--dynamic-list"
167+
// CHECK-ASAN-LINUX-CNOCXX: "--export-dynamic"
168+
// CHECK-ASAN-LINUX-CNOCXX-NOT: stdc++
169+
// CHECK-ASAN-LINUX-CNOCXX: "-lpthread"
170+
// CHECK-ASAN-LINUX-CNOCXX: "-lrt"
171+
// CHECK-ASAN-LINUX-CNOCXX: "-ldl"
172+
// CHECK-ASAN-LINUX-CNOCXX: "-lresolv"
173+
174+
// RUN: %clangxx -### %s 2>&1 \
175+
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \
176+
// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
177+
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
178+
// RUN: -fno-sanitize-link-c++-runtime \
179+
// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-NOCXX %s
180+
181+
// CHECK-ASAN-LINUX-NOCXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
182+
// CHECK-ASAN-LINUX-NOCXX-NOT: "-lc"
183+
// CHECK-ASAN-LINUX-NOCXX: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"
184+
// CHECK-ASAN-LINUX-NOCXX-NOT: libclang_rt.asan_cxx
185+
// CHECK-ASAN-LINUX-NOCXX-NOT: "--dynamic-list"
186+
// CHECK-ASAN-LINUX-NOCXX: "--export-dynamic"
187+
// CHECK-ASAN-LINUX-NOCXX: stdc++
188+
// CHECK-ASAN-LINUX-NOCXX: "-lpthread"
189+
// CHECK-ASAN-LINUX-NOCXX: "-lrt"
190+
// CHECK-ASAN-LINUX-NOCXX: "-ldl"
191+
// CHECK-ASAN-LINUX-NOCXX: "-lresolv"
192+
193+
// RUN: %clangxx -### %s 2>&1 \
194+
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \
195+
// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
196+
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
197+
// RUN: -nostdlib++ \
198+
// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-NOSTDCXX %s
199+
200+
// CHECK-ASAN-LINUX-NOSTDCXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
201+
// CHECK-ASAN-LINUX-NOSTDCXX-NOT: "-lc"
202+
// CHECK-ASAN-LINUX-NOSTDCXX: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"
203+
// CHECK-ASAN-LINUX-NOSTDCXX-NOT: libclang_rt.asan_cxx
204+
// CHECK-ASAN-LINUX-NOSTDCXX-NOT: "--dynamic-list"
205+
// CHECK-ASAN-LINUX-NOSTDCXX: "--export-dynamic"
206+
// CHECK-ASAN-LINUX-NOSTDCXX: "-lpthread"
207+
// CHECK-ASAN-LINUX-NOSTDCXX: "-lrt"
208+
// CHECK-ASAN-LINUX-NOSTDCXX: "-ldl"
209+
// CHECK-ASAN-LINUX-NOSTDCXX: "-lresolv"
210+
148211
// RUN: %clang -### %s -o /dev/null -fsanitize=address \
149212
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform \
150213
// RUN: -resource-dir=%S/Inputs/resource_dir \

compiler-rt/test/hwasan/TestCases/sizes.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// This test requires operator new to be intercepted by the hwasan runtime,
22
// so we need to avoid linking against libc++.
3-
// RUN: %clangxx_hwasan %s -nostdlib++ -lstdc++ -o %t || %clangxx_hwasan %s -o %t
3+
// RUN: %clangxx_hwasan %s -nostdlib++ -lstdc++ -fsanitize-link-c++-runtime -o %t || %clangxx_hwasan %s -o %t
44
// RUN: %env_hwasan_opts=allocator_may_return_null=0 not %run %t malloc 2>&1 | FileCheck %s --check-prefix=CHECK-max
55
// RUN: %env_hwasan_opts=allocator_may_return_null=1 %run %t malloc 2>&1
66
// RUN: %env_hwasan_opts=allocator_may_return_null=0 not %run %t malloc max 2>&1 | FileCheck %s --check-prefix=CHECK-max

0 commit comments

Comments
 (0)