Understanding the Difference in Instrumentation Edge Count Between LTO and Classic Modes #2285
Replies: 2 comments · 4 replies
-
Suggest that you can read Based on LTO feature provided by LLVM, the instrumentation pass can be mounted and work on almost whole-program, but per compilation unit in classic mode. It's different optimize pipeline from LLVM toolchain that matters mostly, not the pass itself load from AFL++. AFLplusplus/instrumentation/SanitizerCoveragePCGUARD.so.cc Lines 228 to 232 in 4eaacfb AFLplusplus/instrumentation/SanitizerCoverageLTO.so.cc Lines 351 to 355 in 4eaacfb |
Beta Was this translation helpful? Give feedback.
-
classic mode has colliding coverage and for even a medium sized project (ffmpeg is large) you will have will loose coverage information because of this. LTO does not have this issue so naturally you see more edges and more paths. |
Beta Was this translation helpful? Give feedback.
-
Hello, when using the LTO mode to instrument large-scale programs like FFmpeg, I found that the number of edges instrumented by LTO mode is greater than the number of edges recorded with the classic mode. My understanding is that LTO mode optimizes the program, making the control flow graph (CFG) more complex, which increases the number of edges. Is my understanding correct? If not, why does LTO mode result in more edges being instrumented compared to classic mode? Additionally, does LTO mode adopt a strategy for simplified instrumentation?
Beta Was this translation helpful? Give feedback.
All reactions