switching llvm_mode default to pcguard
MODIFY
docs/Changelog.md
docs/Changelog.md
@@ -17,6 +17,10 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
- If no master is present at a sync one slave automatically becomes
a temporary master until a real master shows up
- llvm_mode:
+ - the default instrumentation is now PCGUARD, as it is faster and provides
+ better coverage. The original afl instrumentation can be set via
+ AFL_LLVM_INSTRUMENT=AFL. This is automatically done when the WHITELIST
+ feature is used.
- lowered minimum required llvm version to 3.4 (except LLVMInsTrim,
which needs 3.8.0)
- fixed afl-gcc/afl-as that could break on fast systems reusing pids in

MODIFY
llvm_mode/afl-clang-fast.c
llvm_mode/afl-clang-fast.c
@@ -584,9 +584,12 @@ int main(int argc, char **argv, char **envp) {
be_quiet = 1;
-#ifdef USE_TRACE_PC
- instrument_mode = INSTRUMENT_PCGUARD;
+#ifndef USE_TRACE_PC
+ if (getenv("AFL_LLVM_WHITELIST"))
+ instrument_mode = INSTRUMENT_AFL;
+ else
#endif
+ instrument_mode = INSTRUMENT_PCGUARD;
if (getenv("USE_TRACE_PC") || getenv("AFL_USE_TRACE_PC") ||
getenv("AFL_LLVM_USE_TRACE_PC") || getenv("AFL_TRACE_PC")) {
@@ -780,6 +783,9 @@ int main(int argc, char **argv, char **envp) {
"AFL_LLVM_NOT_ZERO and AFL_LLVM_SKIP_NEVERZERO can not be set "
"together");
+ if (instrument_mode == INSTRUMENT_PCGUARD && getenv("AFL_LLVM_WHITELIST"))
+ WARNF("Instrumentation type PCGUARD does not support AFL_LLVM_WHITELIST!");
+
if (argc < 2 || strcmp(argv[1], "-h") == 0) {
if (!lto_mode)
@@ -843,12 +849,13 @@ int main(int argc, char **argv, char **envp) {
SAYF(
"\nafl-clang-fast specific environment variables:\n"
"AFL_LLVM_CMPLOG: log operands of comparisons (RedQueen mutator)\n"
- "AFL_LLVM_INSTRUMENT: set instrumentation mode: DEFAULT, CFG "
- "(INSTRIM), PCGUARD, LTO, CTX, NGRAM-2 ... NGRAM-16\n"
- " You can also use the old environment variables instead:"
- " AFL_LLVM_USE_TRACE_PC: use LLVM trace-pc-guard instrumentation\n"
+ "AFL_LLVM_INSTRUMENT: set instrumentation mode: AFL, CFG "
+ "(INSTRIM), PCGUARD [DEFAULT], LTO, CTX, NGRAM-2 ... NGRAM-16\n"
+ " You can also use the old environment variables instead:\n"
+ " AFL_LLVM_USE_TRACE_PC: use LLVM trace-pc-guard instrumentation "
+ "[DEFAULT]\n"
" AFL_LLVM_INSTRIM: use light weight instrumentation InsTrim\n"
- " AFL_LLVM_INSTRIM_LOOPHEAD: optimize loop tracing for speed (sub "
+ " AFL_LLVM_INSTRIM_LOOPHEAD: optimize loop tracing for speed ("
"option to INSTRIM)\n"
" AFL_LLVM_CTX: use context sensitive coverage\n"
" AFL_LLVM_NGRAM_SIZE: use ngram prev_loc count coverage\n");

switching llvm_mode default to pcguard