Bug 1036235 - Do not use __asan_default_options with clang-cl because it is not supported yet; r=decoder
authorEhsan Akhgari <ehsan@mozilla.com>
Wed, 09 Jul 2014 15:16:55 -0400
changeset 193202 756dae0c26b2f6c7e7c44b63de333854a0997191
parent 193201 d6d4c517f2f7b4afd9f48b25d4f7ca553ec45e17
child 193203 1546c3578328b79dfbb93ba82968e71775963017
push id1
push userroot
push dateMon, 20 Oct 2014 17:29:22 +0000
reviewersdecoder
bugs1036235
milestone33.0a1
Bug 1036235 - Do not use __asan_default_options with clang-cl because it is not supported yet; r=decoder
js/src/jit/AsmJSSignalHandlers.cpp
mozglue/build/AsanOptions.cpp
--- a/js/src/jit/AsmJSSignalHandlers.cpp
+++ b/js/src/jit/AsmJSSignalHandlers.cpp
@@ -1051,17 +1051,18 @@ js::RequestInterruptForAsmJSCode(JSRunti
     AsmJSActivation *activation = rt->mainThread.asmJSActivationStackFromAnyThread();
     if (!activation)
         return;
 
     JS_ASSERT(rt->currentThreadOwnsInterruptLock());
     activation->module().protectCode(rt);
 }
 
-#if defined(MOZ_ASAN) && defined(JS_STANDALONE)
+// This is not supported by clang-cl yet.
+#if defined(MOZ_ASAN) && defined(JS_STANDALONE) && !defined(_MSC_VER)
 // Usually, this definition is found in mozglue (see mozglue/build/AsanOptions.cpp).
 // However, when doing standalone JS builds, mozglue is not used and we must ensure
 // that we still allow custom SIGSEGV handlers for asm.js and ion to work correctly.
 extern "C" MOZ_ASAN_BLACKLIST
 const char* __asan_default_options() {
     return "allow_user_segv_handler=1";
 }
 #endif
--- a/mozglue/build/AsanOptions.cpp
+++ b/mozglue/build/AsanOptions.cpp
@@ -1,15 +1,17 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/Attributes.h"
 
+#ifndef _MSC_VER // Not supported by clang-cl yet
+
 // When running with AddressSanitizer, we need to explicitely set some
 // options specific to our codebase to prevent errors during runtime.
 // 
 // Currently, these are:
 //
 //   allow_user_segv_handler=1 - Tell ASan to allow our code to use its
 //   own SIGSEGV handlers. This is required by ASM.js internally.
 //
@@ -17,8 +19,10 @@
 //   in ASan. This is required because we define our own new/delete
 //   operators that are backed by malloc/free. If one of them gets inlined
 //   while the other doesn't, ASan will report false positives.
 //
 extern "C" MOZ_ASAN_BLACKLIST
 const char* __asan_default_options() {
     return "allow_user_segv_handler=1:alloc_dealloc_mismatch=0";
 }
+
+#endif