Directed Fuzzing Analyses
include/Fuzzing/Analysis/ and lib/Fuzzing/Analysis/ provide the core
distance and target-discovery analyses used by the Lotus directed fuzzing stack.
Location: include/Fuzzing/Analysis/, lib/Fuzzing/Analysis/
Main analyses:
AFLGoBasicBlockDistanceAnalysiscomputes basic-block distances.AFLGoFunctionDistanceAnalysiscomputes function-level distances, with a mode used for Hawkeye-style guidance.ExtendedCallGraphAnalysisenriches the call graph that those distance analyses consume.AFLGoTargetDetectionAnalysisdiscovers target basic blocks and annotated target instructions.DAFLAnalysisreads target input and produces optional block weights.
These are the strongest source-backed pieces of the fuzzing stack today. The
compiler and linker plugin directories are documented separately, but the active
analysis layer is the part clearly wired into lib/Fuzzing/CMakeLists.txt.
These analyses are consumed by the compiler and linker plugins documented in AFLGo Compiler Plugin and AFLGo Link-Time Instrumentation.
Pipeline guidance
Run target discovery before computing distances, then feed the resulting facts to the corresponding instrumentation stage. Distances are guidance signals, not proof that a target is reachable, so validate target annotations against the program revision being fuzzed. Recompute the analysis whenever the CFG or call graph changes materially.
See also Fuzzing Support.