diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2017-08-21 23:25:19 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2017-08-21 23:25:19 +0000 |
commit | 9f6f74c2c5ef8bb1e9fa9b0f2c7c3e31d69e62ac (patch) | |
tree | dee501ac0c151da60259114056f55bb15467d5f8 /clang/lib/Driver/ToolChains/Darwin.cpp | |
parent | 748bf121bbd41fb1a8e6758fd0059687757f7535 (diff) | |
download | bcm5719-llvm-9f6f74c2c5ef8bb1e9fa9b0f2c7c3e31d69e62ac.tar.gz bcm5719-llvm-9f6f74c2c5ef8bb1e9fa9b0f2c7c3e31d69e62ac.zip |
Moving libFuzzer to compiler-rt: required updates to the Clang driver.
Differential Revision: https://reviews.llvm.org/D36909
llvm-svn: 311406
Diffstat (limited to 'clang/lib/Driver/ToolChains/Darwin.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains/Darwin.cpp | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index 84d684c05b8..ad73303a517 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -930,18 +930,6 @@ void MachO::AddLinkRuntimeLib(const ArgList &Args, ArgStringList &CmdArgs, } } -void MachO::AddFuzzerLinkArgs(const ArgList &Args, ArgStringList &CmdArgs) const { - - // Go up one directory from Clang to find the libfuzzer archive file. - StringRef ParentDir = llvm::sys::path::parent_path(getDriver().InstalledDir); - SmallString<128> P(ParentDir); - llvm::sys::path::append(P, "lib", "libLLVMFuzzer.a"); - CmdArgs.push_back(Args.MakeArgString(P)); - - // Libfuzzer is written in C++ and requires libcxx. - AddCXXStdlibLibArgs(Args, CmdArgs); -} - StringRef Darwin::getPlatformFamily() const { switch (TargetPlatform) { case DarwinPlatformKind::MacOS: @@ -1003,11 +991,12 @@ void Darwin::addProfileRTLibs(const ArgList &Args, void DarwinClang::AddLinkSanitizerLibArgs(const ArgList &Args, ArgStringList &CmdArgs, - StringRef Sanitizer) const { + StringRef Sanitizer, + bool Shared) const { AddLinkRuntimeLib( Args, CmdArgs, (Twine("libclang_rt.") + Sanitizer + "_" + - getOSLibraryNameSuffix() + "_dynamic.dylib").str(), + getOSLibraryNameSuffix() + (Shared ? "_dynamic.dylib" : ".a")).str(), /*AlwaysLink*/ true, /*IsEmbedded*/ false, /*AddRPath*/ true); } @@ -1053,8 +1042,12 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args, AddLinkSanitizerLibArgs(Args, CmdArgs, "ubsan"); if (Sanitize.needsTsanRt()) AddLinkSanitizerLibArgs(Args, CmdArgs, "tsan"); - if (Sanitize.needsFuzzer() && !Args.hasArg(options::OPT_dynamiclib)) - AddFuzzerLinkArgs(Args, CmdArgs); + if (Sanitize.needsFuzzer() && !Args.hasArg(options::OPT_dynamiclib)) { + AddLinkSanitizerLibArgs(Args, CmdArgs, "fuzzer", /*shared=*/false); + + // Libfuzzer is written in C++ and requires libcxx. + AddCXXStdlibLibArgs(Args, CmdArgs); + } if (Sanitize.needsStatsRt()) { StringRef OS = isTargetMacOS() ? "osx" : "iossim"; AddLinkRuntimeLib(Args, CmdArgs, |