From 05d68176c8b2a15da45d89852c2638080ed00ae4 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Tue, 26 Sep 2023 07:13:00 +0000 Subject: [PATCH] Revert "Make FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION depend on optimize_for_fuzzing GN arg." This reverts commit 2b4c02961570955e40d85646feb0865bb79fe661. FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION, introduced in r452783, is the documented macro to be used by code that should behave differently when targeting fuzzers. Since r562499, this macro is only defined when when optimize_for_fuzzing=true is used. In r597184, optimize_for_fuzzing was made impossible to use on Windows. As a result of all of this, FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION doesn't work on Windows because there is no build configuration that results in it being set. This CL resolves the problem by making FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION conditional only on use_fuzzing_engine=true so that it is set for all builds that target fuzzers. Fixed: 1483560 Change-Id: I29a20f42e222b4547ed5191014289582dd058d86 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4874264 Reviewed-by: Jonathan Metzman Commit-Queue: Greg Thompson Reviewed-by: Dirk Pranke Cr-Commit-Position: refs/heads/main@{#1201378} --- build/config/compiler/BUILD.gn | 5 ++++- build/config/sanitizers/BUILD.gn | 4 ++-- build/config/sanitizers/sanitizers.gni | 4 ---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 6e5b0c64dc751..5efd652ee0df3 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn @@ -15,7 +15,6 @@ import("//build/config/dcheck_always_on.gni") import("//build/config/gclient_args.gni") import("//build/config/host_byteorder.gni") import("//build/config/rust.gni") -import("//build/config/sanitizers/sanitizers.gni") import("//build/config/ui.gni") import("//build/config/unwind.gni") import("//build/toolchain/cc_wrapper.gni") @@ -86,6 +85,10 @@ declare_args() { # the needed gcov profiling data. auto_profile_path = "" + # Optimize for coverage guided fuzzing (balance between speed and number of + # branches) + optimize_for_fuzzing = false + # Path to an AFDO profile to use while building with clang, if any. Empty # implies none. clang_sample_profile_path = "" diff --git a/build/config/sanitizers/BUILD.gn b/build/config/sanitizers/BUILD.gn index db57be04ab906..5d8ba62c17bdc 100644 --- a/build/config/sanitizers/BUILD.gn +++ b/build/config/sanitizers/BUILD.gn @@ -286,7 +286,7 @@ config("asan_flags") { # odr-violation errors in rust code, and link failures for cros/asan. # Clang recently turned it on by default for all ELF targets (it was # already on for Fuchsia). Pass the flag to turn it back off. - cflags += ["-fno-sanitize-address-globals-dead-stripping"] + cflags += [ "-fno-sanitize-address-globals-dead-stripping" ] } if (is_win) { if (!defined(asan_win_blocklist_path)) { @@ -550,7 +550,7 @@ config("ubsan_vptr_flags") { } config("fuzzing_build_mode") { - if (use_fuzzing_engine && optimize_for_fuzzing) { + if (use_fuzzing_engine) { defines = [ "FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" ] } } diff --git a/build/config/sanitizers/sanitizers.gni b/build/config/sanitizers/sanitizers.gni index 91d82569b3c43..954d7d1d86435 100644 --- a/build/config/sanitizers/sanitizers.gni +++ b/build/config/sanitizers/sanitizers.gni @@ -86,10 +86,6 @@ declare_args() { # Not for client use. disable_libfuzzer = false - # Optimize for coverage guided fuzzing (balance between speed and number of - # branches). Can be also used to remove non-determinism and other issues. - optimize_for_fuzzing = false - # Value for -fsanitize-coverage flag. Setting this causes # use_sanitizer_coverage to be enabled. # This flag is not used for libFuzzer (use_libfuzzer=true). Instead, we use: