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:
9
BUILD.gn
9
BUILD.gn
@ -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.
|
||||
|
Reference in New Issue
Block a user