From: Saleem Abdulrasool Date: Thu, 29 Oct 2015 03:36:38 +0000 (+0000) Subject: Driver: tweak CrossWindows sanitizer support X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7f9c02c93f7f4e89567d1a233b9ba419c6976236;p=clang Driver: tweak CrossWindows sanitizer support Indicate support for ASAN on the CrossWindows toolchain. Although this is insufficient, this at least permits the handling of the driver flag. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251598 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/CrossWindowsToolChain.cpp b/lib/Driver/CrossWindowsToolChain.cpp index ffb1469df2..57bf896359 100644 --- a/lib/Driver/CrossWindowsToolChain.cpp +++ b/lib/Driver/CrossWindowsToolChain.cpp @@ -107,6 +107,12 @@ AddCXXStdlibLibArgs(const llvm::opt::ArgList &DriverArgs, } } +clang::SanitizerMask CrossWindowsToolChain::getSupportedSanitizers() const { + SanitizerMask Res = ToolChain::getSupportedSanitizers(); + Res |= SanitizerKind::Address; + return Res; +} + Tool *CrossWindowsToolChain::buildLinker() const { return new tools::CrossWindows::Linker(*this); } diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h index fcb7561b1f..4d25a3ba9f 100644 --- a/lib/Driver/ToolChains.h +++ b/lib/Driver/ToolChains.h @@ -937,6 +937,8 @@ public: void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const override; + SanitizerMask getSupportedSanitizers() const override; + protected: Tool *buildLinker() const override; Tool *buildAssembler() const override; diff --git a/test/Driver/windows-cross.c b/test/Driver/windows-cross.c index 7bc9ac72b4..3f83adf71d 100644 --- a/test/Driver/windows-cross.c +++ b/test/Driver/windows-cross.c @@ -40,5 +40,17 @@ // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=lld-link2 -shared -o shared.dll -x c++ %s 2>&1 \ // RUN: | FileCheck %s --check-prefix CHECK-FUSE-LD + // CHECK-FUSE-LD: "{{.*}}lld-link2" +// RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=lld-link2 -shared -o shared.dll -fsanitize=address -x c++ %s 2>&1 \ +// RUN: | FileCheck %s --check-prefix CHECK-SANITIZE-ADDRESS + +// CHECK-SANITIZE-ADDRESS: "-fsanitize=address" + +// RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=lld-link2 -shared -o shared.dll -fsanitize=tsan -x c++ %s 2>&1 \ +// RUN: | FileCheck %s --check-prefix CHECK-SANITIZE-TSAN + +// CHECK-SANITIZE-TSAN: clang-3.8: error: unsupported argument 'tsan' to option 'fsanitize=' +// CHECK-SANITIZE-TSAN-NOT: "-fsanitize={{.*}}" +