]> git.kaiwu.me - njs.git/commitdiff
Added detection of address sanitizer.
authorDmitry Volyntsev <xeioex@nginx.com>
Tue, 13 Aug 2019 13:04:10 +0000 (16:04 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Tue, 13 Aug 2019 13:04:10 +0000 (16:04 +0300)
auto/clang
src/test/njs_unit_test.c

index b776ef1cb9576095666fcd4d15703892878d95e7..e62433f9b3d6e5a1673aed81158241e669613dc0 100644 (file)
@@ -291,6 +291,26 @@ njs_feature_test="int n __attribute__ ((aligned(64)));
 . auto/feature
 
 
+njs_feature="Address sanitizer"
+njs_feature_name=NJS_HAVE_ADDRESS_SANITIZER
+njs_feature_run=no
+njs_feature_path=
+njs_feature_libs=
+njs_feature_test="int main(void) {
+                      return
+                  #ifdef __SANITIZE_ADDRESS__
+                          0;
+                  #else
+                      #if defined(__has_feature)
+                          #if __has_feature(address_sanitizer)
+                          0;
+                          #endif
+                      #endif
+                  #endif
+                  }"
+. auto/feature
+
+
 njs_feature="Memory sanitizer"
 njs_feature_name=NJS_HAVE_MEMORY_SANITIZER
 njs_feature_run=yes
index 4a0f82c9cc76c901c1d4587fe0e97fcce4120942..7ac78b6b82aa4f19428539bed1de7e1220965e5b 100644 (file)
@@ -4163,7 +4163,7 @@ static njs_unit_test_t  njs_test[] =
                  "Array.prototype.fill.call(o, 2).a"),
       njs_str("4") },
 
-#if (!NJS_HAVE_MEMORY_SANITIZER) /* MSAN limits stack size */
+#if (!NJS_HAVE_ADDRESS_SANITIZER && !NJS_HAVE_MEMORY_SANITIZER) /* limited stack size */
     { njs_str("var o = Object({length: 3});"
                  "Object.defineProperty(o, '0', {set: function(v){this[0] = 2 * v}});"
                  "Array.prototype.fill.call(o, 2)"),
@@ -6421,7 +6421,7 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("{ function f() {} { var f }}"),
       njs_str("SyntaxError: \"f\" has already been declared in 1") },
 
-#if (!NJS_HAVE_MEMORY_SANITIZER) /* MSAN limits stack size */
+#if (!NJS_HAVE_ADDRESS_SANITIZER && !NJS_HAVE_MEMORY_SANITIZER) /* limited stack size */
     { njs_str("function f() { return f() } f()"),
       njs_str("RangeError: Maximum call stack size exceeded") },
 #endif