0

Experimental support for fuzzing on mac.

BUG=597066

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

Cr-Commit-Position: refs/heads/master@{#383389}
This commit is contained in:
aizatsky
2016-03-25 15:37:16 -07:00
committed by Commit bot
parent a828668c94
commit e9aba58f6c
5 changed files with 44 additions and 5 deletions
BUILD.gn
build/config/sanitizers
testing/libfuzzer

@ -644,8 +644,6 @@ group("gn_only") {
"//media/cast:udp_proxy",
"//native_client/src/trusted/debug_stub:gdb_rsp_unittest",
"//storage/browser:dump_file_system",
"//testing/libfuzzer/fuzzers",
"//testing/libfuzzer/tests:libfuzzer_tests",
"//third_party/angle:libANGLE",
"//third_party/angle:libEGL",
"//third_party/angle:libGLESv2",
@ -713,6 +711,13 @@ group("gn_only") {
}
}
if ((is_linux && !is_chromeos && !is_chromecast) || is_mac) {
deps += [
"//testing/libfuzzer/fuzzers",
"//testing/libfuzzer/tests:libfuzzer_tests",
]
}
if (enable_nacl) {
deps += [ "//native_client_sdk/src:nacl_core_sdk" ]
}

@ -28,12 +28,17 @@ group("deps") {
}
if (use_custom_libcxx) {
deps += [ "//buildtools/third_party/libc++:libcxx_proxy" ]
if (is_mac) {
deps += [ ":copy_libclang_rt_dyn" ]
}
}
}
}
config("sanitizer_options_link_helper") {
ldflags = [ "-Wl,-u_sanitizer_options_link_helper" ]
if (!is_mac) {
ldflags = [ "-Wl,-u_sanitizer_options_link_helper" ]
}
}
source_set("options_sources") {
@ -292,6 +297,10 @@ config("default_sanitizer_flags") {
]
}
}
if (is_mac && is_asan) {
libs = [ "clang_rt.asan_osx_dynamic" ]
}
}
config("default_sanitizer_coverage_flags") {
@ -306,3 +315,17 @@ config("default_sanitizer_coverage_flags") {
]
}
}
# Copy dynamic clang_rt sanitizer libraries to output directory.
if (is_mac) {
copy("copy_libclang_rt_dyn") {
sources = [
"//third_party/llvm-build/Release+Asserts/compiler-rt/lib/darwin/libclang_rt.asan_osx_dynamic.dylib",
"//third_party/llvm-build/Release+Asserts/compiler-rt/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib",
"//third_party/llvm-build/Release+Asserts/compiler-rt/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib",
]
outputs = [
"$root_build_dir/{{source_file_part}}",
]
}
}

@ -69,8 +69,8 @@ declare_args() {
# Use libc++ (buildtools/third_party/libc++ and
# buildtools/third_party/libc++abi) instead of stdlibc++ as standard library.
# This is intended to be used for instrumented builds.
use_custom_libcxx =
(is_asan && is_linux) || is_tsan || is_msan || is_ubsan || use_libfuzzer
use_custom_libcxx = (is_asan && (is_linux || is_mac)) || is_tsan || is_msan ||
is_ubsan || use_libfuzzer
# Enable Link Time Optimization (output programs runs faster,
# but linking is up to 5-20x slower.

@ -37,6 +37,16 @@ static_library("libfuzzer_main") {
}
}
# A config used by all fuzzer_tests.
config("fuzzer_test_config") {
if (use_libfuzzer && is_mac) {
ldflags = [
"-Wl,-U,_LLVMFuzzerCustomMutator",
"-Wl,-U,_LLVMFuzzerInitialize",
]
}
}
# Noop config used to tag fuzzer tests excluded from clusterfuzz.
# Libfuzzer build bot uses this to filter out targets while
# building an archive for clusterfuzz.

@ -127,6 +127,7 @@ template("fuzzer_test") {
if (defined(invoker.additional_configs)) {
configs += invoker.additional_configs
}
configs += [ "//testing/libfuzzer:fuzzer_test_config" ]
}
} else {
# noop on unsupported platforms.