r274814 - Revert "Driver: Stop linking to C++ when using sanitizers on Darwin"

Saleem Abdulrasool via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 7 17:37:31 PDT 2016


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"




More information about the cfe-commits mailing list