1# Build all these tests with -O0, otherwise optimizations may merge some 2# basic blocks and we'll fail to discover the targets. 3# Also enable the coverage instrumentation back (it is disabled 4# for the Fuzzer lib) 5set(CMAKE_CXX_FLAGS_RELEASE "${LIBFUZZER_FLAGS_BASE} -O0 -fsanitize-coverage=edge,indirect-calls") 6 7set(DFSanTests 8 MemcmpTest 9 SimpleCmpTest 10 StrcmpTest 11 StrncmpTest 12 SwitchTest 13 ) 14 15set(Tests 16 CallerCalleeTest 17 CounterTest 18 FourIndependentBranchesTest 19 FullCoverageSetTest 20 MemcmpTest 21 NullDerefTest 22 SimpleCmpTest 23 SimpleDictionaryTest 24 SimpleHashTest 25 SimpleTest 26 StrcmpTest 27 StrncmpTest 28 SwitchTest 29 TimeoutTest 30 ) 31 32set(CustomMainTests 33 UserSuppliedFuzzerTest 34 ) 35 36set(UninstrumentedTests 37 UninstrumentedTest 38 ) 39 40set(TraceBBTests 41 SimpleTest 42 ) 43 44set(TestBinaries) 45 46foreach(Test ${Tests}) 47 add_executable(LLVMFuzzer-${Test} 48 ${Test}.cpp 49 ) 50 target_link_libraries(LLVMFuzzer-${Test} 51 LLVMFuzzer 52 ) 53 set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}) 54endforeach() 55 56foreach(Test ${CustomMainTests}) 57 add_executable(LLVMFuzzer-${Test} 58 ${Test}.cpp 59 ) 60 target_link_libraries(LLVMFuzzer-${Test} 61 LLVMFuzzerNoMain 62 ) 63 set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}) 64endforeach() 65 66 67configure_lit_site_cfg( 68 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 69 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg 70 ) 71 72configure_lit_site_cfg( 73 ${CMAKE_CURRENT_SOURCE_DIR}/unit/lit.site.cfg.in 74 ${CMAKE_CURRENT_BINARY_DIR}/unit/lit.site.cfg 75 ) 76 77include_directories(..) 78include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include) 79 80add_executable(LLVMFuzzer-Unittest 81 FuzzerUnittest.cpp 82 $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects> 83 ) 84 85target_link_libraries(LLVMFuzzer-Unittest 86 gtest 87 gtest_main 88 ) 89 90set(TestBinaries ${TestBinaries} LLVMFuzzer-Unittest) 91 92add_subdirectory(dfsan) 93 94foreach(Test ${DFSanTests}) 95 set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-DFSan) 96endforeach() 97 98add_subdirectory(uninstrumented) 99 100foreach(Test ${UninstrumentedTests}) 101 set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-Uninstrumented) 102endforeach() 103 104add_subdirectory(trace-bb) 105 106foreach(Test ${TraceBBTests}) 107 set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-TraceBB) 108endforeach() 109 110set_target_properties(${TestBinaries} 111 PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 112 ) 113 114add_lit_testsuite(check-fuzzer "Running Fuzzer tests" 115 ${CMAKE_CURRENT_BINARY_DIR} 116 DEPENDS ${TestBinaries} FileCheck not 117 ) 118