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 \ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits