about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile22
-rw-r--r--docs/ChangeLog1
-rw-r--r--src/afl-fuzz-bitmap.c2
3 files changed, 21 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 0c0b73c5..57d4c8c7 100644
--- a/Makefile
+++ b/Makefile
@@ -32,9 +32,25 @@ PROGS       = afl-gcc afl-fuzz afl-showmap afl-tmin afl-gotcpu afl-analyze
 SH_PROGS    = afl-plot afl-cmin afl-whatsup afl-system-config
 MANPAGES=$(foreach p, $(PROGS) $(SH_PROGS), $(p).8)
 
-CFLAGS     ?= -O3 -funroll-loops
-CFLAGS     += -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign -I include/ \
-	      -DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \
+ifeq "$(shell echo 'int main() {return 0; }' | $(CC) -x c - -march=native -o .test 2>/dev/null && echo 1 || echo 0 ; rm -f .test )" "1"
+	CFLAGS_PERFORMANCE += -march=native
+endif
+
+ifeq "$(shell echo 'int main() {return 0; }' | $(CC) -x c - -flto=full -o .test 2>/dev/null && echo 1 || echo 0 ; rm -f .test )" "1"
+	CFLAGS_PERFORMANCE += -flto=full
+else
+ ifeq "$(shell echo 'int main() {return 0; }' | $(CC) -x c - -flto=thin -o .test 2>/dev/null && echo 1 || echo 0 ; rm -f .test )" "1"
+	CFLAGS_PERFORMANCE += -flto=thin
+ else
+  ifeq "$(shell echo 'int main() {return 0; }' | $(CC) -x c - -flto -o .test 2>/dev/null && echo 1 || echo 0 ; rm -f .test )" "1"
+	CFLAGS_PERFORMANCE += -flto
+  endif
+ endif
+endif
+
+CFLAGS     ?= -funroll-loops -Ofast $(CFLAGS_PERFORMANCE)
+CFLAGS     += -Wall -g -Wno-pointer-sign -I include/ \
+              -DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \
               -DDOC_PATH=\"$(DOC_PATH)\" -Wno-unused-function
 
 AFL_FUZZ_FILES = $(wildcard src/afl-fuzz*.c)
diff --git a/docs/ChangeLog b/docs/ChangeLog
index a94a2038..594f75e9 100644
--- a/docs/ChangeLog
+++ b/docs/ChangeLog
@@ -19,6 +19,7 @@ Version ++2.60d (develop):
 
   - afl-fuzz:
      - now prints the real python version support compiled in
+     - set stronger performance compile options and little tweaks
   - afl-clang-fast now shows in the help output for which llvm version it
     was compiled for
   - added blacklisted function check in llvm_mode
diff --git a/src/afl-fuzz-bitmap.c b/src/afl-fuzz-bitmap.c
index 0f611cdf..515a7a79 100644
--- a/src/afl-fuzz-bitmap.c
+++ b/src/afl-fuzz-bitmap.c
@@ -524,7 +524,7 @@ u8 save_if_interesting(char** argv, void* mem, u32 len, u8 fault) {
   struct queue_entry* q = queue;
   while (q) {
 
-    if (q->exec_cksum == cksum) q->n_fuzz = q->n_fuzz + 1;
+    if (q->exec_cksum == cksum) { q->n_fuzz = q->n_fuzz + 1; break ; }
 
     q = q->next;