nelhage/rules_fuzzer
GitHub: nelhage/rules_fuzzer
为 Bazel 构建系统提供 libFuzzer 集成规则,自动化 clang 工具链配置和模糊测试目标构建。
Stars: 4 | Forks: 1
# `rules_fuzzer` -- bazel + libfuzzer
本仓库包含了将 [libfuzzer][libfuzzer] 用于
bazel 项目的规则。
除了下载和构建 libfuzzer 的规则外,它还包含相关规则和一个 [CROSSTOOL][crosstool],用于为你的构建下载和配置 clang 5.0.0,以及设置正确的编译器标志。
使用方法:
- 将此仓库添加为 bazel external
- 在你的 `WORKSPACE` 中,加载并调用 `fuzzer_externals`:
load("@com_nelhage_fuzzer//:fuzzer.bzl", "fuzzer_externals")
fuzzer_externals()
- 将你的 fuzz target 定义为一个 `cc_binary`,并在 `deps` 中包含 `@clang_compiler_rt//:fuzzer`。此 target 将定义一个 `main` 方法。
- 使用内置的 `clang` 进行构建,通过 `--crosstool_top=@com_nelhage_rules_fuzzer//tools/cpp/fuzzer:toolchain`,并使用 `--features=fuzzer` 启用 fuzzer 插桩。
你也可以选择通过 `--features=asan`、`--features=leaksan` 和 `--features=ubsan` 来启用 [clang sanitizers][sanitizers]。这些 sanitizers 可以在一次构建中组合使用。