diff options
author | Vedant Kumar <vsk@apple.com> | 2017-09-11 21:37:06 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2017-09-11 21:37:06 +0000 |
commit | f56f77f5c829ba6b50fc0747016df532fa98cb9f (patch) | |
tree | eab54cf37194fb55688d442afbb28fa07d7e45ab | |
parent | 90c80a32834f2df93ea1f91dc062c03092d8f783 (diff) | |
download | bcm5719-llvm-f56f77f5c829ba6b50fc0747016df532fa98cb9f.tar.gz bcm5719-llvm-f56f77f5c829ba6b50fc0747016df532fa98cb9f.zip |
[Driver] Support ubsan-minimal on Darwin
Make it possible to use the minimal ubsan runtime on Darwin.
Differential Revision: https://reviews.llvm.org/D37649
llvm-svn: 312958
-rw-r--r-- | clang/lib/Driver/ToolChains/Darwin.cpp | 4 | ||||
-rw-r--r-- | clang/test/Driver/sanitizer-ld.c | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index 7cbbc80f306..8ef76867e0d 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -1039,7 +1039,9 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args, if (Sanitize.needsLsanRt()) AddLinkSanitizerLibArgs(Args, CmdArgs, "lsan"); if (Sanitize.needsUbsanRt()) - AddLinkSanitizerLibArgs(Args, CmdArgs, "ubsan"); + AddLinkSanitizerLibArgs(Args, CmdArgs, + Sanitize.requiresMinimalRuntime() ? "ubsan_minimal" + : "ubsan"); if (Sanitize.needsTsanRt()) AddLinkSanitizerLibArgs(Args, CmdArgs, "tsan"); if (Sanitize.needsFuzzer() && !Args.hasArg(options::OPT_dynamiclib)) { diff --git a/clang/test/Driver/sanitizer-ld.c b/clang/test/Driver/sanitizer-ld.c index 45e5d004cd2..ec386be1c1a 100644 --- a/clang/test/Driver/sanitizer-ld.c +++ b/clang/test/Driver/sanitizer-ld.c @@ -254,6 +254,13 @@ // CHECK-UBSAN-MINIMAL-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan_minimal-i386.a" "-no-whole-archive" // CHECK-UBSAN-MINIMAL-LINUX: "-lpthread" +// RUN: %clang -fsanitize=undefined -fsanitize-minimal-runtime %s -### -o %t.o 2>&1 \ +// RUN: -target x86_64-apple-darwin -fuse-ld=ld \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: | FileCheck --check-prefix=CHECK-UBSAN-MINIMAL-DARWIN %s +// CHECK-UBSAN-MINIMAL-DARWIN: "{{.*}}ld{{(.exe)?}}" +// CHECK-UBSAN-MINIMAL-DARWIN: "{{.*}}libclang_rt.ubsan_minimal_osx_dynamic.dylib" + // RUN: %clang -fsanitize=address,undefined %s -### -o %t.o 2>&1 \ // RUN: -target i386-unknown-linux -fuse-ld=ld \ // RUN: --sysroot=%S/Inputs/basic_linux_tree \ |