summary refs log tree commit diff
path: root/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'README.txt')
-rw-r--r--README.txt15
1 files changed, 15 insertions, 0 deletions
diff --git a/README.txt b/README.txt
index 7d99e3d..7b7868c 100644
--- a/README.txt
+++ b/README.txt
@@ -25,6 +25,12 @@ Usage: ./afl-dyninst-dfvD -i <binary> -o <binary> -l <library> -e <address> -E <
    -f: try to fix a dyninst bug that leads to crashes
    -S: do not instrument this function (repeat for more than one)
    -D: instrument fork server and forced exit functions but no basic blocks
+   -x: experimental performance modes (can be set up to three times)
+         level 1: ~40-50%% improvement
+         level 2: ~100%% vs normal, ~40%% vs level 1
+         level 3: ~110%% vs normal, ~5%% vs level 2
+       level 3 replaces how basic block coverage works and can be tried if
+       normal mode or level 1 or 2 lead to crashes randomly.
    -v: verbose output
 
 Switch -l is used to supply the names of the libraries that should 
@@ -72,6 +78,15 @@ basic block instrumentation. That would serve no purpose - unless there is
 another interesting tool coming up: afl-pin (already available at
 https://github.com/vanhauser-thc/afl-pin) and afl-dynamorio (wip)
 
+Switch -x enables performance modes, -x level 1, -xx level 2 and  -xxx level 3
+level 3 is only availble for intel x64 and can either save your ass or not
+work for you whatsoever.
+level 1 (-x) is highly recommended (+50%).
+level 2 (-xx) gives an additonal 40% but removes (usually unnecessary) precautions
+level 3 (-xxx) gives only a very small additional speed and works differently,
+ it basically replaces the instrumented instructions by dyninst with own ones.
+ this is a good idea when you run into dyninst bugs.
+
 
 Compiling:
 ----------