[package] name = "libafl_targets" version.workspace = true authors = ["Andrea Fioraldi "] description = "Common code for target instrumentation that can be used combined with LibAFL" documentation = "https://docs.rs/libafl_targets" repository = "https://github.com/AFLplusplus/LibAFL/" readme = "../README.md" license = "MIT OR Apache-2.0" keywords = ["fuzzing", "testing"] edition = "2021" rust-version = "1.82" categories = [ "development-tools::testing", "emulators", "embedded", "os", "no-std", ] [package.metadata.docs.rs] all-features = true [features] default = [ "std", "sanitizers_flags", "windows_asan", "forkserver", "cmplog", "coverage", "common", ] std = ["libafl/std"] introspection = ["libafl/introspection"] libfuzzer = ["std", "common"] libfuzzer_no_link_main = ["libfuzzer"] libfuzzer_define_run_driver = ["libfuzzer"] libfuzzer_interceptors = ["libfuzzer", "sancov_cmplog"] libfuzzer_oom = ["libfuzzer"] sanitizers_flags = [] pointer_maps = [] sancov_pcguard_edges = ["coverage"] sancov_pcguard_hitcounts = ["coverage"] sancov_value_profile = ["common"] sancov_8bit = [] sancov_ngram4 = ["coverage"] sancov_ngram8 = ["coverage"] sancov_ctx = ["coverage"] sancov_cmplog = [ "common", ] # Defines cmp and __sanitizer_weak_hook functions. Use libfuzzer_interceptors to define interceptors (only compatible with Linux) sancov_pcguard = ["sancov_pcguard_hitcounts"] sanitizer_interfaces = [] clippy = [] # Ignore compiler warnings during clippy observers = ["meminterval", "ahash"] common = [ ] # Compile common C code defining sanitizer options and cross-platform intrinsics coverage = ["common"] # Compile C code definining coverage maps cmplog = ["common"] # Compile C code defining cmp log maps forkserver = ["common"] # Compile C code for forkserver support windows_asan = ["common"] # Compile C code for ASAN on Windows whole_archive = [] # use +whole-archive to ensure the presence of weak symbols cmplog_extended_instrumentation = [ ] # support for aflpp cmplog map, we will remove this once aflpp and libafl cmplog shares the same LLVM passes. function-logging = ["common"] track_hit_feedbacks = ["libafl/track_hit_feedbacks"] [build-dependencies] bindgen = "0.70.1" cc = { version = "1.1.21", features = ["parallel"] } rustversion = "1.0.17" [dependencies] libafl = { workspace = true, features = [] } libafl_bolts = { workspace = true, features = [] } libc = { workspace = true } hashbrown = { workspace = true, default-features = true } once_cell = "1.19.0" log = { workspace = true } rustversion = { workspace = true } rangemap = { workspace = true } serde = { workspace = true, default-features = false, features = [ "alloc", ] } # serialization lib meminterval = { workspace = true, features = ["serde"], optional = true } ahash = { workspace = true, default-features = false, optional = true } [lints] workspace = true