summaryrefslogtreecommitdiff
path: root/lib/Fuzzer/test/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Fuzzer/test/CMakeLists.txt')
-rw-r--r--lib/Fuzzer/test/CMakeLists.txt277
1 files changed, 0 insertions, 277 deletions
diff --git a/lib/Fuzzer/test/CMakeLists.txt b/lib/Fuzzer/test/CMakeLists.txt
deleted file mode 100644
index 43aea2b7a186e..0000000000000
--- a/lib/Fuzzer/test/CMakeLists.txt
+++ /dev/null
@@ -1,277 +0,0 @@
-# Build all these tests with -O0, otherwise optimizations may merge some
-# basic blocks and we'll fail to discover the targets.
-# We change the flags for every build type because we might be doing
-# a multi-configuration build (e.g. Xcode) where CMAKE_BUILD_TYPE doesn't
-# mean anything.
-set(variables_to_filter
- CMAKE_CXX_FLAGS_RELEASE
- CMAKE_CXX_FLAGS_DEBUG
- CMAKE_CXX_FLAGS_RELWITHDEBINFO
- CMAKE_CXX_FLAGS_MINSIZEREL
- LIBFUZZER_FLAGS_BASE
- )
-foreach (VARNAME ${variables_to_filter})
- string(REGEX REPLACE "([-/]O)[123s]" "\\10" ${VARNAME} "${${VARNAME}}")
-endforeach()
-
-# Enable the coverage instrumentation (it is disabled for the Fuzzer lib).
-set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fsanitize-coverage=trace-pc-guard,indirect-calls,trace-cmp,trace-div,trace-gep -gline-tables-only")
-
-if(MSVC)
- # For tests use the CRT specified for release build
- # (asan doesn't support MDd and MTd)
- if ("${LLVM_USE_CRT_RELEASE}" STREQUAL "")
- set(CRT_FLAG " /MD ")
- else()
- set(CRT_FLAG " /${LLVM_USE_CRT_RELEASE} ")
- endif()
- # In order to use the sanitizers in Windows, we need to link against many
- # runtime libraries which will depend on the target being created
- # (executable or dll) and the c runtime library used (MT/MD).
- # By default, cmake uses link.exe for linking, which fails because we don't
- # specify the appropiate dependencies.
- # As we don't want to consider all of that possible situations which depends
- # on the implementation of the compiler-rt, the simplest option is to change
- # the rules for linking executables and shared libraries, using the compiler
- # instead of link.exe. Clang will consider the sanitizer flags, and
- # automatically provide the required libraries to the linker.
- set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> <FLAGS> ${CMAKE_CXX_FLAGS} ${CRT_FLAG} <OBJECTS> -o <TARGET> <LINK_LIBRARIES> /link <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS>")
- set(CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_CXX_COMPILER> ${CMAKE_CXX_FLAGS} ${CRT_FLAG} /LD <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG> <TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES> /link <LINK_FLAGS>")
-endif()
-
-add_custom_target(TestBinaries)
-
-# 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"
- )
- add_dependencies(TestBinaries LLVMFuzzer-${name})
-endfunction()
-
-###############################################################################
-# Basic tests
-###############################################################################
-
-set(Tests
- AbsNegAndConstantTest
- AbsNegAndConstant64Test
- AccumulateAllocationsTest
- BadStrcmpTest
- BogusInitializeTest
- BufferOverflowOnInput
- CallerCalleeTest
- CleanseTest
- CounterTest
- CustomCrossOverAndMutateTest
- CustomCrossOverTest
- CustomMutatorTest
- CxxStringEqTest
- DivTest
- EmptyTest
- EquivalenceATest
- EquivalenceBTest
- FlagsTest
- FourIndependentBranchesTest
- FullCoverageSetTest
- InitializeTest
- Memcmp64BytesTest
- MemcmpTest
- LeakTest
- LeakTimeoutTest
- LoadTest
- NullDerefTest
- NullDerefOnEmptyTest
- NthRunCrashTest
- OneHugeAllocTest
- OutOfMemoryTest
- OutOfMemorySingleLargeMallocTest
- OverwriteInputTest
- RepeatedMemcmp
- RepeatedBytesTest
- SimpleCmpTest
- SimpleDictionaryTest
- SimpleHashTest
- SimpleTest
- SimpleThreadedTest
- SingleByteInputTest
- SingleMemcmpTest
- SingleStrcmpTest
- SingleStrncmpTest
- SpamyTest
- ShrinkControlFlowTest
- ShrinkControlFlowSimpleTest
- ShrinkValueProfileTest
- StrcmpTest
- StrncmpOOBTest
- StrncmpTest
- StrstrTest
- SwapCmpTest
- SwitchTest
- Switch2Test
- TableLookupTest
- ThreadedLeakTest
- ThreadedTest
- TimeoutTest
- TimeoutEmptyTest
- TraceMallocTest
- TwoDifferentBugsTest
- )
-
-if(APPLE OR MSVC)
- # LeakSanitizer is not supported on OSX and Windows right now
- set(HAS_LSAN 0)
- message(WARNING "LeakSanitizer is not supported."
- " Building and running LibFuzzer LeakSanitizer tests is disabled."
- )
-else()
- set(HAS_LSAN 1)
-endif()
-
-foreach(Test ${Tests})
- add_libfuzzer_test(${Test} SOURCES ${Test}.cpp)
-endforeach()
-
-function(test_export_symbol target symbol)
- if(MSVC)
- set_target_properties(LLVMFuzzer-${target} PROPERTIES LINK_FLAGS
- "-export:${symbol}")
- endif()
-endfunction()
-
-test_export_symbol(InitializeTest "LLVMFuzzerInitialize")
-test_export_symbol(BogusInitializeTest "LLVMFuzzerInitialize")
-test_export_symbol(CustomCrossOverTest "LLVMFuzzerCustomCrossOver")
-test_export_symbol(CustomMutatorTest "LLVMFuzzerCustomMutator")
-
-###############################################################################
-# Unit tests
-###############################################################################
-
-add_executable(LLVMFuzzer-Unittest
- FuzzerUnittest.cpp
- )
-
-add_executable(LLVMFuzzer-StandaloneInitializeTest
- InitializeTest.cpp
- ../standalone/StandaloneFuzzTargetMain.c
- )
-
-target_link_libraries(LLVMFuzzer-Unittest
- gtest
- gtest_main
- LLVMFuzzerNoMain
- )
-
-target_include_directories(LLVMFuzzer-Unittest PRIVATE
- "${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include"
- )
-
-add_dependencies(TestBinaries LLVMFuzzer-Unittest)
-set_target_properties(LLVMFuzzer-Unittest
- PROPERTIES RUNTIME_OUTPUT_DIRECTORY
- "${CMAKE_CURRENT_BINARY_DIR}"
-)
-
-add_dependencies(TestBinaries LLVMFuzzer-StandaloneInitializeTest)
-set_target_properties(LLVMFuzzer-StandaloneInitializeTest
- PROPERTIES RUNTIME_OUTPUT_DIRECTORY
- "${CMAKE_CURRENT_BINARY_DIR}"
-)
-
-###############################################################################
-# Additional tests
-###############################################################################
-
-include_directories(..)
-
-# add_subdirectory(uninstrumented)
-add_subdirectory(no-coverage)
-add_subdirectory(trace-pc)
-add_subdirectory(ubsan)
-if (NOT MSVC)
- add_subdirectory(inline-8bit-counters)
-endif()
-
-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")
-
-if(MSVC)
- set_output_directory(LLVMFuzzer-DSO1
- BINARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test"
- LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test")
- set_output_directory(LLVMFuzzer-DSO2
- BINARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test"
- LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test")
-else(MSVC)
- set_output_directory(LLVMFuzzer-DSO1
- LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib")
- set_output_directory(LLVMFuzzer-DSO2
- LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib")
-endif()
-
-add_dependencies(TestBinaries LLVMFuzzer-DSOTest)
-
-###############################################################################
-# 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(LIBFUZZER_POSIX 1)
-if (MSVC)
- set(LIBFUZZER_POSIX 0)
-endif()
-
-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"
- ${CMAKE_CURRENT_BINARY_DIR}
- DEPENDS TestBinaries
- )
-
-# Don't add dependencies on Windows. The linker step would fail on Windows,
-# since cmake will use link.exe for linking and won't include compiler-rt libs.
-if(NOT MSVC)
- add_dependencies(check-fuzzer FileCheck sancov not)
-endif()