Enable GN ASAN builds for Linux

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2392403002 .
This commit is contained in:
Zachary Anderson 2016-10-05 13:43:29 -07:00
parent 3e5c77702f
commit 4ab6c33d9a
3 changed files with 16 additions and 34 deletions

View file

@ -17,7 +17,6 @@ if (is_win) {
}
import("//build/toolchain/ccache.gni")
import("//build/config/sanitizers/sanitizers.gni")
# default_include_dirs ---------------------------------------------------------
#
@ -92,44 +91,20 @@ config("compiler") {
]
}
if (is_asan) {
asan_blacklist_path =
rebase_path("//tools/memory/asan/blacklist.txt", root_build_dir)
cflags += [
"-fsanitize=address",
"-fsanitize-blacklist=$asan_blacklist_path",
]
if (is_mac) {
cflags += [ "-mllvm -asan-globals=0" ] # http://crbug.com/352073
# TODO(GYP): deal with mac_bundles.
}
cflags += [ "-fsanitize=address" ]
ldflags += [ "-fsanitize=address" ]
}
if (is_lsan) {
cflags += [ "-fsanitize=leak" ]
ldflags += [ "-fsanitize=leak" ]
}
if (is_tsan) {
tsan_blacklist_path =
rebase_path("//tools/memory/tsan_v2/ignores.txt", root_build_dir)
cflags += [
"-fsanitize=thread",
"-fsanitize-blacklist=$tsan_blacklist_path",
]
cflags += [ "-fsanitize=thread" ]
ldflags += [ "-fsanitize=thread" ]
}
if (is_msan) {
msan_blacklist_path =
rebase_path("//tools/msan/blacklist.txt", root_build_dir)
cflags += [
"-fsanitize=memory",
"-fsanitize-memory-track-origins=$msan_track_origins",
"-fsanitize-blacklist=$msan_blacklist_path",
]
}
if (use_custom_libcxx) {
cflags_cc += [ "-nostdinc++" ]
include_dirs = [
"//buildtools/third_party/libc++/trunk/include",
"//buildtools/third_party/libc++abi/trunk/include",
]
cflags += [ "-fsanitize=memory" ]
ldflags += [ "-fsanitize=memory" ]
}
}

View file

@ -181,7 +181,6 @@ config("dart_config") {
if (defined(is_asan) && is_asan) {
ldflags = [
"-Wl,-u_sanitizer_options_link_helper",
"-fsanitize=address",
]
}

View file

@ -87,7 +87,9 @@ def to_gn_args(args, mode, arch, target_os):
gn_args['dart_zlib_path'] = "//runtime/bin/zlib"
gn_args['dart_use_tcmalloc'] = gn_args['target_os'] == 'linux'
# Use tcmalloc only when targeting Linux and when not using ASAN.
gn_args['dart_use_tcmalloc'] = (gn_args['target_os'] == 'linux'
and not args.asan)
gn_args['is_debug'] = mode == 'debug'
gn_args['is_release'] = mode == 'release'
@ -106,6 +108,8 @@ def to_gn_args(args, mode, arch, target_os):
and not gn_args['target_cpu'].startswith('mips'))
gn_args['is_clang'] = args.clang and has_clang
gn_args['is_asan'] = args.asan and gn_args['is_clang']
if args.target_sysroot:
gn_args['target_sysroot'] = args.target_sysroot
@ -198,6 +202,10 @@ def parse_args(args):
metavar='[all,ia32,x64,simarm,arm,simarmv6,armv6,simarmv5te,armv5te,'
'simmips,mips,simarm64,arm64,simdbc,armsimdbc]',
default='x64')
parser.add_argument('--asan',
help='Build with ASAN',
default=False,
action='store_true')
parser.add_argument('--goma',
help='Use goma',
default=True,