[ASan] Don't link against libc++abi when not using libc++
authorHans Wennborg <hans@hanshq.net>
Thu, 9 Apr 2015 18:47:01 +0000 (18:47 +0000)
committerHans Wennborg <hans@hanshq.net>
Thu, 9 Apr 2015 18:47:01 +0000 (18:47 +0000)
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++.

llvm-svn: 234521

clang/lib/Driver/ToolChains.cpp
clang/test/Driver/sanitizer-ld.c

index 9864d19..434dc4d 100644 (file)
@@ -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,
index 586d0c7..16ada5d 100644 (file)
 // 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