Index: lib/Fuzzer/CMakeLists.txt =================================================================== --- lib/Fuzzer/CMakeLists.txt +++ lib/Fuzzer/CMakeLists.txt @@ -1,50 +1,45 @@ set(LIBFUZZER_FLAGS_BASE "${CMAKE_CXX_FLAGS}") # Disable the coverage and sanitizer instrumentation for the fuzzer itself. set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize-coverage=trace-pc-guard,edge,trace-cmp,indirect-calls,8bit-counters -Werror") -if( LLVM_USE_SANITIZE_COVERAGE ) - if(NOT "${LLVM_USE_SANITIZER}" STREQUAL "Address") - message(FATAL_ERROR - "LibFuzzer and its tests require LLVM_USE_SANITIZER=Address and " - "LLVM_USE_SANITIZE_COVERAGE=YES to be set." - ) - endif() - add_subdirectory(Support) +add_subdirectory(Support) - if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") - set(FUZZER_EXT_FUNCTIONS FuzzerExtFunctionsWeakAlias.cpp) - elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") - set(FUZZER_EXT_FUNCTIONS FuzzerExtFunctionsWeak.cpp) - elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set(FUZZER_EXT_FUNCTIONS FuzzerExtFunctionsDlsym.cpp) - endif() +if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") + set(FUZZER_EXT_FUNCTIONS FuzzerExtFunctionsWeakAlias.cpp) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(FUZZER_EXT_FUNCTIONS FuzzerExtFunctionsWeak.cpp) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(FUZZER_EXT_FUNCTIONS FuzzerExtFunctionsDlsym.cpp) +endif() + +add_library(LLVMFuzzerNoMainObjects OBJECT + FuzzerCrossOver.cpp + FuzzerDriver.cpp + FuzzerLoop.cpp + FuzzerMerge.cpp + FuzzerMutate.cpp + FuzzerSHA1.cpp + FuzzerTracePC.cpp + FuzzerTraceState.cpp + FuzzerUtil.cpp + ${FUZZER_EXT_FUNCTIONS} + ) + +add_library(LLVMFuzzerNoMain STATIC + $ + ) +target_link_libraries(LLVMFuzzerNoMain ${PTHREAD_LIB}) +target_link_libraries(LLVMFuzzerNoMain LLVMFuzzerSupport) + +add_library(LLVMFuzzer STATIC + FuzzerMain.cpp + $ + ) +target_link_libraries(LLVMFuzzer ${PTHREAD_LIB}) +target_link_libraries(LLVMFuzzer LLVMFuzzerSupport) - add_library(LLVMFuzzerNoMainObjects OBJECT - FuzzerCrossOver.cpp - FuzzerDriver.cpp - FuzzerLoop.cpp - FuzzerMerge.cpp - FuzzerMutate.cpp - FuzzerSHA1.cpp - FuzzerTracePC.cpp - FuzzerTraceState.cpp - FuzzerUtil.cpp - ${FUZZER_EXT_FUNCTIONS} - ) - add_library(LLVMFuzzerNoMain STATIC - $ - ) - target_link_libraries(LLVMFuzzerNoMain ${PTHREAD_LIB}) - target_link_libraries(LLVMFuzzerNoMain LLVMFuzzerSupport) - add_library(LLVMFuzzer STATIC - FuzzerMain.cpp - $ - ) - target_link_libraries(LLVMFuzzer ${PTHREAD_LIB}) - target_link_libraries(LLVMFuzzer LLVMFuzzerSupport) +add_subdirectory(afl) - add_subdirectory(afl) - if( LLVM_INCLUDE_TESTS ) - add_subdirectory(test) - endif() +if( LLVM_INCLUDE_TESTS ) + add_subdirectory(test) endif() Index: lib/Fuzzer/test/CMakeLists.txt =================================================================== --- lib/Fuzzer/test/CMakeLists.txt +++ lib/Fuzzer/test/CMakeLists.txt @@ -32,6 +32,11 @@ set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fsanitize-coverage=trace-pc-guard,indirect-calls,trace-cmp,trace-div,trace-gep") endif() +if(NOT "${LLVM_USE_SANITIZER}" STREQUAL "Address") + # Enable Address sanitizer. + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") +endif() + if(LLVM_COMPILER_IS_GCC_COMPATIBLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") else()