diff options
author | Kostya Serebryany <kcc@google.com> | 2017-03-23 22:43:12 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2017-03-23 22:43:12 +0000 |
commit | 6ca44f91617d2d6f6d1dd0bb371f275a6a1d1bc6 (patch) | |
tree | 2e4011ad506595a2e0513413af63ee10fdadd52d /llvm/lib/Fuzzer/test/FuzzerUnittest.cpp | |
parent | 2705226a2b8225ef1b7297848390b67f44629471 (diff) | |
download | bcm5719-llvm-6ca44f91617d2d6f6d1dd0bb371f275a6a1d1bc6.tar.gz bcm5719-llvm-6ca44f91617d2d6f6d1dd0bb371f275a6a1d1bc6.zip |
[libFuzzer] create experimental support for user-provided coverage signal
llvm-svn: 298654
Diffstat (limited to 'llvm/lib/Fuzzer/test/FuzzerUnittest.cpp')
-rw-r--r-- | llvm/lib/Fuzzer/test/FuzzerUnittest.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/Fuzzer/test/FuzzerUnittest.cpp b/llvm/lib/Fuzzer/test/FuzzerUnittest.cpp index 5eb915a9162..5705396f451 100644 --- a/llvm/lib/Fuzzer/test/FuzzerUnittest.cpp +++ b/llvm/lib/Fuzzer/test/FuzzerUnittest.cpp @@ -10,6 +10,7 @@ #include "FuzzerDictionary.h" #include "FuzzerMerge.h" #include "FuzzerMutate.h" +#include "FuzzerTracePC.h" #include "FuzzerRandom.h" #include "gtest/gtest.h" #include <memory> @@ -750,3 +751,25 @@ TEST(Merge, Merge) { "STARTED 3 1000\nDONE 3 1 \n", {"B", "D"}, 3); } + +TEST(Fuzzer, ForEachNonZeroByte) { + const size_t N = 64; + alignas(64) uint8_t Ar[N + 8] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, + 9, 9, 9, 9, 9, 9, 9, 9, + }; + typedef std::vector<std::pair<size_t, uint8_t> > Vec; + Vec Res, Expected; + auto CB = [&](size_t Idx, uint8_t V) { Res.push_back({Idx, V}); }; + ForEachNonZeroByte(Ar, Ar + N, 100, CB); + Expected = {{108, 1}, {109, 2}, {118, 3}, {120, 4}, + {135, 5}, {137, 6}, {146, 7}, {163, 8}}; + EXPECT_EQ(Res, Expected); +} |