Add ASAN and TSAN support for Mac
authorjochen <jochen@chromium.org>
Fri, 9 Jan 2015 13:38:13 +0000 (05:38 -0800)
committerCommit bot <commit-bot@chromium.org>
Fri, 9 Jan 2015 13:38:25 +0000 (13:38 +0000)
BUG=none
LOG=n
R=machenbach@chromium.org,glider@chromium.org

Review URL: https://codereview.chromium.org/838383005

Cr-Commit-Position: refs/heads/master@{#26013}

build/mac/asan.gyp [new file with mode: 0644]
build/standalone.gypi

diff --git a/build/mac/asan.gyp b/build/mac/asan.gyp
new file mode 100644 (file)
index 0000000..a5821e3
--- /dev/null
@@ -0,0 +1,33 @@
+# Copyright 2015 the V8 project authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+   'targets': [
+     {
+       'target_name': 'asan_dynamic_runtime',
+       'toolsets': ['target', 'host'],
+       'type': 'none',
+       'variables': {
+         # Every target is going to depend on asan_dynamic_runtime, so allow
+         # this one to depend on itself.
+         'prune_self_dependency': 1,
+         # Path is relative to this GYP file.
+         'asan_rtl_mask_path':
+             '../../third_party/llvm-build/Release+Asserts/lib/clang/*/lib/darwin',
+         'asan_osx_dynamic':
+             '<(asan_rtl_mask_path)/libclang_rt.asan_osx_dynamic.dylib',
+         'asan_iossim_dynamic':
+             '<(asan_rtl_mask_path)/libclang_rt.asan_iossim_dynamic.dylib',
+       },
+       'copies': [
+         {
+           'destination': '<(PRODUCT_DIR)',
+           'files': [
+             '<!(/bin/ls <(asan_osx_dynamic))',
+           ],
+         },
+       ],
+     },
+   ],
+}
index ee91e78..78c1786 100644 (file)
     ],
   },
   'conditions': [
-    ['asan==1', {
+    ['asan==1 and OS!="mac"', {
       'target_defaults': {
         'cflags_cc+': [
           '-fno-omit-frame-pointer',
           '-fsanitize=address',
           '-w',  # http://crbug.com/162783
         ],
-        'cflags_cc!': [
+        'cflags!': [
           '-fomit-frame-pointer',
         ],
         'ldflags': [
         ],
       },
     }],
-    ['tsan==1', {
+    ['tsan==1 and OS!="mac"', {
       'target_defaults': {
         'cflags+': [
           '-fno-omit-frame-pointer',
         ],
       },
     }],
+    ['asan==1 and OS=="mac"', {
+      'target_defaults': {
+        'xcode_settings': {
+          'OTHER_CFLAGS+': [
+            '-fno-omit-frame-pointer',
+            '-gline-tables-only',
+            '-fsanitize=address',
+            '-w',  # http://crbug.com/162783
+          ],
+          'OTHER_CFLAGS!': [
+            '-fomit-frame-pointer',
+          ],
+        },
+        'target_conditions': [
+          ['_type!="static_library"', {
+            'xcode_settings': {'OTHER_LDFLAGS': ['-fsanitize=address']},
+          }],
+        ],
+        'dependencies': [
+          '<(DEPTH)/build/mac/asan.gyp:asan_dynamic_runtime',
+        ],
+      },
+    }],
     ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
        or OS=="netbsd"', {
       'target_defaults': {