blob: e9dfa8b0f927261c7d8826a66d8a5fdd875ad2cf [file] [log] [blame] [edit]
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
load("//fuzzing:cc_defs.bzl", "cc_fuzzing_engine")
load("//fuzzing:java_defs.bzl", "java_fuzzing_engine")
load("@rules_cc//cc:defs.bzl", "cc_library")
load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
# libFuzzer specification.
##########################
cc_fuzzing_engine(
name = "libfuzzer",
display_name = "libFuzzer",
launcher = "libfuzzer_launcher.sh",
library = ":libfuzzer_stub",
visibility = ["//visibility:public"],
)
cc_library(
name = "libfuzzer_stub",
srcs = ["libfuzzer_stub.cc"],
linkopts = [
# We add the linker options to the library, so only the fuzz test binary
# is linked with libfuzzer.
"-fsanitize=fuzzer",
],
)
# Honggfuzz specification.
##########################
cc_fuzzing_engine(
name = "honggfuzz",
display_name = "Honggfuzz",
launcher = "honggfuzz_launcher.sh",
launcher_data = {
"@honggfuzz//:honggfuzz": "HONGGFUZZ_PATH",
},
library = "@honggfuzz//:honggfuzz_engine",
visibility = ["//visibility:public"],
)
# Centipede specification.
##########################
string_flag(
name = "llvm_symbolizer",
build_setting_default = "llvm-symbolizer",
visibility = ["//visibility:public"],
)
cc_fuzzing_engine(
name = "centipede",
display_name = "Centipede",
launcher = "centipede_launcher.sh",
launcher_data = {
"@centipede//:centipede": "CENTIPEDE_PATH",
":llvm_symbolizer": "LLVM_SYMBOLIZER_PATH",
},
library = "@centipede//:fuzz_target_runner",
visibility = ["//visibility:public"],
)
# The replay engine specification.
##################################
cc_fuzzing_engine(
name = "replay",
display_name = "Replay",
launcher = "replay_launcher.sh",
library = "//fuzzing/replay:replay_main",
visibility = ["//visibility:public"],
)
# Jazzer specification.
#################################
java_fuzzing_engine(
name = "jazzer",
display_name = "Jazzer",
launcher = "jazzer_launcher.sh",
library = "@jazzer//agent:jazzer_api_compile_only",
visibility = ["//visibility:public"],
)