diff options
author | van Hauser <vh@thc.org> | 2019-07-03 19:10:48 +0200 |
---|---|---|
committer | van Hauser <vh@thc.org> | 2019-07-03 19:10:48 +0200 |
commit | 04c92c84705af4c602f134ed9a63b82be5ef75c9 (patch) | |
tree | 71fb515695bfe24cd5fbfb08218f5506638c5167 | |
parent | 00b22e37df4a4dff32cfe0037de1550c1917387f (diff) | |
download | afl++-04c92c84705af4c602f134ed9a63b82be5ef75c9.tar.gz |
notzero for afl-gcc
-rw-r--r-- | afl-as.h | 2 | ||||
-rw-r--r-- | llvm_mode/afl-llvm-pass.so.cc | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/afl-as.h b/afl-as.h index ebd57109..2c84f9f3 100644 --- a/afl-as.h +++ b/afl-as.h @@ -189,6 +189,7 @@ static const u8* main_payload_32 = " orb $1, (%edx, %edi, 1)\n" #else " incb (%edx, %edi, 1)\n" + " adcb $0, (%edx, %edi, 1)\n" #endif /* ^SKIP_COUNTS */ "\n" "__afl_return:\n" @@ -417,6 +418,7 @@ static const u8* main_payload_64 = " orb $1, (%rdx, %rcx, 1)\n" #else " incb (%rdx, %rcx, 1)\n" + " adcb $0, (%rdx, %rcx, 1)\n" #endif /* ^SKIP_COUNTS */ "\n" "__afl_return:\n" diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc index b77835c5..6b2232f2 100644 --- a/llvm_mode/afl-llvm-pass.so.cc +++ b/llvm_mode/afl-llvm-pass.so.cc @@ -287,6 +287,16 @@ bool AFLCoverage::runOnModule(Module &M) { Value *HowMuch = IRB.CreateAdd(ConstantInt::get(Int8Ty, 1), cf); Incr = IRB.CreateAdd(Counter, HowMuch); + } else if (neverZero_counters_str[0] == '5') { + auto cf = IRB.CreateICmpEQ(Incr, ConstantInt::get(Int8Ty, 0)); + auto carry = IRB.CreateZExt(cf, Int8Ty); + Incr = IRB.CreateAdd(Incr, carry); + + } else if (neverZero_counters_str[0] == '6') { + auto cf = IRB.CreateICmpULT(Incr, ConstantInt::get(Int8Ty, 1)); + auto carry = IRB.CreateZExt(cf, Int8Ty); + Incr = IRB.CreateAdd(Incr, carry); + // no other implementations yet } else { fprintf(stderr, "Error: unknown value for AFL_NZERO_COUNTS: %s (valid is 1-4)\n", neverZero_counters_str); |