# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("///build/config/sanitizers/sanitizers.gni")

config("ignore_unused_result_warning") {
  if (is_clang) {
    cflags = [
      # See crbug.com/932188, libFuzzer does not check the result of write()
      # when it does raw printing.
      "-Wno-unused-result",
    ]
  }
}

# Engine should be compiled without coverage (infinite loop in trace_cmp).
fuzzing_engine_remove_configs = [
  "//build/config/coverage:default_coverage",
  "//build/config/sanitizers:default_sanitizer_flags",
]

# Add any sanitizer flags back. In MSAN builds, instrumenting libfuzzer with
# MSAN is necessary since all parts of the binary need to be instrumented for it
# to work. ASAN builds are more subtle: libfuzzer depends on features from the
# C++ STL. If it were not instrumented, templates would be insantiated without
# ASAN from libfuzzer and with ASAN in other TUs. The linker might merge
# instrumented template instantiations with non-instrumented ones (which could
# have a different ABI) in the final binary, which is problematic for TUs
# expecting one particular ABI (https://crbug.com/915422). The other sanitizers
# are added back for the same reason.
fuzzing_engine_add_configs = [
  "//build/config/sanitizers:default_sanitizer_flags_but_coverage",
  ":ignore_unused_result_warning",
]

source_set("libfuzzer") {
  sources = [
    "src/FuzzerCrossOver.cpp",
    "src/FuzzerDataFlowTrace.cpp",
    "src/FuzzerDriver.cpp",
    "src/FuzzerExtFunctionsDlsym.cpp",
    "src/FuzzerExtFunctionsWeak.cpp",
    "src/FuzzerExtFunctionsWindows.cpp",
    "src/FuzzerExtraCounters.cpp",
    "src/FuzzerFork.cpp",
    "src/FuzzerIO.cpp",
    "src/FuzzerIOPosix.cpp",
    "src/FuzzerIOWindows.cpp",
    "src/FuzzerLoop.cpp",
    "src/FuzzerMain.cpp",
    "src/FuzzerMerge.cpp",
    "src/FuzzerMutate.cpp",
    "src/FuzzerSHA1.cpp",
    "src/FuzzerTracePC.cpp",
    "src/FuzzerUtil.cpp",
    "src/FuzzerUtilDarwin.cpp",
    "src/FuzzerUtilFuchsia.cpp",
    "src/FuzzerUtilLinux.cpp",
    "src/FuzzerUtilPosix.cpp",
    "src/FuzzerUtilWindows.cpp",
  ]

  configs -= fuzzing_engine_remove_configs
  configs += fuzzing_engine_add_configs
}

if (use_afl) {
  source_set("afl_driver") {
    sources = [
      "src/afl/afl_driver.cpp",
    ]

    configs -= fuzzing_engine_remove_configs
    configs += fuzzing_engine_add_configs
  }
}
