aboutsummaryrefslogtreecommitdiff
path: root/src/main/native/com/code_intelligence/jazzer/driver/BUILD.bazel
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/native/com/code_intelligence/jazzer/driver/BUILD.bazel')
-rw-r--r--src/main/native/com/code_intelligence/jazzer/driver/BUILD.bazel166
1 files changed, 166 insertions, 0 deletions
diff --git a/src/main/native/com/code_intelligence/jazzer/driver/BUILD.bazel b/src/main/native/com/code_intelligence/jazzer/driver/BUILD.bazel
new file mode 100644
index 00000000..27d8a1c5
--- /dev/null
+++ b/src/main/native/com/code_intelligence/jazzer/driver/BUILD.bazel
@@ -0,0 +1,166 @@
+load("@fmeum_rules_jni//jni:defs.bzl", "cc_jni_library")
+load("//bazel:compat.bzl", "MULTI_PLATFORM", "SKIP_ON_WINDOWS")
+
+cc_jni_library(
+ name = "jazzer_driver",
+ platforms = MULTI_PLATFORM,
+ visibility = [
+ "//src/jmh:__subpackages__",
+ "//src/main/java/com/code_intelligence/jazzer/driver:__pkg__",
+ "//src/main/java/com/code_intelligence/jazzer/junit:__pkg__",
+ "//src/main/java/com/code_intelligence/jazzer/runtime:__pkg__",
+ "//src/test:__subpackages__",
+ ],
+ deps = [
+ ":jazzer_driver_lib",
+ "@jazzer_libfuzzer//:libfuzzer_no_main",
+ ] + select({
+ # Windows doesn't have a concept analogous to RTLD_GLOBAL.
+ "@platforms//os:windows": [],
+ "//conditions:default": [":init_jazzer_preload"],
+ }),
+)
+
+cc_library(
+ name = "jazzer_driver_lib",
+ visibility = ["//src/test/native/com/code_intelligence/jazzer/driver/mocks:__pkg__"],
+ deps = [
+ ":coverage_tracker",
+ ":fuzz_target_runner",
+ ":jazzer_fuzzer_callbacks",
+ ":libfuzzer_callbacks",
+ ":mutator",
+ ],
+)
+
+cc_jni_library(
+ name = "jazzer_android_tooling",
+ srcs = ["android_tooling.cpp"],
+ platforms = MULTI_PLATFORM,
+ target_compatible_with = SKIP_ON_WINDOWS,
+ visibility = ["//src/main/java/com/code_intelligence/jazzer/android:__pkg__"],
+ deps = [
+ "//src/main/java/com/code_intelligence/jazzer/android:android_runtime.hdrs",
+ ],
+)
+
+cc_library(
+ name = "coverage_tracker",
+ srcs = ["coverage_tracker.cpp"],
+ hdrs = ["coverage_tracker.h"],
+ deps = ["//src/main/java/com/code_intelligence/jazzer/runtime:coverage_map.hdrs"],
+ # Symbols are only referenced dynamically via JNI.
+ alwayslink = True,
+)
+
+cc_library(
+ name = "fuzz_target_runner",
+ srcs = ["fuzz_target_runner.cpp"],
+ hdrs = ["fuzz_target_runner.h"],
+ linkopts = select({
+ "@platforms//os:windows": [],
+ "//conditions:default": ["-ldl"],
+ }),
+ deps = [
+ ":sanitizer_symbols",
+ "//src/main/java/com/code_intelligence/jazzer/runtime:fuzz_target_runner_natives.hdrs",
+ ],
+ # With sanitizers, symbols are only referenced dynamically via JNI.
+ alwayslink = True,
+)
+
+cc_library(
+ name = "fuzzed_data_provider",
+ srcs = ["fuzzed_data_provider.cpp"],
+ visibility = [
+ "//launcher:__pkg__",
+ ],
+ deps = [
+ "//src/main/java/com/code_intelligence/jazzer/driver:fuzzed_data_provider_impl.hdrs",
+ ],
+ # Symbols may only be referenced dynamically via JNI.
+ alwayslink = True,
+)
+
+cc_jni_library(
+ name = "jazzer_fuzzed_data_provider",
+ platforms = MULTI_PLATFORM,
+ visibility = ["//src/main/java/com/code_intelligence/jazzer/driver:__pkg__"],
+ deps = [":fuzzed_data_provider"],
+)
+
+cc_library(
+ name = "jazzer_fuzzer_callbacks",
+ srcs = ["jazzer_fuzzer_callbacks.cpp"],
+ deps = [
+ ":sanitizer_hooks_with_pc",
+ "//src/main/java/com/code_intelligence/jazzer/runtime:trace_data_flow_native_callbacks.hdrs",
+ ],
+ alwayslink = True,
+)
+
+cc_jni_library(
+ name = "jazzer_signal_handler",
+ srcs = ["signal_handler.cpp"],
+ platforms = MULTI_PLATFORM,
+ visibility = ["//src/main/java/com/code_intelligence/jazzer/driver:__pkg__"],
+ deps = ["//src/main/java/com/code_intelligence/jazzer/driver:signal_handler.hdrs"],
+)
+
+cc_library(
+ name = "libfuzzer_callbacks",
+ srcs = ["libfuzzer_callbacks.cpp"],
+ deps = [
+ "//src/main/java/com/code_intelligence/jazzer/runtime:trace_data_flow_native_callbacks.hdrs",
+ "@com_google_absl//absl/strings",
+ ],
+ # Symbols are only referenced dynamically via JNI.
+ alwayslink = True,
+)
+
+cc_library(
+ name = "mutator",
+ srcs = ["mutator.cpp"],
+ deps = ["//src/main/java/com/code_intelligence/jazzer/runtime:mutator.hdrs"],
+ # Symbols are only referenced dynamically via JNI.
+ alwayslink = True,
+)
+
+cc_library(
+ name = "init_jazzer_preload",
+ srcs = ["init_jazzer_preload.cpp"],
+ linkopts = ["-ldl"],
+ target_compatible_with = SKIP_ON_WINDOWS,
+ deps = ["@fmeum_rules_jni//jni"],
+ # Symbols are only referenced dynamically via JNI.
+ alwayslink = True,
+)
+
+cc_library(
+ name = "sanitizer_hooks_with_pc",
+ hdrs = ["sanitizer_hooks_with_pc.h"],
+ visibility = ["//:__subpackages__"],
+)
+
+cc_library(
+ name = "sanitizer_symbols",
+ srcs = ["sanitizer_symbols.cpp"],
+ # Symbols are referenced dynamically by libFuzzer.
+ alwayslink = True,
+)
+
+cc_test(
+ name = "fuzzed_data_provider_test",
+ size = "small",
+ srcs = ["fuzzed_data_provider_test.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/std:c++17"],
+ "//conditions:default": ["-std=c++17"],
+ }),
+ deps = [
+ ":fuzzed_data_provider",
+ "@fmeum_rules_jni//jni",
+ "@googletest//:gtest",
+ "@googletest//:gtest_main",
+ ],
+)