aboutsummaryrefslogtreecommitdiff
path: root/llvm_mode
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-04-17 10:08:56 +0200
committervan Hauser <vh@thc.org>2020-04-17 10:08:56 +0200
commitef311ec70cd9f58cc58fe67fd693d94e01edbf98 (patch)
tree9b74f79e93d3b5412cbe6daea12aa468ddb5ee01 /llvm_mode
parent5b70d23211ddeddfb4d1dfce29a50234d08e9502 (diff)
downloadafl++-ef311ec70cd9f58cc58fe67fd693d94e01edbf98.tar.gz
done implementing AFL_MAP_SIZE
Diffstat (limited to 'llvm_mode')
-rw-r--r--llvm_mode/afl-clang-fast.c10
-rw-r--r--llvm_mode/afl-llvm-lto-instrumentation.so.cc28
2 files changed, 25 insertions, 13 deletions
diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c
index c0471033..5abe61c6 100644
--- a/llvm_mode/afl-clang-fast.c
+++ b/llvm_mode/afl-clang-fast.c
@@ -796,6 +796,16 @@ int main(int argc, char **argv, char **envp) {
}
+ u8 *ptr2;
+ if (!be_quiet && instrument_mode != INSTRUMENT_LTO &&
+ ((ptr2 = getenv("AFL_MAP_SIZE")) || (ptr2 = getenv("AFL_MAPSIZE")))) {
+
+ u32 map_size = atoi(ptr2);
+ if (map_size != MAP_SIZE)
+ FATAL("AFL_MAP_SIZE is not supported by afl-clang-fast");
+
+ }
+
if (debug) {
SAYF(cMGN "[D]" cRST " cd \"%s\";", getthecwd());
diff --git a/llvm_mode/afl-llvm-lto-instrumentation.so.cc b/llvm_mode/afl-llvm-lto-instrumentation.so.cc
index c5e7a2b7..a5058974 100644
--- a/llvm_mode/afl-llvm-lto-instrumentation.so.cc
+++ b/llvm_mode/afl-llvm-lto-instrumentation.so.cc
@@ -608,20 +608,22 @@ bool AFLLTOPass::runOnModule(Module &M) {
}
- // save highest location ID to global variable
- // do this after each function to fail faster
- if (afl_global_id > MAP_SIZE) {
-
- uint32_t pow2map = 1, map = afl_global_id;
- while ((map = map >> 1))
- pow2map++;
- FATAL(
- "We have %u blocks to instrument but the map size is only %u! Edit "
- "config.h and set MAP_SIZE_POW2 from %u to %u, then recompile "
- "afl-fuzz and llvm_mode.",
- afl_global_id, MAP_SIZE, MAP_SIZE_POW2, pow2map);
+ }
- }
+ // save highest location ID to global variable
+ // do this after each function to fail faster
+ if (!be_quiet && afl_global_id > MAP_SIZE) {
+
+ uint32_t pow2map = 1, map = afl_global_id;
+ while ((map = map >> 1))
+ pow2map++;
+ WARNF(
+ "We have %u blocks to instrument but the map size is only %u. Either "
+ "edit config.h and set MAP_SIZE_POW2 from %u to %u, then recompile "
+ "afl-fuzz and llvm_mode and then make this target - or set "
+ "AFL_MAP_SIZE with at least size %u when running afl-fuzz with this "
+ "target.",
+ afl_global_id, MAP_SIZE, MAP_SIZE_POW2, pow2map, afl_global_id);
}