[PATCH] D32096: Always build libfuzzer
George Karpenkov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 14 14:22:17 PDT 2017
george.karpenkov created this revision.
Herald added a subscriber: mgorny.
Hi,
There are two reasons why users might want to build libfuzzer:
- To fuzz LLVM itself
- To get the `libFuzzer.a` archive file, so that they can attach it to their code
Current CMake file only supports the first case: in order to build it, the user has to compile the entire LLVM repo with coverage flags (which is not even possible using e.g. default mac os clang).
The proposed change always builds libfuzzer, and supports the second use case if the specified flag is set.
Repository:
rL LLVM
https://reviews.llvm.org/D32096
Files:
lib/Fuzzer/CMakeLists.txt
Index: lib/Fuzzer/CMakeLists.txt
===================================================================
--- lib/Fuzzer/CMakeLists.txt
+++ lib/Fuzzer/CMakeLists.txt
@@ -1,14 +1,11 @@
-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_library(LLVMFuzzerNoMainObjects OBJECT
+ 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")
+endif()
+
+add_library(LLVMFuzzerNoMainObjects OBJECT
FuzzerCrossOver.cpp
FuzzerDriver.cpp
FuzzerExtFunctionsDlsym.cpp
@@ -32,15 +29,24 @@
FuzzerUtilPosix.cpp
FuzzerUtilWindows.cpp
)
- add_library(LLVMFuzzerNoMain STATIC
+add_library(LLVMFuzzerNoMain STATIC
$<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
)
- target_link_libraries(LLVMFuzzerNoMain ${LLVM_PTHREAD_LIB})
- add_library(LLVMFuzzer STATIC
+target_link_libraries(LLVMFuzzerNoMain ${LLVM_PTHREAD_LIB})
+add_library(LLVMFuzzer STATIC
FuzzerMain.cpp
$<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
)
- target_link_libraries(LLVMFuzzer ${LLVM_PTHREAD_LIB})
+target_link_libraries(LLVMFuzzer ${LLVM_PTHREAD_LIB})
+
+if( LLVM_USE_SANITIZE_COVERAGE )
+
+ if(NOT "${LLVM_USE_SANITIZER}" STREQUAL "Address")
+ message(FATAL_ERROR
+ "LibFuzzer tests require LLVM_USE_SANITIZER=Address and "
+ "LLVM_USE_SANITIZE_COVERAGE=YES to be set."
+ )
+ endif()
if( LLVM_INCLUDE_TESTS )
add_subdirectory(test)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32096.95345.patch
Type: text/x-patch
Size: 2045 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170414/f5f3c54b/attachment.bin>
More information about the llvm-commits
mailing list