Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions clang/lib/Driver/SanitizerArgs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1106,10 +1106,10 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC,
options::OPT_fno_sanitize_link_runtime, LinkRuntimes);

// Parse -link-cxx-sanitizer flag.
LinkCXXRuntimes = Args.hasArg(options::OPT_fsanitize_link_cxx_runtime,
options::OPT_fno_sanitize_link_cxx_runtime,
LinkCXXRuntimes) ||
D.CCCIsCXX();
LinkCXXRuntimes = D.CCCIsCXX();
LinkCXXRuntimes =
Args.hasFlag(options::OPT_fsanitize_link_cxx_runtime,
options::OPT_fno_sanitize_link_cxx_runtime, LinkCXXRuntimes);

NeedsMemProfRt = Args.hasFlag(options::OPT_fmemory_profile,
options::OPT_fmemory_profile_EQ,
Expand Down
80 changes: 70 additions & 10 deletions clang/test/Driver/sanitizer-ld.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,18 +132,78 @@
// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s
//

// RUN: %clangxx -### %s 2>&1 \
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \
// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
// RUN: -fsanitize-link-c++-runtime \
// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s

// CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
// CHECK-ASAN-LINUX-CXX-NOT: "-lc"
// CHECK-ASAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"
// CHECK-ASAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.asan_cxx.a" "--no-whole-archive"
// CHECK-ASAN-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"
// CHECK-ASAN-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan_cxx.a" "--no-whole-archive"
// CHECK-ASAN-LINUX-CXX-NOT: "--dynamic-list"
// CHECK-ASAN-LINUX-CXX: "--export-dynamic"
// CHECK-ASAN-LINUX-CXX: stdc++
// CHECK-ASAN-LINUX-CXX: "-lpthread"
// CHECK-ASAN-LINUX-CXX: "-lrt"
// CHECK-ASAN-LINUX-CXX: "-ldl"
// CHECK-ASAN-LINUX-CXX: "-lresolv"
// CHECK-ASAN-LINUX-CXX-SAME: "--export-dynamic"
// CHECK-ASAN-LINUX-CXX-SAME: "-lstdc++"
// CHECK-ASAN-LINUX-CXX-SAME: "-lpthread"
// CHECK-ASAN-LINUX-CXX-SAME: "-lrt"
// CHECK-ASAN-LINUX-CXX-SAME: "-ldl"
// CHECK-ASAN-LINUX-CXX-SAME: "-lresolv"
// CHECK-ASAN-LINUX-CXX-SAME: "-lc"

// RUN: %clang -### %s 2>&1 \
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \
// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
// RUN: -fno-sanitize-link-c++-runtime \
// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CNOCXX %s

// CHECK-ASAN-LINUX-CNOCXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
// CHECK-ASAN-LINUX-CNOCXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"
// CHECK-ASAN-LINUX-CNOCXX-NOT: libclang_rt.asan_cxx
// CHECK-ASAN-LINUX-CNOCXX-SAME: "--export-dynamic"
// CHECK-ASAN-LINUX-CNOCXX-NOT: stdc++
// CHECK-ASAN-LINUX-CNOCXX-SAME: "-lpthread"
// CHECK-ASAN-LINUX-CNOCXX-SAME: "-lrt"
// CHECK-ASAN-LINUX-CNOCXX-SAME: "-ldl"
// CHECK-ASAN-LINUX-CNOCXX-SAME: "-lresolv"
// CHECK-ASAN-LINUX-CNOCXX-SAME: "-lc"

// RUN: %clangxx -### %s 2>&1 \
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \
// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
// RUN: -fno-sanitize-link-c++-runtime \
// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-NOCXX %s

// CHECK-ASAN-LINUX-NOCXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
// CHECK-ASAN-LINUX-NOCXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"
// CHECK-ASAN-LINUX-NOCXX-NOT: libclang_rt.asan_cxx
// CHECK-ASAN-LINUX-NOCXX-SAME: "--export-dynamic"
// CHECK-ASAN-LINUX-NOCXX-SAME: "-lstdc++"
// CHECK-ASAN-LINUX-NOCXX-SAME: "-lpthread"
// CHECK-ASAN-LINUX-NOCXX-SAME: "-lrt"
// CHECK-ASAN-LINUX-NOCXX-SAME: "-ldl"
// CHECK-ASAN-LINUX-NOCXX-SAME: "-lresolv"
// CHECK-ASAN-LINUX-NOCXX-SAME: "-lc"

// RUN: %clangxx -### %s 2>&1 \
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \
// RUN: -resource-dir=%S/Inputs/empty_resource_dir \
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
// RUN: -nostdlib++ \
// RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-NOSTDCXX %s

// CHECK-ASAN-LINUX-NOSTDCXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"
// CHECK-ASAN-LINUX-NOSTDCXX-SAME: libclang_rt.asan_cxx
// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "--export-dynamic"
// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "-lpthread"
// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "-lrt"
// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "-ldl"
// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "-lresolv"
// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "-lc"

// RUN: %clang -### %s -o /dev/null -fsanitize=address \
// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform \
Expand Down
Loading