summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Liew <dan@su-root.co.uk>2017-11-28 17:41:58 +0000
committerDan Liew <dan@su-root.co.uk>2017-11-28 17:41:58 +0000
commit37516b527bbc822e4e6955de60891678a07398dc (patch)
treebb5ec3ab699bee5a7f4a821a618f20465e63941a
parent4e9e9bf0cfd674a7dbbb4438fc148be6308ce957 (diff)
downloadbcm5719-llvm-37516b527bbc822e4e6955de60891678a07398dc.tar.gz
bcm5719-llvm-37516b527bbc822e4e6955de60891678a07398dc.zip
[LibFuzzer] Improve comments on `CounterToFeature()` function.
This is based on discussion in https://reviews.llvm.org/D40376 . The comments try to explain the reason for the current implementation and note that it might change in the future, so clients should not rely on this particular implementation. Differential Revision: https://reviews.llvm.org/D40565 llvm-svn: 319190
-rw-r--r--compiler-rt/lib/fuzzer/FuzzerTracePC.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/compiler-rt/lib/fuzzer/FuzzerTracePC.h b/compiler-rt/lib/fuzzer/FuzzerTracePC.h
index b3c9b986177..9df3d817db5 100644
--- a/compiler-rt/lib/fuzzer/FuzzerTracePC.h
+++ b/compiler-rt/lib/fuzzer/FuzzerTracePC.h
@@ -196,9 +196,20 @@ void ForEachNonZeroByte(const uint8_t *Begin, const uint8_t *End,
Handle8bitCounter(FirstFeature, P - Begin, V);
}
-// Given a non-zero Counters returns a number in [0,7].
+// Given a non-zero Counter returns a number in the range [0,7].
template<class T>
unsigned CounterToFeature(T Counter) {
+ // Returns a feature number by placing Counters into buckets as illustrated
+ // below.
+ //
+ // Counter bucket: [1] [2] [3] [4-7] [8-15] [16-31] [32-127] [128+]
+ // Feature number: 0 1 2 3 4 5 6 7
+ //
+ // This is a heuristic taken from AFL (see
+ // http://lcamtuf.coredump.cx/afl/technical_details.txt).
+ //
+ // This implementation may change in the future so clients should
+ // not rely on it.
assert(Counter);
unsigned Bit = 0;
/**/ if (Counter >= 128) Bit = 7;
OpenPOWER on IntegriCloud