diff options
author | Dan Liew <dan@su-root.co.uk> | 2016-05-27 03:14:40 +0000 |
---|---|---|
committer | Dan Liew <dan@su-root.co.uk> | 2016-05-27 03:14:40 +0000 |
commit | 8c11fce7077a484530c7dfda2ddbe82417ae375c (patch) | |
tree | 867a88843ab178d5716dd4633ab9cb7172fe873f | |
parent | 0d70ccd89584f774172cd1a418e29f7350fa4ba3 (diff) | |
download | bcm5719-llvm-8c11fce7077a484530c7dfda2ddbe82417ae375c.tar.gz bcm5719-llvm-8c11fce7077a484530c7dfda2ddbe82417ae375c.zip |
[LibFuzzer] Refactor declaration of tests in CMake.
Add a new CMake function (``add_libfuzzer_test()``) to simplify
declaration of executables for testing LibFuzzer and use it to
reorganise how tests are declared.
Note that configuration of the lit configuration files has been moved
as late as possible because we are going to need to disable some tests
for some platforms and we will need to propagate this information into
the lit configuration.
Note the code for custom mains was removed because no tests are
currently written for this and Kostya seems happy to remove this.
Differential Revision: http://reviews.llvm.org/D20706
llvm-svn: 270958
-rw-r--r-- | llvm/lib/Fuzzer/test/CMakeLists.txt | 149 | ||||
-rw-r--r-- | llvm/lib/Fuzzer/test/dfsan/CMakeLists.txt | 17 | ||||
-rw-r--r-- | llvm/lib/Fuzzer/test/trace-bb/CMakeLists.txt | 13 | ||||
-rw-r--r-- | llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt | 14 | ||||
-rw-r--r-- | llvm/lib/Fuzzer/test/ubsan/CMakeLists.txt | 13 | ||||
-rw-r--r-- | llvm/lib/Fuzzer/test/uninstrumented/CMakeLists.txt | 13 |
6 files changed, 104 insertions, 115 deletions
diff --git a/llvm/lib/Fuzzer/test/CMakeLists.txt b/llvm/lib/Fuzzer/test/CMakeLists.txt index 5ff11b0669e..a6702d059d8 100644 --- a/llvm/lib/Fuzzer/test/CMakeLists.txt +++ b/llvm/lib/Fuzzer/test/CMakeLists.txt @@ -27,13 +27,39 @@ endforeach() # Enable the coverage instrumentation (it is disabled for the Fuzzer lib). set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fsanitize-coverage=edge,indirect-calls") -set(DFSanTests - MemcmpTest - SimpleCmpTest - StrcmpTest - StrncmpTest - SwitchTest - ) +# add_libfuzzer_test(<name> +# SOURCES source0.cpp [source1.cpp ...] +# ) +# +# Declares a LibFuzzer test executable with target name LLVMFuzzer-<name>. +# +# One or more source files to be compiled into the binary must be declared +# after the SOURCES keyword. +function(add_libfuzzer_test name) + set(multi_arg_options "SOURCES") + cmake_parse_arguments( + "add_libfuzzer_test" "" "" "${multi_arg_options}" ${ARGN}) + if ("${add_libfuzzer_test_SOURCES}" STREQUAL "") + message(FATAL_ERROR "Source files must be specified") + endif() + add_executable(LLVMFuzzer-${name} + ${add_libfuzzer_test_SOURCES} + ) + target_link_libraries(LLVMFuzzer-${name} LLVMFuzzer) + # Place binary where llvm-lit expects to find it + set_target_properties(LLVMFuzzer-${name} + PROPERTIES RUNTIME_OUTPUT_DIRECTORY + "${CMAKE_BINARY_DIR}/lib/Fuzzer/test" + ) + set(TestBinaries ${TestBinaries} LLVMFuzzer-${name} PARENT_SCOPE) +endfunction() + +# Variable to keep track of all test targets +set(TestBinaries) + +############################################################################### +# Basic tests +############################################################################### set(Tests AccumulateAllocationsTest @@ -67,107 +93,60 @@ set(Tests TimeoutTest ) -set(CustomMainTests - ) - -set(UninstrumentedTests - UninstrumentedTest - ) - -set(TraceBBTests - SimpleTest - ) - -set(TracePCTests - FourIndependentBranchesTest - FullCoverageSetTest - ) - -set(UbsanTests - SignedIntOverflowTest - ) - -set(TestBinaries) - foreach(Test ${Tests}) - add_executable(LLVMFuzzer-${Test} - ${Test}.cpp - ) - target_link_libraries(LLVMFuzzer-${Test} - LLVMFuzzer - ) - set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}) -endforeach() - -foreach(Test ${CustomMainTests}) - add_executable(LLVMFuzzer-${Test} - ${Test}.cpp - ) - target_link_libraries(LLVMFuzzer-${Test} - LLVMFuzzerNoMain - ) - set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}) + add_libfuzzer_test(${Test} SOURCES ${Test}.cpp) endforeach() - -configure_lit_site_cfg( - ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in - ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg - ) - -configure_lit_site_cfg( - ${CMAKE_CURRENT_SOURCE_DIR}/unit/lit.site.cfg.in - ${CMAKE_CURRENT_BINARY_DIR}/unit/lit.site.cfg - ) - -include_directories(..) -include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include) +############################################################################### +# Unit tests +############################################################################### add_executable(LLVMFuzzer-Unittest FuzzerUnittest.cpp FuzzerFnAdapterUnittest.cpp - $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects> ) target_link_libraries(LLVMFuzzer-Unittest gtest gtest_main + LLVMFuzzerNoMain + ) + +target_include_directories(LLVMFuzzer-Unittest PRIVATE + "${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include" ) set(TestBinaries ${TestBinaries} LLVMFuzzer-Unittest) +set_target_properties(LLVMFuzzer-Unittest + PROPERTIES RUNTIME_OUTPUT_DIRECTORY + "${CMAKE_CURRENT_BINARY_DIR}" +) +############################################################################### +# Additional tests +############################################################################### +include_directories(..) add_subdirectory(dfsan) - -foreach(Test ${DFSanTests}) - set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-DFSan) -endforeach() - add_subdirectory(uninstrumented) - -foreach(Test ${UninstrumentedTests}) - set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-Uninstrumented) -endforeach() - add_subdirectory(ubsan) - -foreach(Test ${UbsanTests}) - set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-Ubsan) -endforeach() - add_subdirectory(trace-bb) - -foreach(Test ${TraceBBTests}) - set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-TraceBB) -endforeach() - add_subdirectory(trace-pc) -foreach(Test ${TracePCTests}) - set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-TracePC) -endforeach() +############################################################################### +# Configure lit to run the tests +# +# Note this is done after declaring all tests so we can inform lit if any tests +# need to be disabled. +############################################################################### -set_target_properties(${TestBinaries} - PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +configure_lit_site_cfg( + ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in + ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg + ) + +configure_lit_site_cfg( + ${CMAKE_CURRENT_SOURCE_DIR}/unit/lit.site.cfg.in + ${CMAKE_CURRENT_BINARY_DIR}/unit/lit.site.cfg ) add_lit_testsuite(check-fuzzer "Running Fuzzer tests" diff --git a/llvm/lib/Fuzzer/test/dfsan/CMakeLists.txt b/llvm/lib/Fuzzer/test/dfsan/CMakeLists.txt index 362a4566711..2a4dc18bfee 100644 --- a/llvm/lib/Fuzzer/test/dfsan/CMakeLists.txt +++ b/llvm/lib/Fuzzer/test/dfsan/CMakeLists.txt @@ -3,12 +3,17 @@ set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize=all -fsanitize=dataflow") +set(DFSanTests + MemcmpTest + SimpleCmpTest + StrcmpTest + StrncmpTest + SwitchTest + ) + foreach(Test ${DFSanTests}) - add_executable(LLVMFuzzer-${Test}-DFSan - ../${Test}.cpp - ) - target_link_libraries(LLVMFuzzer-${Test}-DFSan - LLVMFuzzer - ) + add_libfuzzer_test(${Test}-DFSan SOURCES ../${Test}.cpp) endforeach() +# Propagate value into parent directory +set(TestBinaries ${TestBinaries} PARENT_SCOPE) diff --git a/llvm/lib/Fuzzer/test/trace-bb/CMakeLists.txt b/llvm/lib/Fuzzer/test/trace-bb/CMakeLists.txt index 915ae365734..fd168c4515b 100644 --- a/llvm/lib/Fuzzer/test/trace-bb/CMakeLists.txt +++ b/llvm/lib/Fuzzer/test/trace-bb/CMakeLists.txt @@ -3,12 +3,13 @@ set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fsanitize-coverage=edge,trace-bb") +set(TraceBBTests + SimpleTest + ) + foreach(Test ${TraceBBTests}) - add_executable(LLVMFuzzer-${Test}-TraceBB - ../${Test}.cpp - ) - target_link_libraries(LLVMFuzzer-${Test}-TraceBB - LLVMFuzzer - ) + add_libfuzzer_test(${Test}-TraceBB SOURCES ../${Test}.cpp) endforeach() +# Propagate value into parent directory +set(TestBinaries ${TestBinaries} PARENT_SCOPE) diff --git a/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt b/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt index 94bd5f66877..cf18278ac64 100644 --- a/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt +++ b/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt @@ -3,12 +3,14 @@ set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize-coverage=8bit-counters -fsanitize-coverage=trace-pc") +set(TracePCTests + FourIndependentBranchesTest + FullCoverageSetTest + ) + foreach(Test ${TracePCTests}) - add_executable(LLVMFuzzer-${Test}-TracePC - ../${Test}.cpp - ) - target_link_libraries(LLVMFuzzer-${Test}-TracePC - LLVMFuzzer - ) + add_libfuzzer_test(${Test}-TracePC SOURCES ../${Test}.cpp) endforeach() +# Propagate value into parent directory +set(TestBinaries ${TestBinaries} PARENT_SCOPE) diff --git a/llvm/lib/Fuzzer/test/ubsan/CMakeLists.txt b/llvm/lib/Fuzzer/test/ubsan/CMakeLists.txt index b7d0f500a75..7a9eacdbe7d 100644 --- a/llvm/lib/Fuzzer/test/ubsan/CMakeLists.txt +++ b/llvm/lib/Fuzzer/test/ubsan/CMakeLists.txt @@ -3,12 +3,13 @@ set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fsanitize=undefined -fno-sanitize-recover=all") +set(UbsanTests + SignedIntOverflowTest + ) + foreach(Test ${UbsanTests}) - add_executable(LLVMFuzzer-${Test}-Ubsan - ../${Test}.cpp - ) - target_link_libraries(LLVMFuzzer-${Test}-Ubsan - LLVMFuzzer - ) + add_libfuzzer_test(${Test}-Ubsan SOURCES ../${Test}.cpp) endforeach() +# Propagate value into parent directory +set(TestBinaries ${TestBinaries} PARENT_SCOPE) diff --git a/llvm/lib/Fuzzer/test/uninstrumented/CMakeLists.txt b/llvm/lib/Fuzzer/test/uninstrumented/CMakeLists.txt index b4d7e4a2a65..35c96481af3 100644 --- a/llvm/lib/Fuzzer/test/uninstrumented/CMakeLists.txt +++ b/llvm/lib/Fuzzer/test/uninstrumented/CMakeLists.txt @@ -3,12 +3,13 @@ set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize=all -fno-sanitize-coverage=edge,trace-cmp,indirect-calls,8bit-counters") +set(UninstrumentedTests + UninstrumentedTest + ) + foreach(Test ${UninstrumentedTests}) - add_executable(LLVMFuzzer-${Test}-Uninstrumented - ../${Test}.cpp - ) - target_link_libraries(LLVMFuzzer-${Test}-Uninstrumented - LLVMFuzzer - ) + add_libfuzzer_test(${Test}-Uninstrumented SOURCES ../${Test}.cpp) endforeach() +# Propagate value into parent directory +set(TestBinaries ${TestBinaries} PARENT_SCOPE) |