diff options
-rw-r--r-- | docs/Changelog.md | 27 | ||||
-rw-r--r-- | include/hash.h | 2 | ||||
-rw-r--r-- | src/afl-performance.c | 20 |
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; |