[llvm] r297544 - [libFuzzer] add test/LargeTest.cpp, mostly for manual experiments with large number of edges, not yet suitable for unit testing
Kostya Serebryany via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 10 17:54:06 PST 2017
Author: kcc
Date: Fri Mar 10 19:54:06 2017
New Revision: 297544
URL: http://llvm.org/viewvc/llvm-project?rev=297544&view=rev
Log:
[libFuzzer] add test/LargeTest.cpp, mostly for manual experiments with large number of edges, not yet suitable for unit testing
Added:
llvm/trunk/lib/Fuzzer/test/LargeTest.cpp
Added: llvm/trunk/lib/Fuzzer/test/LargeTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/test/LargeTest.cpp?rev=297544&view=auto
==============================================================================
--- llvm/trunk/lib/Fuzzer/test/LargeTest.cpp (added)
+++ llvm/trunk/lib/Fuzzer/test/LargeTest.cpp Fri Mar 10 19:54:06 2017
@@ -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;
+}
+
More information about the llvm-commits
mailing list