summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Fuzzer/test
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2016-09-17 05:04:47 +0000
committerKostya Serebryany <kcc@google.com>2016-09-17 05:04:47 +0000
commit3e36ec1d18188810b19bb7d2153039ae2cc8c0db (patch)
treec6b6a188e57ec99534ee410782dbd6f878f0e747 /llvm/lib/Fuzzer/test
parent8ad415574543c5ee4de98678fbe7452f60a086e3 (diff)
downloadbcm5719-llvm-3e36ec1d18188810b19bb7d2153039ae2cc8c0db.tar.gz
bcm5719-llvm-3e36ec1d18188810b19bb7d2153039ae2cc8c0db.zip
[libFuzzer] change trace-pc to use 8-byte guards
llvm-svn: 281810
Diffstat (limited to 'llvm/lib/Fuzzer/test')
-rw-r--r--llvm/lib/Fuzzer/test/DSO1.cpp11
-rw-r--r--llvm/lib/Fuzzer/test/DSO2.cpp11
-rw-r--r--llvm/lib/Fuzzer/test/DSOTestExtra.cpp11
-rw-r--r--llvm/lib/Fuzzer/test/DSOTestMain.cpp27
-rw-r--r--llvm/lib/Fuzzer/test/fuzzer-jobs.test2
-rw-r--r--llvm/lib/Fuzzer/test/fuzzer.test4
-rw-r--r--llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt22
7 files changed, 87 insertions, 1 deletions
diff --git a/llvm/lib/Fuzzer/test/DSO1.cpp b/llvm/lib/Fuzzer/test/DSO1.cpp
new file mode 100644
index 00000000000..c362593f779
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/DSO1.cpp
@@ -0,0 +1,11 @@
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+
+// Source code for a simple DSO.
+
+int DSO1(int a) {
+ if (a < 123456)
+ return 0;
+ return 1;
+}
+
diff --git a/llvm/lib/Fuzzer/test/DSO2.cpp b/llvm/lib/Fuzzer/test/DSO2.cpp
new file mode 100644
index 00000000000..46c80e4b6fe
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/DSO2.cpp
@@ -0,0 +1,11 @@
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+
+// Source code for a simple DSO.
+
+int DSO2(int a) {
+ if (a < 3598235)
+ return 0;
+ return 1;
+}
+
diff --git a/llvm/lib/Fuzzer/test/DSOTestExtra.cpp b/llvm/lib/Fuzzer/test/DSOTestExtra.cpp
new file mode 100644
index 00000000000..a2274d070eb
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/DSOTestExtra.cpp
@@ -0,0 +1,11 @@
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+
+// Source code for a simple DSO.
+
+int DSOTestExtra(int a) {
+ if (a < 452345)
+ return 0;
+ return 1;
+}
+
diff --git a/llvm/lib/Fuzzer/test/DSOTestMain.cpp b/llvm/lib/Fuzzer/test/DSOTestMain.cpp
new file mode 100644
index 00000000000..49cd185e97d
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/DSOTestMain.cpp
@@ -0,0 +1,27 @@
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+
+// Source code for a simple DSO.
+
+#include <cstdint>
+#include <cstdlib>
+#include <cstring>
+#include <cstdio>
+extern int DSO1(int a);
+extern int DSO2(int a);
+extern int DSOTestExtra(int a);
+
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
+ if (Size < sizeof(int) * 3) return 0;
+ int x, y, z;
+ memcpy(&x, Data + 0 * sizeof(int), sizeof(int));
+ memcpy(&y, Data + 1 * sizeof(int), sizeof(int));
+ memcpy(&z, Data + 2 * sizeof(int), sizeof(int));
+ int sum = DSO1(x) + DSO2(y) + DSOTestExtra(z);
+ if (sum == 3) {
+ fprintf(stderr, "BINGO %d %d %d\n", x, y, z);
+ exit(1);
+ }
+ return 0;
+}
diff --git a/llvm/lib/Fuzzer/test/fuzzer-jobs.test b/llvm/lib/Fuzzer/test/fuzzer-jobs.test
index cd71bc07972..5bf8cfadfb7 100644
--- a/llvm/lib/Fuzzer/test/fuzzer-jobs.test
+++ b/llvm/lib/Fuzzer/test/fuzzer-jobs.test
@@ -9,7 +9,7 @@ RUN: rm -f fuzz-{0,1}.log
RUN: LLVMFuzzer-EmptyTest -max_total_time=4 -jobs=2 -workers=2 FuzzerJobsTestCORPUS > %t-fuzzer-jobs-test.log 2>&1 & export FUZZER_PID=$!
# Wait a short while to give time for the child processes
# to start fuzzing
-RUN: sleep 1
+RUN: sleep 2
# If the instances are running in parallel they should have created their log
# files by now.
RUN: ls fuzz-0.log
diff --git a/llvm/lib/Fuzzer/test/fuzzer.test b/llvm/lib/Fuzzer/test/fuzzer.test
index 0e7b26ec726..ce207855e52 100644
--- a/llvm/lib/Fuzzer/test/fuzzer.test
+++ b/llvm/lib/Fuzzer/test/fuzzer.test
@@ -49,3 +49,7 @@ OOB: is located 0 bytes to the right of 3-byte region
RUN: not LLVMFuzzer-InitializeTest 2>&1 | FileCheck %s
+RUN: not LLVMFuzzer-DSOTest 2>&1 | FileCheck %s --check-prefix=DSO
+DSO: INFO: Loaded 3 modules
+DSO: BINGO
+
diff --git a/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt b/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt
index 4ecf80163a0..c4e4e9c29d4 100644
--- a/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt
+++ b/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt
@@ -15,3 +15,25 @@ endforeach()
# Propagate value into parent directory
set(TestBinaries ${TestBinaries} PARENT_SCOPE)
+
+add_library(LLVMFuzzer-DSO1 SHARED ../DSO1.cpp)
+add_library(LLVMFuzzer-DSO2 SHARED ../DSO2.cpp)
+
+add_executable(LLVMFuzzer-DSOTest
+ ../DSOTestMain.cpp
+ ../DSOTestExtra.cpp)
+
+target_link_libraries(LLVMFuzzer-DSOTest
+ LLVMFuzzer-DSO1
+ LLVMFuzzer-DSO2
+ LLVMFuzzer
+ )
+
+set_target_properties(LLVMFuzzer-DSOTest PROPERTIES RUNTIME_OUTPUT_DIRECTORY
+ "${CMAKE_BINARY_DIR}/lib/Fuzzer/test")
+set_target_properties(LLVMFuzzer-DSO1 PROPERTIES LIBRARY_OUTPUT_DIRECTORY
+ "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib")
+set_target_properties(LLVMFuzzer-DSO2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY
+ "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib")
+
+set(TestBinaries ${TestBinaries} LLVMFuzzer-DSOTest)
OpenPOWER on IntegriCloud