summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKuba Mracek <mracek@apple.com>2017-04-19 23:34:08 +0000
committerKuba Mracek <mracek@apple.com>2017-04-19 23:34:08 +0000
commita89fd60a913c3caaeef16e22e7760b7c1814442c (patch)
treeae1a5e43b7dd1d7bf80c95ba141311a5f19d621e
parent6b98e43eb46ff3ab7110150fc98b602ba66064ce (diff)
downloadbcm5719-llvm-a89fd60a913c3caaeef16e22e7760b7c1814442c.tar.gz
bcm5719-llvm-a89fd60a913c3caaeef16e22e7760b7c1814442c.zip
[libFuzzer] Always build libFuzzer
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 This change always builds libfuzzer, and supports the second use case if the specified flag is set. The point of this patch is to have something that can potentially be shipped with the compiler, and this also ensures that the version of libFuzzer is correct to use with that compiler. Differential Revision: https://reviews.llvm.org/D32096 llvm-svn: 300789
-rw-r--r--llvm/lib/Fuzzer/CMakeLists.txt34
1 files changed, 20 insertions, 14 deletions
diff --git a/llvm/lib/Fuzzer/CMakeLists.txt b/llvm/lib/Fuzzer/CMakeLists.txt
index 59cef04cdec..cc7c8a81211 100644
--- a/llvm/lib/Fuzzer/CMakeLists.txt
+++ b/llvm/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 @@ if( LLVM_USE_SANITIZE_COVERAGE )
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)
OpenPOWER on IntegriCloud