]> granicus.if.org Git - clang/commitdiff
Driver: tweak CrossWindows sanitizer support
authorSaleem Abdulrasool <compnerd@compnerd.org>
Thu, 29 Oct 2015 03:36:38 +0000 (03:36 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Thu, 29 Oct 2015 03:36:38 +0000 (03:36 +0000)
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

lib/Driver/CrossWindowsToolChain.cpp
lib/Driver/ToolChains.h
test/Driver/windows-cross.c

index ffb1469df21df7c2ee9a652d86f93a119d436f61..57bf896359871d276cae4ea308d5a65b53eac3b3 100644 (file)
@@ -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);
 }
index fcb7561b1ff9f1841623ee34a90c0fb4e4297f6d..4d25a3ba9fbd728bf83037b4b9318b0aa8e0ad13 100644 (file)
@@ -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;
index 7bc9ac72b4ad217ad071fb09d02bdcccf7bd5930..3f83adf71d73ee383293d206b0499d052ccf0502 100644 (file)
 
 // 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={{.*}}"
+