From 3e36ec1d18188810b19bb7d2153039ae2cc8c0db Mon Sep 17 00:00:00 2001 From: Kostya Serebryany Date: Sat, 17 Sep 2016 05:04:47 +0000 Subject: [libFuzzer] change trace-pc to use 8-byte guards llvm-svn: 281810 --- llvm/lib/Fuzzer/test/DSO1.cpp | 11 +++++++++++ llvm/lib/Fuzzer/test/DSO2.cpp | 11 +++++++++++ llvm/lib/Fuzzer/test/DSOTestExtra.cpp | 11 +++++++++++ llvm/lib/Fuzzer/test/DSOTestMain.cpp | 27 +++++++++++++++++++++++++++ llvm/lib/Fuzzer/test/fuzzer-jobs.test | 2 +- llvm/lib/Fuzzer/test/fuzzer.test | 4 ++++ llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt | 22 ++++++++++++++++++++++ 7 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 llvm/lib/Fuzzer/test/DSO1.cpp create mode 100644 llvm/lib/Fuzzer/test/DSO2.cpp create mode 100644 llvm/lib/Fuzzer/test/DSOTestExtra.cpp create mode 100644 llvm/lib/Fuzzer/test/DSOTestMain.cpp (limited to 'llvm/lib/Fuzzer/test') 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 +#include +#include +#include +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) -- cgit v1.2.3