diff options
Diffstat (limited to 'gnu/llvm/lib/Fuzzer/test/TableLookupTest.cpp')
-rw-r--r-- | gnu/llvm/lib/Fuzzer/test/TableLookupTest.cpp | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/gnu/llvm/lib/Fuzzer/test/TableLookupTest.cpp b/gnu/llvm/lib/Fuzzer/test/TableLookupTest.cpp deleted file mode 100644 index 4d8ab0611cd..00000000000 --- a/gnu/llvm/lib/Fuzzer/test/TableLookupTest.cpp +++ /dev/null @@ -1,44 +0,0 @@ -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. - -// Make sure the fuzzer eventually finds all possible values of a variable -// within a range. -#include <cassert> -#include <cstdint> -#include <cstdio> -#include <cstdlib> -#include <cstring> -#include <set> - -const size_t N = 1 << 12; - -// Define an array of counters that will be understood by libFuzzer -// as extra coverage signal. The array must be: -// * uint8_t -// * in the section named __libfuzzer_extra_counters. -// The target code may declare more than one such array. -// -// Use either `Counters[Idx] = 1` or `Counters[Idx]++;` -// depending on whether multiple occurrences of the event 'Idx' -// is important to distinguish from one occurrence. -#ifdef __linux__ -__attribute__((section("__libfuzzer_extra_counters"))) -#endif -static uint8_t Counters[N]; - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { - static std::set<uint16_t> SeenIdx; - if (Size != 4) return 0; - uint32_t Idx; - memcpy(&Idx, Data, 4); - Idx %= N; - assert(Counters[Idx] == 0); // libFuzzer should reset these between the runs. - // Or Counters[Idx]=1 if we don't care how many times this happened. - Counters[Idx]++; - SeenIdx.insert(Idx); - if (SeenIdx.size() == N) { - fprintf(stderr, "BINGO: found all values\n"); - abort(); - } - return 0; -} |