about summary refs log tree commit diff
path: root/llvm_mode/README.whitelist
diff options
context:
space:
mode:
authorAndrea Fioraldi <andreafioraldi@gmail.com>2019-08-31 11:31:51 +0200
committerAndrea Fioraldi <andreafioraldi@gmail.com>2019-08-31 11:31:51 +0200
commit659037eef53efc539a077331e52cd2657114d437 (patch)
treec20470279cd0a806df1e96ad354d76d6ae4b2216 /llvm_mode/README.whitelist
parent500a378fdf8664aea42f557f60c9842bb15f06a0 (diff)
downloadafl++-659037eef53efc539a077331e52cd2657114d437.tar.gz
modernize llvm_mode readmes
Diffstat (limited to 'llvm_mode/README.whitelist')
-rw-r--r--llvm_mode/README.whitelist75
1 files changed, 0 insertions, 75 deletions
diff --git a/llvm_mode/README.whitelist b/llvm_mode/README.whitelist
deleted file mode 100644
index ae044749..00000000
--- a/llvm_mode/README.whitelist
+++ /dev/null
@@ -1,75 +0,0 @@
-========================================
-Using afl++ with partial instrumentation
-========================================
-
-  This file describes how you can selectively instrument only the source files
-  that are interesting to you using the LLVM instrumentation provided by
-  afl++
-
-  Originally developed by Christian Holler (:decoder) <choller@mozilla.com>.
-
-
-1) Description and purpose
---------------------------
-
-When building and testing complex programs where only a part of the program is
-the fuzzing target, it often helps to only instrument the necessary parts of
-the program, leaving the rest uninstrumented. This helps to focus the fuzzer
-on the important parts of the program, avoiding undesired noise and
-disturbance by uninteresting code being exercised.
-
-For this purpose, I have added a "partial instrumentation" support to the LLVM
-mode of AFLFuzz that allows you to specify on a source file level which files
-should be compiled with or without instrumentation.
-
-
-2) Building the LLVM module
----------------------------
-
-The new code is part of the existing afl++ LLVM module in the llvm_mode/
-subdirectory. There is nothing specifically to do :)
-
-
-3) How to use the partial instrumentation mode
-----------------------------------------------
-
-In order to build with partial instrumentation, you need to build with
-afl-clang-fast and afl-clang-fast++ respectively. The only required change is
-that you need to set the environment variable AFL_LLVM_WHITELIST when calling
-the compiler.
-
-The environment variable must point to a file containing all the filenames
-that should be instrumented. For matching, the filename that is being compiled
-must end in the filename contained in this whitelist (to avoid breaking the
-matching when absolute paths are used during compilation).
-
-For example if your source tree looks like this:
-
-project/
-project/feature_a/a1.cpp
-project/feature_a/a2.cpp
-project/feature_b/b1.cpp
-project/feature_b/b2.cpp
-
-And you only want to test feature_a, then create a whitelist file containing:
-
-feature_a/a1.cpp
-feature_a/a2.cpp
-
-However if the whitelist file contains this, it works as well:
-
-a1.cpp
-a2.cpp
-
-but it might lead to files being unwantedly instrumented if the same filename
-exists somewhere else in the project.
-
-The created whitelist file is then set to AFL_INST_WHITELIST when you compile
-your program. For each file that didn't match the whitelist, the compiler will
-issue a warning at the end stating that no blocks were instrumented. If you
-didn't intend to instrument that file, then you can safely ignore that warning.
-
-For old LLVM versions this feature might require to be compiled with debug
-information (-g), however at least from llvm version 6.0 onwards this is not
-required anymore (and might hurt performance and crash detection, so better not
-use -g)