From: Hans Wennborg Date: Thu, 9 Apr 2015 18:47:01 +0000 (+0000) Subject: [ASan] Don't link against libc++abi when not using libc++ X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f835553c7e731444593142becf39e275bf38572a;p=clang [ASan] Don't link against libc++abi when not using libc++ This is a follow-up to r233860 which added -lc++abi when using ASan on Mac, and broke Chromium's ASan build which doesn't use libc++. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234521 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 9864d19e34..434dc4d331 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -338,9 +338,12 @@ void DarwinClang::AddLinkSanitizerLibArgs(const ArgList &Args, OS + "_dynamic.dylib").str(), /*AlwaysLink*/ true, /*IsEmbedded*/ false, /*AddRPath*/ true); - // Add explicit dependcy on -lc++abi, as -lc++ doesn't re-export - // all RTTI-related symbols that UBSan uses. - CmdArgs.push_back("-lc++abi"); + + if (GetCXXStdlibType(Args) == ToolChain::CST_Libcxx) { + // Add explicit dependcy on -lc++abi, as -lc++ doesn't re-export + // all RTTI-related symbols that UBSan uses. + CmdArgs.push_back("-lc++abi"); + } } void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args, diff --git a/test/Driver/sanitizer-ld.c b/test/Driver/sanitizer-ld.c index 586d0c729c..16ada5d8b5 100644 --- a/test/Driver/sanitizer-ld.c +++ b/test/Driver/sanitizer-ld.c @@ -272,3 +272,11 @@ // CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan // CHECK-LSAN-ASAN-LINUX: libclang_rt.asan-x86_64 // CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan + +// RUN: %clangcxx -fsanitize=address %s -### -o %t.o 2>&1 \ +// RUN: -mmacosx-version-min=10.6 \ +// RUN: -target x86_64-apple-darwin13.4.0 \ +// RUN: | FileCheck --check-prefix=CHECK-ASAN-DARWIN106-CXX %s +// CHECK-ASAN-DARWIN106-CXX: "{{.*}}ld{{(.exe)?}}" +// CHECK-ASAN-DARWIN106-CXX: libclang_rt.asan_osx_dynamic.dylib +// CHECK-ASAN-DARWIN106-CXX-NOT: -lc++abi