[PATCH] D32096: Always build libfuzzer

George Karpenkov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 21 15:36:51 PDT 2017


george.karpenkov updated this revision to Diff 96253.
george.karpenkov added a comment.

Whitelisting allowed systems due to too many build failures on obscure architectures.
The new file exhibits old behavior (build on demand) for all systems except for mac os and linux.


https://reviews.llvm.org/D32096

Files:
  lib/Fuzzer/CMakeLists.txt


Index: lib/Fuzzer/CMakeLists.txt
===================================================================
--- lib/Fuzzer/CMakeLists.txt
+++ lib/Fuzzer/CMakeLists.txt
@@ -13,51 +13,57 @@
   endif()
 endif()
 
-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()
+  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()
+
+# Compile libFuzzer if the compilation is specifically requested, OR
+# if the platform is known to be working.
+if ( LLVM_USE_SANITIZE_COVERAGE OR CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" )
   add_library(LLVMFuzzerNoMainObjects OBJECT
-    FuzzerCrossOver.cpp
-    FuzzerDriver.cpp
-    FuzzerExtFunctionsDlsym.cpp
-    FuzzerExtFunctionsDlsymWin.cpp
-    FuzzerExtFunctionsWeak.cpp
-    FuzzerExtraCounters.cpp
-    FuzzerIO.cpp
-    FuzzerIOPosix.cpp
-    FuzzerIOWindows.cpp
-    FuzzerLoop.cpp
-    FuzzerMerge.cpp
-    FuzzerMutate.cpp
-    FuzzerSHA1.cpp
-    FuzzerShmemPosix.cpp
-    FuzzerShmemWindows.cpp
-    FuzzerTracePC.cpp
-    FuzzerTraceState.cpp
-    FuzzerUtil.cpp
-    FuzzerUtilDarwin.cpp
-    FuzzerUtilLinux.cpp
-    FuzzerUtilPosix.cpp
-    FuzzerUtilWindows.cpp
-    )
+      FuzzerCrossOver.cpp
+      FuzzerDriver.cpp
+      FuzzerExtFunctionsDlsym.cpp
+      FuzzerExtFunctionsDlsymWin.cpp
+      FuzzerExtFunctionsWeak.cpp
+      FuzzerExtraCounters.cpp
+      FuzzerIO.cpp
+      FuzzerIOPosix.cpp
+      FuzzerIOWindows.cpp
+      FuzzerLoop.cpp
+      FuzzerMerge.cpp
+      FuzzerMutate.cpp
+      FuzzerSHA1.cpp
+      FuzzerShmemPosix.cpp
+      FuzzerShmemWindows.cpp
+      FuzzerTracePC.cpp
+      FuzzerTraceState.cpp
+      FuzzerUtil.cpp
+      FuzzerUtilDarwin.cpp
+      FuzzerUtilLinux.cpp
+      FuzzerUtilPosix.cpp
+      FuzzerUtilWindows.cpp
+      )
   add_library(LLVMFuzzerNoMain STATIC
-    $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
-    )
+      $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
+      )
   target_link_libraries(LLVMFuzzerNoMain ${LLVM_PTHREAD_LIB})
   add_library(LLVMFuzzer STATIC
-    FuzzerMain.cpp
-    $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
-    )
+      FuzzerMain.cpp
+      $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
+      )
   target_link_libraries(LLVMFuzzer ${LLVM_PTHREAD_LIB})
+endif()
 
-  if( LLVM_INCLUDE_TESTS )
-    add_subdirectory(test)
-  endif()
+if( LLVM_USE_SANITIZE_COVERAGE AND LLVM_INCLUDE_TESTS )
+  add_subdirectory(test)
 endif()


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32096.96253.patch
Type: text/x-patch
Size: 3035 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170421/e78763c4/attachment.bin>


More information about the llvm-commits mailing list