[PATCH] D66682: Fix stack_trace_compressor builds for Clang < 6.0

Mitch Phillips via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 23 13:40:31 PDT 2019


hctim created this revision.
hctim added a reviewer: tejohnson.
Herald added subscribers: llvm-commits, Sanitizers, mgorny.
Herald added projects: Sanitizers, LLVM.

Clang 4.* doesn't supply -fsanitize=fuzzer, and Clang 5.* doesn't supply
-fsanitize=fuzzer-no-link. Generally, in LLVM, fuzz targets are added through
the add_llvm_fuzzer build rule, which can't be used in compiler-rt (as it has
to be able to be standalone built).

Instead of adding tooling to add a dummy main (which kind of defeats the
purpose of these fuzz targets), we instead build the fuzz target only when the
Clang version is >= 6.*.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D66682

Files:
  compiler-rt/lib/gwp_asan/CMakeLists.txt


Index: compiler-rt/lib/gwp_asan/CMakeLists.txt
===================================================================
--- compiler-rt/lib/gwp_asan/CMakeLists.txt
+++ compiler-rt/lib/gwp_asan/CMakeLists.txt
@@ -99,9 +99,15 @@
       ADDITIONAL_HEADERS ${GWP_ASAN_BACKTRACE_HEADERS}
       CFLAGS ${GWP_ASAN_CFLAGS} ${SANITIZER_COMMON_CFLAGS})
 
-  # Build the stack trace compressor fuzzer.
-  if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND
-      COMPILER_RT_BUILD_LIBFUZZER)
+  # Build the stack trace compressor fuzzer. Note that clang versions 4.* did
+  # not have -fsanitize=fuzzer, and Clang versions 5.* didn't have
+  # -fsanitize=fuzzer-no-link. In general, the way we build fuzz targets in LLVM
+  # core is to link it against a dummy main when DLLVM_USE_SANITIZE_COVERAGE
+  # isn't specified. Instead, here we only build fuzz targets if clang version
+  # is >= 6.0.
+  if (COMPILER_RT_BUILD_LIBFUZZER AND
+      "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND
+      CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
     add_executable(stack_trace_compressor_fuzzer
         stack_trace_compressor_fuzzer.cpp
         ${GWP_ASAN_SOURCES}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66682.216943.patch
Type: text/x-patch
Size: 1158 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190823/97ff4376/attachment.bin>


More information about the llvm-commits mailing list