Author: compnerd Date: Thu Jul 7 19:37:31 2016 New Revision: 274814 URL: http://llvm.org/viewvc/llvm-project?rev=274814&view=rev Log: Revert "Driver: Stop linking to C++ when using sanitizers on Darwin"
This reverts SVN r274797. It broke the Green Dragon bot. Revert it until the failure can be addressed. Modified: cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/test/Driver/darwin-sanitizer-ld.c Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=274814&r1=274813&r2=274814&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Thu Jul 7 19:37:31 2016 @@ -392,12 +392,24 @@ void Darwin::addProfileRTLibs(const ArgL void DarwinClang::AddLinkSanitizerLibArgs(const ArgList &Args, ArgStringList &CmdArgs, StringRef Sanitizer) const { + if (!Args.hasArg(options::OPT_dynamiclib) && + !Args.hasArg(options::OPT_bundle)) { + // Sanitizer runtime libraries requires C++. + AddCXXStdlibLibArgs(Args, CmdArgs); + } + AddLinkRuntimeLib( Args, CmdArgs, (Twine("libclang_rt.") + Sanitizer + "_" + getOSLibraryNameSuffix() + "_dynamic.dylib").str(), /*AlwaysLink*/ true, /*IsEmbedded*/ false, /*AddRPath*/ true); + + 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, Modified: cfe/trunk/test/Driver/darwin-sanitizer-ld.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/darwin-sanitizer-ld.c?rev=274814&r1=274813&r2=274814&view=diff ============================================================================== --- cfe/trunk/test/Driver/darwin-sanitizer-ld.c (original) +++ cfe/trunk/test/Driver/darwin-sanitizer-ld.c Thu Jul 7 19:37:31 2016 @@ -5,8 +5,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ASAN %s // CHECK-ASAN: "{{.*}}ld{{(.exe)?}}" -// CHECK-ASAN-NOT: "-lstdc++" -// CHECK-ASAN-NOT: "-lc++" +// CHECK-ASAN: stdc++ // CHECK-ASAN: libclang_rt.asan_osx_dynamic.dylib" // CHECK-ASAN: "-rpath" "@executable_path" // CHECK-ASAN: "-rpath" "{{.*}}lib{{.*}}darwin" @@ -26,8 +25,7 @@ // RUN: | FileCheck --check-prefix=CHECK-UBSAN %s // CHECK-UBSAN: "{{.*}}ld{{(.exe)?}}" -// CHECK-UBSAN-NOT: "-lstdc++" -// CHECK-UBSAN-NOT: "-lc++" +// CHECK-UBSAN: stdc++ // CHECK-UBSAN: libclang_rt.ubsan_osx_dynamic.dylib" // CHECK-UBSAN: "-rpath" "@executable_path" // CHECK-UBSAN: "-rpath" "{{.*}}lib{{.*}}darwin" @@ -63,8 +61,7 @@ // RUN: %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-IOSSIM %s // CHECK-ASAN-IOSSIM: "{{.*}}ld{{(.exe)?}}" -// CHECK-ASAN-IOSSIM-NOT: "-lstdc++" -// CHECK-ASAN-IOSSIM-NOT: "-lc++" +// CHECK-ASAN-IOSSIM: lc++ // CHECK-ASAN-IOSSIM: libclang_rt.asan_iossim_dynamic.dylib" // CHECK-ASAN-IOSSIM: "-rpath" "@executable_path" // CHECK-ASAN-IOSSIM: "-rpath" "{{.*}}lib{{.*}}darwin" @@ -75,8 +72,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ASAN-TVOSSIM %s // CHECK-ASAN-TVOSSIM: "{{.*}}ld{{(.exe)?}}" -// CHECK-ASAN-TVOSSIM-NOT: "-lstdc++" -// CHECK-ASAN-TVOSSIM-NOT: "-lc++" +// CHECK-ASAN-TVOSSIM: lc++ // CHECK-ASAN-TVOSSIM: libclang_rt.asan_tvossim_dynamic.dylib" // CHECK-ASAN-TVOSSIM: "-rpath" "@executable_path" // CHECK-ASAN-TVOSSIM: "-rpath" "{{.*}}lib{{.*}}darwin" @@ -87,8 +83,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ASAN-WATCHOSSIM %s // CHECK-ASAN-WATCHOSSIM: "{{.*}}ld{{(.exe)?}}" -// CHECK-ASAN-WATCHOSSIM-NOT: "-lstdc++" -// CHECK-ASAN-WATCHOSSIM-NOT: "-lc++" +// CHECK-ASAN-WATCHOSSIM: lc++ // CHECK-ASAN-WATCHOSSIM: libclang_rt.asan_watchossim_dynamic.dylib" // CHECK-ASAN-WATCHOSSIM: "-rpath" "@executable_path" // CHECK-ASAN-WATCHOSSIM: "-rpath" "{{.*}}lib{{.*}}darwin" @@ -98,8 +93,7 @@ // RUN: %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-IOS %s // CHECK-ASAN-IOS: "{{.*}}ld{{(.exe)?}}" -// CHECK-ASAN-IOS-NOT: "-lstdc++" -// CHECK-ASAN-IOS-NOT: "-lc++" +// CHECK-ASAN-IOS: lc++ // CHECK-ASAN-IOS: libclang_rt.asan_ios_dynamic.dylib" // CHECK-ASAN-IOS: "-rpath" "@executable_path" // CHECK-ASAN-IOS: "-rpath" "{{.*}}lib{{.*}}darwin" @@ -109,8 +103,7 @@ // RUN: %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-TVOS %s // CHECK-ASAN-TVOS: "{{.*}}ld{{(.exe)?}}" -// CHECK-ASAN-TVOS-NOT: "-lstdc++" -// CHECK-ASAN-TVOS-NOT: "-lc++" +// CHECK-ASAN-TVOS: lc++ // CHECK-ASAN-TVOS: libclang_rt.asan_tvos_dynamic.dylib" // CHECK-ASAN-TVOS: "-rpath" "@executable_path" // CHECK-ASAN-TVOS: "-rpath" "{{.*}}lib{{.*}}darwin" @@ -120,8 +113,7 @@ // RUN: %s -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ASAN-WATCHOS %s // CHECK-ASAN-WATCHOS: "{{.*}}ld{{(.exe)?}}" -// CHECK-ASAN-WATCHOS-NOT: "-lstdc++" -// CHECK-ASAN-WATCHOS-NOT: "-lc++" +// CHECK-ASAN-WATCHOS: lc++ // CHECK-ASAN-WATCHOS: libclang_rt.asan_watchos_dynamic.dylib" // CHECK-ASAN-WATCHOS: "-rpath" "@executable_path" // CHECK-ASAN-WATCHOS: "-rpath" "{{.*}}lib{{.*}}darwin" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits