Author: george.karpenkov Date: Thu Jun 29 12:52:33 2017 New Revision: 306733
URL: http://llvm.org/viewvc/llvm-project?rev=306733&view=rev Log: [libFuzzer] Do not link in libFuzzer with -fsanitize=fuzzer when producing a shared object https://reviews.llvm.org/D34791 Modified: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp cfe/trunk/lib/Driver/ToolChains/Darwin.cpp cfe/trunk/test/Driver/fuzzer.c Modified: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp?rev=306733&r1=306732&r2=306733&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp Thu Jun 29 12:52:33 2017 @@ -617,7 +617,8 @@ bool tools::addSanitizerRuntimes(const T NonWholeStaticRuntimes, HelperStaticRuntimes, RequiredSymbols); // Inject libfuzzer dependencies. - if (TC.getSanitizerArgs().needsFuzzer()) { + if (TC.getSanitizerArgs().needsFuzzer() + && !Args.hasArg(options::OPT_shared)) { addLibFuzzerRuntime(TC, Args, CmdArgs); } Modified: cfe/trunk/lib/Driver/ToolChains/Darwin.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Darwin.cpp?rev=306733&r1=306732&r2=306733&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Darwin.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Darwin.cpp Thu Jun 29 12:52:33 2017 @@ -1053,7 +1053,7 @@ void DarwinClang::AddLinkRuntimeLibArgs( AddLinkSanitizerLibArgs(Args, CmdArgs, "ubsan"); if (Sanitize.needsTsanRt()) AddLinkSanitizerLibArgs(Args, CmdArgs, "tsan"); - if (Sanitize.needsFuzzer()) + if (Sanitize.needsFuzzer() && !Args.hasArg(options::OPT_dynamiclib)) AddFuzzerLinkArgs(Args, CmdArgs); if (Sanitize.needsStatsRt()) { StringRef OS = isTargetMacOS() ? "osx" : "iossim"; Modified: cfe/trunk/test/Driver/fuzzer.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fuzzer.c?rev=306733&r1=306732&r2=306733&view=diff ============================================================================== --- cfe/trunk/test/Driver/fuzzer.c (original) +++ cfe/trunk/test/Driver/fuzzer.c Thu Jun 29 12:52:33 2017 @@ -15,6 +15,10 @@ // // CHECK-LIBCXX-DARWIN: -lc++ +// Check that we don't link in libFuzzer.a when producing a shared object. +// RUN: %clang -fsanitize=fuzzer %s -shared -o %t.so -### 2>&1 | FileCheck --check-prefixes=CHECK-NOLIB-SO %s +// CHECK-NOLIB-SO-NOT: libLLVMFuzzer.a + int LLVMFuzzerTestOneInput(const char *Data, long Size) { return 0; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits