Add ASAN and TSAN support for Mac

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}
This commit is contained in:
jochen 2015-01-09 05:38:13 -08:00 committed by Commit bot
parent 21ce246423
commit 8216f1bc7c
2 changed files with 59 additions and 3 deletions

33
build/mac/asan.gyp Normal file
View File

@ -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))',
],
},
],
},
],
}

View File

@ -201,7 +201,7 @@
],
},
'conditions': [
['asan==1', {
['asan==1 and OS!="mac"', {
'target_defaults': {
'cflags_cc+': [
'-fno-omit-frame-pointer',
@ -209,7 +209,7 @@
'-fsanitize=address',
'-w', # http://crbug.com/162783
],
'cflags_cc!': [
'cflags!': [
'-fomit-frame-pointer',
],
'ldflags': [
@ -217,7 +217,7 @@
],
},
}],
['tsan==1', {
['tsan==1 and OS!="mac"', {
'target_defaults': {
'cflags+': [
'-fno-omit-frame-pointer',
@ -238,6 +238,29 @@
],
},
}],
['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': {