aboutsummaryrefslogtreecommitdiff
path: root/docs/env_variables.txt
diff options
context:
space:
mode:
authorKhaled Yakdan <yakdan@code-intelligence.de>2019-08-01 14:22:48 +0200
committerKhaled Yakdan <yakdan@code-intelligence.de>2019-08-01 14:22:48 +0200
commitebf2c8caa590468e1eafbc257e44dc30af82e5f8 (patch)
tree2b277b9bde32b82c2cedf684869c96424baa005f /docs/env_variables.txt
parenta949b40d11956f34c51f4546412a73e0400d1ffc (diff)
parent7ca22cd552ff21ac0ef7cc1ab5e6e71912752a58 (diff)
downloadafl++-ebf2c8caa590468e1eafbc257e44dc30af82e5f8.tar.gz
Merge remote-tracking branch 'github/master' into custom_mutator
# Conflicts: # Makefile # afl-fuzz.c
Diffstat (limited to 'docs/env_variables.txt')
-rw-r--r--docs/env_variables.txt48
1 files changed, 38 insertions, 10 deletions
diff --git a/docs/env_variables.txt b/docs/env_variables.txt
index f5db3b4f..36fdc369 100644
--- a/docs/env_variables.txt
+++ b/docs/env_variables.txt
@@ -7,8 +7,8 @@ Environmental variables
users or for some types of custom fuzzing setups. See README for the general
instruction manual.
-1) Settings for afl-gcc, afl-clang, and afl-as
-----------------------------------------------
+1) Settings for afl-gcc, afl-clang, and afl-as - and gcc_plugin afl-gcc-fast
+----------------------------------------------------------------------------
Because they can't directly accept command-line options, the compile-time
tools make fairly broad use of environmental variables:
@@ -82,18 +82,22 @@ discussed in section #1, with the exception of:
- TMPDIR and AFL_KEEP_ASSEMBLY, since no temporary assembly files are
created.
+ - AFL_INST_RATIO, as we switched for instrim instrumentation which
+ is more effective but makes not much sense together with this option.
+
Then there are a few specific features that are only available in llvm_mode:
LAF-INTEL
=========
This great feature will split compares to series of single byte comparisons
- to allow afl-fuzz to find otherwise rather impossible paths.
+ to allow afl-fuzz to find otherwise rather impossible paths. It is not
+ restricted to Intel CPUs ;-)
- - Setting LAF_SPLIT_SWITCHES will split switch()es
+ - Setting AFL_LLVM_LAF_SPLIT_SWITCHES will split switch()es
- - Setting LAF_TRANSFORM_COMPARES will split string compare functions
+ - Setting AFL_LLVM_LAF_TRANSFORM_COMPARES will split string compare functions
- - Setting LAF_SPLIT_COMPARES will split > 8 bit CMP instructions
+ - Setting AFL_LLVM_LAF_SPLIT_COMPARES will split > 8 bit CMP instructions
See llvm_mode/README.laf-intel for more information.
@@ -102,13 +106,33 @@ Then there are a few specific features that are only available in llvm_mode:
This feature allows selectively instrumentation of the source
- Setting AFL_LLVM_WHITELIST with a filename will only instrument those
- files that match these names.
+ files that match the names listed in this file.
See llvm_mode/README.whitelist for more information.
-Note that AFL_INST_RATIO will behave a bit differently than for afl-gcc,
-because functions are *not* instrumented unconditionally - so low values
-will have a more striking effect. For this tool, 0 is not a valid choice.
+ INSTRIM
+ =======
+ This feature increases the speed by whopping 20% but at the cost of a
+ lower path discovery and therefore coverage.
+
+ - Setting AFL_LLVM_INSTRIM activates this mode
+
+ - Setting AFL_LLVM_INSTRIM_LOOPHEAD=1 expands on INSTRIM to optimize loops.
+ afl-fuzz will only be able to see the path the loop took, but not how
+ many times it was called (unless it is a complex loop).
+
+ See llvm_mode/README.instrim
+
+ NOT_ZERO
+ ========
+
+ - Setting AFL_LLVM_NOT_ZERO=1 during compilation will use counters
+ that skip zero on overflow. This is the default for llvm >= 9,
+ however for llvm versions below that this will increase an unnecessary
+ slowdown due a performance issue that is only fixed in llvm 9+.
+ This feature increases path discovery by a little bit.
+
+ See llvm_mode/README.neverzero
3) Settings for afl-fuzz
------------------------
@@ -220,6 +244,10 @@ The QEMU wrapper used to instrument binary-only code supports several settings:
- Setting AFL_INST_LIBS causes the translator to also instrument the code
inside any dynamically linked libraries (notably including glibc).
+
+ - Setting AFL_QEMU_COMPCOV enables the CompareCoverage tracing of all
+ cmp and sub in x86 and x86_64. Support for other architectures and
+ comparison functions (mem/strcmp et al.) is planned.
- The underlying QEMU binary will recognize any standard "user space
emulation" variables (e.g., QEMU_STACK_SIZE), but there should be no