Hi timurrrr,

AddressSanitizer currently doesn't support this configuration, and binaries
built with it will just get into an infinite loop during startup.

http://reviews.llvm.org/D5764

Files:
  include/clang/Basic/DiagnosticDriverKinds.td
  lib/Driver/Tools.cpp
  test/Driver/fsanitize.c
Index: include/clang/Basic/DiagnosticDriverKinds.td
===================================================================
--- include/clang/Basic/DiagnosticDriverKinds.td
+++ include/clang/Basic/DiagnosticDriverKinds.td
@@ -85,6 +85,8 @@
   "invalid deployment target for -stdlib=libc++ (requires %0 or later)">;
 def err_drv_malformed_sanitizer_blacklist : Error<
   "malformed sanitizer blacklist: '%0'">;
+def err_drv_address_sanitizer_debug_runtime : Error<
+  "address sanitizer with a debug runtime library not supported yet">;
 
 def err_target_unsupported_arch
   : Error<"the target architecture '%0' is not supported by the target '%1'">;
Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -3584,6 +3584,11 @@
   Args.AddLastArg(CmdArgs, options::OPT_fno_elide_type);
 
   const SanitizerArgs &Sanitize = getToolChain().getSanitizerArgs();
+  if (Sanitize.needsAsanRt() && (Args.hasArg(options::OPT__SLASH_MTd) ||
+                                 Args.hasArg(options::OPT__SLASH_MDd) ||
+                                 Args.hasArg(options::OPT__SLASH_LDd))) {
+    D.Diag(diag::err_drv_address_sanitizer_debug_runtime);
+  }
   Sanitize.addArgs(Args, CmdArgs);
 
   if (!Args.hasFlag(options::OPT_fsanitize_recover,
Index: test/Driver/fsanitize.c
===================================================================
--- test/Driver/fsanitize.c
+++ test/Driver/fsanitize.c
@@ -153,3 +153,21 @@
 
 // RUN: %clang -target x86_64-apple-darwin10 -fsanitize=function -fsanitize=undefined %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-FSAN-UBSAN-DARWIN
 // CHECK-FSAN-UBSAN-DARWIN: unsupported option '-fsanitize=function' for target 'x86_64-apple-darwin10'
+
+// RUN: %clang_cl -fsanitize=address -c -MDd -### -- %s 2>&1 | FileCheck %s -check-prefix=CHECK-ASAN-DEBUGRTL1
+// CHECK-ASAN-DEBUGRTL1: address sanitizer with a debug runtime library not supported yet
+
+// RUN: %clang_cl -fsanitize=address -c -MTd -### -- %s 2>&1 | FileCheck %s -check-prefix=CHECK-ASAN-DEBUGRTL2
+// CHECK-ASAN-DEBUGRTL2: address sanitizer with a debug runtime library not supported yet
+
+// RUN: %clang_cl -fsanitize=address -c -LDd -### -- %s 2>&1 | FileCheck %s -check-prefix=CHECK-ASAN-DEBUGRTL3
+// CHECK-ASAN-DEBUGRTL3: address sanitizer with a debug runtime library not supported yet
+
+// RUN: %clang_cl -fsanitize=address -c -MT -### -- %s 2>&1 | FileCheck %s -check-prefix=CHECK-ASAN-DEBUGRTL4
+// CHECK-ASAN-DEBUGRTL4-NOT: address sanitizer with a debug runtime library not supported yet
+
+// RUN: %clang_cl -fsanitize=address -c -MD -### -- %s 2>&1 | FileCheck %s -check-prefix=CHECK-ASAN-DEBUGRTL5
+// CHECK-ASAN-DEBUGRTL5-NOT: address sanitizer with a debug runtime library not supported yet
+
+// RUN: %clang_cl -fsanitize=address -c -LD -### -- %s 2>&1 | FileCheck %s -check-prefix=CHECK-ASAN-DEBUGRTL6
+// CHECK-ASAN-DEBUGRTL6-NOT: address sanitizer with a debug runtime library not supported yet
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to