summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Fuzzer/CMakeLists.txt4
-rw-r--r--llvm/lib/Fuzzer/FuzzerLoop.cpp4
-rw-r--r--llvm/lib/Fuzzer/test/CMakeLists.txt37
-rw-r--r--llvm/lib/Fuzzer/test/fuzzer.test13
-rw-r--r--llvm/lib/Fuzzer/test/lit.cfg6
-rw-r--r--llvm/lib/Fuzzer/test/lit.site.cfg.in2
6 files changed, 64 insertions, 2 deletions
diff --git a/llvm/lib/Fuzzer/CMakeLists.txt b/llvm/lib/Fuzzer/CMakeLists.txt
index 62207abb7d6..e1ff65848cc 100644
--- a/llvm/lib/Fuzzer/CMakeLists.txt
+++ b/llvm/lib/Fuzzer/CMakeLists.txt
@@ -7,3 +7,7 @@ add_library(LLVMFuzzer STATIC
FuzzerMutate.cpp
FuzzerUtil.cpp
)
+
+if( LLVM_INCLUDE_TESTS )
+ add_subdirectory(test)
+endif()
diff --git a/llvm/lib/Fuzzer/FuzzerLoop.cpp b/llvm/lib/Fuzzer/FuzzerLoop.cpp
index 9ad2bd729aa..b0bfce73ffd 100644
--- a/llvm/lib/Fuzzer/FuzzerLoop.cpp
+++ b/llvm/lib/Fuzzer/FuzzerLoop.cpp
@@ -41,12 +41,12 @@ void Fuzzer::AlarmCallback() {
duration_cast<seconds>(system_clock::now() - UnitStartTime).count();
std::cerr << "ALARM: working on the last Unit for " << Seconds << " seconds"
<< std::endl;
- if (Seconds > 60) {
+ if (Seconds >= 3) {
Print(CurrentUnit, "\n");
PrintASCII(CurrentUnit, "\n");
WriteToCrash(CurrentUnit, "timeout-");
}
- abort();
+ exit(1);
}
void Fuzzer::ShuffleAndMinimize() {
diff --git a/llvm/lib/Fuzzer/test/CMakeLists.txt b/llvm/lib/Fuzzer/test/CMakeLists.txt
new file mode 100644
index 00000000000..0c2118f31b0
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/CMakeLists.txt
@@ -0,0 +1,37 @@
+set(Tests
+ ExactTest
+ InfiniteTest
+ NullDerefTest
+ SimpleTest
+ TimeoutTest
+ )
+
+set(TestBinaries)
+
+foreach(Test ${Tests})
+ add_executable(LLVMFuzzer-${Test}
+ EXCLUDE_FROM_ALL
+ ${Test}.cpp
+ )
+ target_link_libraries(LLVMFuzzer-${Test}
+ LLVMFuzzer
+ )
+ set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test})
+endforeach()
+
+set_target_properties(${TestBinaries}
+ PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ )
+
+set(EXCLUDE_FROM_ALL TRUE)
+add_lit_testsuite(check-fuzzer "Running Fuzzer tests"
+ ${CMAKE_CURRENT_BINARY_DIR}
+ DEPENDS ${TestBinaries}
+ )
+set(EXCLUDE_FROM_ALL FALSE)
+
+configure_lit_site_cfg(
+ ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
+ ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
+ )
+
diff --git a/llvm/lib/Fuzzer/test/fuzzer.test b/llvm/lib/Fuzzer/test/fuzzer.test
new file mode 100644
index 00000000000..5f013109f62
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/fuzzer.test
@@ -0,0 +1,13 @@
+RUN: ./LLVMFuzzer-SimpleTest 2>&1 | FileCheck %s --check-prefix=SimpleTest
+SimpleTest: Found the target, exiting
+
+RUN: not ./LLVMFuzzer-InfiniteTest -timeout=2 2>&1 | FileCheck %s --check-prefix=InfiniteTest
+InfiniteTest: ALARM: working on the last Unit for
+InfiniteTest-NOT: CRASHED; file written to timeout
+
+RUN: not ./LLVMFuzzer-TimeoutTest -timeout=5 2>&1 | FileCheck %s --check-prefix=TimeoutTest
+TimeoutTest: ALARM: working on the last Unit for
+TimeoutTest: CRASHED; file written to timeout
+
+RUN: not ./LLVMFuzzer-NullDerefTest 2>&1 | FileCheck %s --check-prefix=NullDerefTest
+NullDerefTest: CRASHED; file written to crash-
diff --git a/llvm/lib/Fuzzer/test/lit.cfg b/llvm/lib/Fuzzer/test/lit.cfg
new file mode 100644
index 00000000000..d1c85051b47
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/lit.cfg
@@ -0,0 +1,6 @@
+import lit.formats
+
+config.name = "LLVMFuzzer"
+config.test_format = lit.formats.ShTest(True)
+config.suffixes = ['.test']
+config.test_source_root = os.path.dirname(__file__)
diff --git a/llvm/lib/Fuzzer/test/lit.site.cfg.in b/llvm/lib/Fuzzer/test/lit.site.cfg.in
new file mode 100644
index 00000000000..5fedc1dff6f
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/lit.site.cfg.in
@@ -0,0 +1,2 @@
+config.test_exec_root = "@CMAKE_CURRENT_BINARY_DIR@"
+lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg")
OpenPOWER on IntegriCloud