[clang] 6420daa - Revert "[Sanitizers] Error out for -static-libsan on darwin"

usama hameed via cfe-commits cfe-commits at lists.llvm.org
Thu Mar 2 06:49:37 PST 2023


Author: usama hameed
Date: 2023-03-02T19:48:38+05:00
New Revision: 6420daab19e8c95f2481090564508eea1996c4de

URL: https://github.com/llvm/llvm-project/commit/6420daab19e8c95f2481090564508eea1996c4de
DIFF: https://github.com/llvm/llvm-project/commit/6420daab19e8c95f2481090564508eea1996c4de.diff

LOG: Revert "[Sanitizers] Error out for -static-libsan on darwin"

This reverts commit 4e7d40e0928cfe448ba947d2a67895fccaa3535f.

Added: 
    

Modified: 
    clang/include/clang/Basic/DiagnosticDriverKinds.td
    clang/include/clang/Driver/Options.td
    clang/lib/Driver/ToolChains/Darwin.cpp
    clang/test/Driver/sanitizer-ld.c

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index 3b32227d21acd..4c922650e100f 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -220,8 +220,8 @@ def err_drv_malformed_sanitizer_coverage_ignorelist : Error<
   "malformed sanitizer coverage ignorelist: '%0'">;
 def err_drv_malformed_sanitizer_metadata_ignorelist : Error<
   "malformed sanitizer metadata ignorelist: '%0'">;
-def err_drv_unsupported_static_sanitizer_darwin : Error<
-  "static %0 runtime is not supported on darwin">;
+def err_drv_unsupported_static_ubsan_darwin : Error<
+  "static UndefinedBehaviorSanitizer runtime is not supported on darwin">;
 def err_drv_duplicate_config : Error<
   "no more than one option '--config' is allowed">;
 def err_drv_cannot_open_config_file : Error<

diff  --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index b914b1b8f12eb..70882e110fa52 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -1215,7 +1215,7 @@ defm xl_pragma_pack : BoolFOption<"xl-pragma-pack",
 def shared_libsan : Flag<["-"], "shared-libsan">,
   HelpText<"Dynamically link the sanitizer runtime">;
 def static_libsan : Flag<["-"], "static-libsan">,
-  HelpText<"Statically link the sanitizer runtime (Not supported for ASan, TSan or UBSan on darwin)">;
+  HelpText<"Statically link the sanitizer runtime">;
 def : Flag<["-"], "shared-libasan">, Alias<shared_libsan>;
 def fasm : Flag<["-"], "fasm">, Group<f_Group>;
 

diff  --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp
index 6cee9c74c7adb..b273f8ba04fda 100644
--- a/clang/lib/Driver/ToolChains/Darwin.cpp
+++ b/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -1426,42 +1426,24 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args,
 
   const SanitizerArgs &Sanitize = getSanitizerArgs(Args);
 
-  if (!Sanitize.needsSharedRt()) {
-    const char *sanitizer = nullptr;
-    if (Sanitize.needsUbsanRt()) {
-      sanitizer = "UndefinedBehaviorSanitizer";
-    } else if (Sanitize.needsAsanRt()) {
-      sanitizer = "AddressSanitizer";
-    } else if (Sanitize.needsTsanRt()) {
-      sanitizer = "ThreadSanitizer";
-    }
-    if (sanitizer) {
-      getDriver().Diag(diag::err_drv_unsupported_static_sanitizer_darwin)
-          << sanitizer;
-      return;
-    }
+  if (!Sanitize.needsSharedRt() && Sanitize.needsUbsanRt()) {
+    getDriver().Diag(diag::err_drv_unsupported_static_ubsan_darwin);
+    return;
   }
 
   if (Sanitize.linkRuntimes()) {
-    if (Sanitize.needsAsanRt()) {
-      assert(Sanitize.needsSharedRt() &&
-             "Static sanitizer runtimes not supported");
+    if (Sanitize.needsAsanRt())
       AddLinkSanitizerLibArgs(Args, CmdArgs, "asan");
-    }
     if (Sanitize.needsLsanRt())
       AddLinkSanitizerLibArgs(Args, CmdArgs, "lsan");
     if (Sanitize.needsUbsanRt()) {
-      assert(Sanitize.needsSharedRt() &&
-             "Static sanitizer runtimes not supported");
-      AddLinkSanitizerLibArgs(
-          Args, CmdArgs,
-          Sanitize.requiresMinimalRuntime() ? "ubsan_minimal" : "ubsan");
+      assert(Sanitize.needsSharedRt() && "Static sanitizer runtimes not supported");
+      AddLinkSanitizerLibArgs(Args, CmdArgs,
+                              Sanitize.requiresMinimalRuntime() ? "ubsan_minimal"
+                                                                : "ubsan");
     }
-    if (Sanitize.needsTsanRt()) {
-      assert(Sanitize.needsSharedRt() &&
-             "Static sanitizer runtimes not supported");
+    if (Sanitize.needsTsanRt())
       AddLinkSanitizerLibArgs(Args, CmdArgs, "tsan");
-    }
     if (Sanitize.needsFuzzer() && !Args.hasArg(options::OPT_dynamiclib)) {
       AddLinkSanitizerLibArgs(Args, CmdArgs, "fuzzer", /*shared=*/false);
 

diff  --git a/clang/test/Driver/sanitizer-ld.c b/clang/test/Driver/sanitizer-ld.c
index 910b0ed4ff0de..0ba209d870c2a 100644
--- a/clang/test/Driver/sanitizer-ld.c
+++ b/clang/test/Driver/sanitizer-ld.c
@@ -457,18 +457,6 @@
 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-STATIC-DARWIN %s
 // CHECK-UBSAN-STATIC-DARWIN: {{.*}}error: static UndefinedBehaviorSanitizer runtime is not supported on darwin
 
-// RUN: %clang -fsanitize=address -### %s 2>&1 \
-// RUN:     --target=x86_64-apple-darwin -fuse-ld=ld -static-libsan \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-ASAN-STATIC-DARWIN %s
-// CHECK-ASAN-STATIC-DARWIN: {{.*}}error: static AddressSanitizer runtime is not supported on darwin
-
-// RUN: %clang -fsanitize=thread -### %s 2>&1 \
-// RUN:     --target=x86_64-apple-darwin -fuse-ld=ld -static-libsan \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-TSAN-STATIC-DARWIN %s
-// CHECK-TSAN-STATIC-DARWIN: {{.*}}error: static ThreadSanitizer runtime is not supported on darwin
-
 // RUN: %clang -fsanitize=address,undefined -### %s 2>&1 \
 // RUN:     --target=i386-unknown-linux -fuse-ld=ld \
 // RUN:     -resource-dir=%S/Inputs/resource_dir \


        


More information about the cfe-commits mailing list