[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