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.
The analysis library is built by lib/Fuzzing/CMakeLists.txt, while the
compiler and linker plugin directories provide complementary instrumentation
passes 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.