diff options
author | Kostya Serebryany <kcc@google.com> | 2017-03-11 01:54:06 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2017-03-11 01:54:06 +0000 |
commit | b6b2f18ea8776087bd78228c46f4a0ee73923642 (patch) | |
tree | 8eaf432c84f6280b625d14f23cd5a3bd0a25127a /llvm/lib/Fuzzer/test/LargeTest.cpp | |
parent | 7939ee4d51b7025bb9324074077ae1f0d06ce2c1 (diff) | |
download | bcm5719-llvm-b6b2f18ea8776087bd78228c46f4a0ee73923642.tar.gz bcm5719-llvm-b6b2f18ea8776087bd78228c46f4a0ee73923642.zip |
[libFuzzer] add test/LargeTest.cpp, mostly for manual experiments with large number of edges, not yet suitable for unit testing
llvm-svn: 297544
Diffstat (limited to 'llvm/lib/Fuzzer/test/LargeTest.cpp')
-rw-r--r-- | llvm/lib/Fuzzer/test/LargeTest.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/llvm/lib/Fuzzer/test/LargeTest.cpp b/llvm/lib/Fuzzer/test/LargeTest.cpp new file mode 100644 index 00000000000..83ed6197180 --- /dev/null +++ b/llvm/lib/Fuzzer/test/LargeTest.cpp @@ -0,0 +1,37 @@ +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. + +// A fuzz target with lots of edges. +#include <cstdint> +#include <cstdlib> + +static inline void break_optimization(const void *arg) { + __asm__ __volatile__("" : : "r" (arg) : "memory"); +} + +#define A \ + do { \ + i++; \ + c++; \ + if (Data[(i + __LINE__) % Size] == (c % 256)) \ + break_optimization(Data); \ + else \ + break_optimization(0); \ + } while (0) + +// for (int i = 0, n = Data[(__LINE__ - 1) % Size] % 16; i < n; i++) + +#define B do{A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; A; }while(0) +#define C do{B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; B; }while(0) +#define D do{C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; C; }while(0) +#define E do{D; D; D; D; D; D; D; D; D; D; D; D; D; D; D; D; D; D; }while(0) + +volatile int sink; +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { + if (!Size) return 0; + int c = 0; + int i = 0; + D; + return 0; +} + |