about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--docs/Changelog.md27
-rw-r--r--include/hash.h2
-rw-r--r--src/afl-performance.c20
3 files changed, 29 insertions, 20 deletions
diff --git a/docs/Changelog.md b/docs/Changelog.md
index 751dd707..caf262fc 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -11,13 +11,13 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
 
 ### Version ++2.65d (dev)
   - afl-fuzz:
-     - -S secondary nodes now only sync from the main node to increase performance,
-       the -M main node still syncs from everyone. Added checks that ensure
-       exactly one main node is present and warn otherwise
-     - If no main node is present at a sync one secondary node automatically becomes
-       a temporary main node until a real main nodes shows up
-     - switched murmur2 hashing and random() for xxh3 and xoshiro256**, giving up to 5.5% speed
-       increase
+     - -S secondary nodes now only sync from the main node to increase
+       performance, the -M main node still syncs from everyone. Added checks
+       that ensure exactly one main node is present and warn otherwise
+     - If no main node is present at a sync one secondary node automatically
+       becomes a temporary main node until a real main nodes shows up
+     - switched murmur2 hashing and random() for xxh3 and xoshiro256**,
+       resulting in an up to 5.5% speed increase
      - Resizing the window does not crash afl-fuzz anymore
      - fix/update to MOpt (thanks to arnow117)
      - added MOpt dictionary support from repo
@@ -26,10 +26,10 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
       better coverage. The original afl instrumentation can be set via
       AFL_LLVM_INSTRUMENT=AFL. This is automatically done when the WHITELIST
       feature is used.
-    - some targets want a ld variant for LD that is not gcc/clang but ld, added
-      afl-ld-lto to solve this
-    - lowered minimum required llvm version to 3.4 (except LLVMInsTrim,
-      which needs 3.8.0)
+    - some targets want a ld variant for LD that is not gcc/clang but ld,
+      added afl-ld-lto to solve this
+    - lowered minimum required llvm version to 3.4 (except LLVMInsTrim, which
+      needs 3.8.0)
     - WHITELIST feature now supports wildcards (thanks to sirmc)
     - small change to cmplog to make it work with current llvm 11-dev
     - added AFL_LLVM_LAF_ALL, sets all laf-intel settings
@@ -41,6 +41,7 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
     - enable snapshot lkm also for persistent mode
   - Unicornafl
     - Added powerPC support from unicorn/next
+    - rust bindings!
   - persistent mode shared memory testcase handover (instead of via
     files/stdin) - 10-100% performance increase
   - General support for 64 bit PowerPC, RiscV, Sparc etc.
@@ -49,8 +50,8 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
     the same second
   - added lots of dictionaries from oss-fuzz, go-fuzz and Jakub Wilk
   - added former post_library examples to examples/custom_mutators/
-  - Dockerfile upgraded to Ubuntu 20.04 Focal and installing llvm 11 and gcc 10
-    so afl-clang-lto can be build
+  - Dockerfile upgraded to Ubuntu 20.04 Focal and installing llvm 11 and
+    gcc 10 so afl-clang-lto can be build
 
 
 ### Version ++2.65c (release):
diff --git a/include/hash.h b/include/hash.h
index 09dabb59..6910e0e2 100644
--- a/include/hash.h
+++ b/include/hash.h
@@ -35,7 +35,7 @@ u64 hash64(const void *key, u32 len, u64 seed);
 
 #if 0
 
-The following code is disabled because xxh3 with a 32 bit resukt is 30% faster
+The following code is disabled because xxh3 is 30% faster
 
   #ifdef __x86_64__
 
diff --git a/src/afl-performance.c b/src/afl-performance.c
index 7a911ffd..28564eb8 100644
--- a/src/afl-performance.c
+++ b/src/afl-performance.c
@@ -1,10 +1,11 @@
-/*  Written in 2019 by David Blackman and Sebastiano Vigna (vigna@acm.org)
+/*
+   Written in 2019 by David Blackman and Sebastiano Vigna (vigna@acm.org)
 
-To the extent possible under law, the author has dedicated all copyright
-and related and neighboring rights to this software to the public domain
-worldwide. This software is distributed without any warranty.
+   To the extent possible under law, the author has dedicated all copyright
+   and related and neighboring rights to this software to the public domain
+   worldwide. This software is distributed without any warranty.
 
-See <http://creativecommons.org/publicdomain/zero/1.0/>.
+   See <http://creativecommons.org/publicdomain/zero/1.0/>.
 
    This is xoshiro256++ 1.0, one of our all-purpose, rock-solid generators.
    It has excellent (sub-ns) speed, a state (256 bits) that is large
@@ -15,13 +16,17 @@ See <http://creativecommons.org/publicdomain/zero/1.0/>.
 
    The state must be seeded so that it is not everywhere zero. If you have
    a 64-bit seed, we suggest to seed a splitmix64 generator and use its
-   output to fill s. */
+   output to fill s[].
+*/
 
 #include <stdint.h>
 #include "afl-fuzz.h"
 #include "types.h"
 #include "xxh3.h"
 
+/* we use xoshiro256** instead of rand/random because it is 10x faster and has
+   better randomness properties. */
+
 static inline uint64_t rotl(const uint64_t x, int k) {
 
   return (x << k) | (x >> (64 - k));
@@ -122,6 +127,9 @@ void long_jump(afl_state_t *afl) {
 
 }
 
+/* we switch from afl's murmur implementation to xxh3 as it is 30% faster -
+   and get 64 bit hashes instead of just 32 bit. Less collisions! :-) */
+
 u32 hash32(const void *key, u32 len, u32 seed) {
 
   return XXH64(key, len, seed) % 0x100000000;