add no splicing compile option and print used compile options in afl-fuzz help
MODIFY
GNUmakefile
GNUmakefile
@@ -36,6 +36,10 @@ SH_PROGS = afl-plot afl-cmin afl-cmin.bash afl-whatsup afl-system-config
MANPAGES=$(foreach p, $(PROGS) $(SH_PROGS), $(p).8) afl-as.8
ASAN_OPTIONS=detect_leaks=0
+ifdef NO_SPLICING
+ override CFLAGS += -DNO_SPLICING
+endif
+
ifdef ASAN_BUILD
$(info Compiling ASAN version of binaries)
override CFLAGS+=$(ASAN_CFLAGS)
@@ -344,7 +348,10 @@ help:
@echo ASAN_BUILD - compiles with memory sanitizer for debug purposes
@echo DEBUG - no optimization, -ggdb3, all warnings and -Werror
@echo PROFILING - compile afl-fuzz with profiling information
+ @echo NO_PYTHON - disable python support
+ @echo NO_SPLICING - disables splicing mutation in afl-fuzz, not recommended for normal fuzzing
@echo AFL_NO_X86 - if compiling on non-intel/amd platforms
+ @echo "LLVM_CONFIG - if your distro doesn't use the standard name for llvm-config (e.g. Debian)"
@echo "=========================================="
@echo e.g.: make ASAN_BUILD=1

MODIFY
README.md
README.md
@@ -212,6 +212,7 @@ These build options exist:
* DEBUG - no optimization, -ggdb3, all warnings and -Werror
* PROFILING - compile with profiling information (gprof)
* NO_PYTHON - disable python support
+* NO_SPLICING - disables splicing mutation in afl-fuzz, not recommended for normal fuzzing
* AFL_NO_X86 - if compiling on non-intel/amd platforms
* LLVM_CONFIG - if your distro doesn't use the standard name for llvm-config (e.g. Debian)

MODIFY
docs/Changelog.md
docs/Changelog.md
@@ -34,6 +34,8 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
- crashing seeds are now not prohibiting a run anymore but are
skipped. They are used for splicing though.
- set the default power schedule to the superiour "seek" schedule
+ - added NO_SPLICING compile option and makefile define
+ - print special compile time options used in help output
- instrumentation
- We received an enhanced gcc_plugin module from AdaCore, thank you
very much!!

MODIFY
src/afl-fuzz-state.c
src/afl-fuzz-state.c
@@ -102,7 +102,9 @@ void afl_state_init(afl_state_t *afl, uint32_t map_size) {
afl->stats_update_freq = 1;
afl->stats_avg_exec = -1;
afl->skip_deterministic = 1;
+#ifndef NO_SPLICING
afl->use_splicing = 1;
+#endif
afl->q_testcase_max_cache_size = TESTCASE_CACHE_SIZE * 1048576UL;
afl->q_testcase_max_cache_entries = 64 * 1024;

MODIFY
src/afl-fuzz.c
src/afl-fuzz.c
@@ -224,6 +224,26 @@ static void usage(u8 *argv0, int more_help) {
SAYF("Compiled without python module support\n");
#endif
+#ifdef ASAN_BUILD
+ SAYF("Compiled with ASAN_BUILD\n\n");
+#endif
+
+#ifdef NO_SPLICING
+ SAYF("Compiled with NO_SPLICING\n\n");
+#endif
+
+#ifdef PROFILING
+ SAYF("Compiled with PROFILING\n\n");
+#endif
+
+#ifdef _DEBUG
+ SAYF("Compiled with _DEBUG\n\n");
+#endif
+
+#ifdef _AFL_DOCUMENT_MUTATIONS
+ SAYF("Compiled with _AFL_DOCUMENT_MUTATIONS\n\n");
+#endif
+
SAYF("For additional help please consult %s/README.md\n\n", doc_path);
exit(1);
@@ -1527,7 +1547,11 @@ int main(int argc, char **argv_orig, char **envp) {
} else {
+ #ifndef NO_SPLICING
afl->use_splicing = 1;
+ #else
+ afl->use_splicing = 0;
+ #endif
}

add no splicing compile option and print used compile options in afl-fuzz help