Cargo Features

[dependencies]
libafl_targets = { version = "0.14.0", default-features = false, features = ["std", "introspection", "libfuzzer", "libfuzzer_define_run_driver", "libfuzzer_interceptors", "libfuzzer_oom", "sanitizers_flags", "pointer_maps", "sancov_pcguard_edges", "sancov_pcguard_hitcounts", "sancov_value_profile", "sancov_8bit", "sancov_ngram4", "sancov_ngram8", "sancov_ctx", "sancov_cmplog", "sancov_pcguard", "sanitizer_interfaces", "clippy", "observers", "common", "coverage", "cmplog", "forkserver", "windows_asan", "whole_archive", "cmplog_extended_instrumentation", "function-logging", "track_hit_feedbacks"] }
default = cmplog, common, coverage, forkserver, sanitizers_flags, std, windows_asan

These default features are set whenever libafl_targets is added without default-features = false somewhere in the dependency tree.

std default libfuzzer?

Enables std of libafl

libafl:

Feature Flags

General Features

Enables features that need rust's std lib to work, like print, env, ... support

Affects libafl_targets::drcov, libafl_targets::windows_asan

introspection

Enables introspection of libafl

libafl:

Collects performance statistics of the fuzzing pipeline and displays it on Monitor components

libfuzzer libfuzzer_define_run_driver? libfuzzer_interceptors? libfuzzer_no_link_main? libfuzzer_oom? = common, std

Affects libafl_targets::libfuzzer

libfuzzer_no_link_main libfuzzer_define_run_driver = libfuzzer
libfuzzer_interceptors = libfuzzer, sancov_cmplog
libfuzzer_oom = libfuzzer

Affects observers::oom

sanitizers_flags default
pointer_maps
sancov_pcguard_edges = coverage

Affects coverage::edges_map_mut_slice, coverage::std_edges_map_observer, coverage::edges_max_num, libafl_targets::sancov_pcguard

sancov_pcguard_hitcounts sancov_pcguard? = coverage

Affects coverage::edges_map_mut_slice, coverage::std_edges_map_observer, coverage::edges_max_num, libafl_targets::sancov_pcguard

sancov_value_profile = common

Affects libafl_targets::sancov_cmp

sancov_8bit

Affects libafl_targets::sancov_8bit

sancov_ngram4 = coverage

Affects sancov_pcguard::PREV_ARRAY_4, sancov_pcguard::SHR_4, sancov_pcguard::NgramHook, coverage::edges_map_mut_slice, coverage::std_edges_map_observer, coverage::edges_max_num, libafl_targets::sancov_pcguard

sancov_ngram8 = coverage

Affects sancov_pcguard::PREV_ARRAY_8, sancov_pcguard::SHR_8, sancov_pcguard::NgramHook, coverage::edges_map_mut_slice, coverage::std_edges_map_observer, coverage::edges_max_num, libafl_targets::sancov_pcguard

sancov_ctx = coverage

Affects sancov_pcguard::CtxHook, coverage::edges_map_mut_slice, coverage::std_edges_map_observer, coverage::edges_max_num, libafl_targets::sancov_pcguard

sancov_cmplog libfuzzer_interceptors? = common

Defines cmp and __sanitizer_weak_hook functions. Use libfuzzer_interceptors to define interceptors (only compatible with Linux)

Affects libafl_targets::sancov_cmp

sancov_pcguard = sancov_pcguard_hitcounts
sanitizer_interfaces

Affects libafl_targets::sanitizer_ifaces

clippy

Ignore compiler warnings during clippy

observers = ahash, meminterval
common default cmplog coverage forkserver function-logging? libfuzzer? sancov_cmplog? sancov_value_profile? windows_asan

Compile common C code defining sanitizer options and cross-platform intrinsics

coverage default sancov_ctx? sancov_ngram4? sancov_ngram8? sancov_pcguard_edges? sancov_pcguard_hitcounts? = common

Compile C code definining coverage maps

Affects libafl_targets::coverage

cmplog default = common

Compile C code defining cmp log maps

forkserver default = common

Compile C code for forkserver support

Affects libafl_targets::forkserver

windows_asan default = common

Compile C code for ASAN on Windows

Affects libafl_targets::windows_asan

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.

Affects cmps::libafl_cmplog_map_extended

function-logging = common

Affects libafl_targets::call

track_hit_feedbacks

Enables track_hit_feedbacks of libafl

libafl:

Tracks the Feedbacks and the Objectives that were interesting for a Testcase

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

meminterval observers?
ahash observers?