diff options
author | Matt Morehouse <mascasa@google.com> | 2017-10-10 20:13:13 +0000 |
---|---|---|
committer | Matt Morehouse <mascasa@google.com> | 2017-10-10 20:13:13 +0000 |
commit | c7fa5350c51cee5c00abac8bc6dbffaccaadc071 (patch) | |
tree | cf69652568a2738fe8d35023f7dd1523e65d9d0b | |
parent | 0724462a08d75b71e3928d2c8ac5e258f2dfa51d (diff) | |
download | clang-c7fa5350c51cee5c00abac8bc6dbffaccaadc071.tar.gz |
Revert "[clang-fuzzer] Allow building without coverage instrumentation."
This reverts r315336 due to build breakage with gcc.
http://lab.llvm.org:8011/builders/ubuntu-gcc7.1-werror/builds/2173
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315355 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | tools/clang-fuzzer/CMakeLists.txt | 112 | ||||
-rw-r--r-- | tools/clang-fuzzer/ClangFuzzer.cpp | 2 | ||||
-rw-r--r-- | tools/clang-fuzzer/DummyClangFuzzer.cpp | 21 |
3 files changed, 53 insertions, 82 deletions
diff --git a/tools/clang-fuzzer/CMakeLists.txt b/tools/clang-fuzzer/CMakeLists.txt index c76f41cb44..c76d0a753c 100644 --- a/tools/clang-fuzzer/CMakeLists.txt +++ b/tools/clang-fuzzer/CMakeLists.txt @@ -1,66 +1,60 @@ -set(LLVM_LINK_COMPONENTS ${LLVM_TARGETS_TO_BUILD} FuzzMutate) -set(CXX_FLAGS_NOFUZZ ${CMAKE_CXX_FLAGS}) -set(DUMMY_MAIN DummyClangFuzzer.cpp) -if(LLVM_USE_SANITIZE_COVERAGE) +if( LLVM_USE_SANITIZE_COVERAGE ) + set(LLVM_LINK_COMPONENTS ${LLVM_TARGETS_TO_BUILD}) + set(CXX_FLAGS_NOFUZZ "${CMAKE_CXX_FLAGS} -fsanitize=fuzzer-no-link") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=fuzzer") - set(CXX_FLAGS_NOFUZZ "${CXX_FLAGS_NOFUZZ} -fsanitize=fuzzer-no-link") - unset(DUMMY_MAIN) -endif() - -# Hack to bypass LLVM's cmake sources check and allow multiple libraries and -# executables from this directory. -set(LLVM_OPTIONAL_SOURCES - ClangFuzzer.cpp - DummyClangFuzzer.cpp - ExampleClangProtoFuzzer.cpp - ) - -if(CLANG_ENABLE_PROTO_FUZZER) - # Create protobuf .h and .cc files, and put them in a library for use by - # clang-proto-fuzzer components. - find_package(Protobuf REQUIRED) - add_definitions(-DGOOGLE_PROTOBUF_NO_RTTI) - include_directories(${PROTOBUF_INCLUDE_DIRS}) - include_directories(${CMAKE_CURRENT_BINARY_DIR}) - protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS cxx_proto.proto) - set(LLVM_OPTIONAL_SOURCES ${LLVM_OPTIONAL_SOURCES} ${PROTO_SRCS}) - add_clang_library(clangCXXProto - ${PROTO_SRCS} - ${PROTO_HDRS} - - LINK_LIBS - ${PROTOBUF_LIBRARIES} - ) - # Build and include libprotobuf-mutator - include(ProtobufMutator) - include_directories(${ProtobufMutator_INCLUDE_DIRS}) - - # Build the protobuf->C++ translation library and driver. - add_clang_subdirectory(proto-to-cxx) - - # Build the protobuf fuzzer - add_clang_executable(clang-proto-fuzzer - ${DUMMY_MAIN} - ExampleClangProtoFuzzer.cpp + if(CLANG_ENABLE_PROTO_FUZZER) + # Create protobuf .h and .cc files, and put them in a library for use by + # clang-proto-fuzzer components. + find_package(Protobuf REQUIRED) + add_definitions(-DGOOGLE_PROTOBUF_NO_RTTI) + include_directories(${PROTOBUF_INCLUDE_DIRS}) + include_directories(${CMAKE_CURRENT_BINARY_DIR}) + protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS cxx_proto.proto) + # Hack to bypass LLVM's cmake sources check and allow multiple libraries and + # executables from this directory. + set(LLVM_OPTIONAL_SOURCES + ClangFuzzer.cpp + ExampleClangProtoFuzzer.cpp + ${PROTO_SRCS} + ) + add_clang_library(clangCXXProto + ${PROTO_SRCS} + ${PROTO_HDRS} + + LINK_LIBS + ${PROTOBUF_LIBRARIES} + ) + + # Build and include libprotobuf-mutator + include(ProtobufMutator) + include_directories(${ProtobufMutator_INCLUDE_DIRS}) + + # Build the protobuf->C++ translation library and driver. + add_clang_subdirectory(proto-to-cxx) + + # Build the protobuf fuzzer + add_clang_executable(clang-proto-fuzzer ExampleClangProtoFuzzer.cpp) + target_link_libraries(clang-proto-fuzzer + ${ProtobufMutator_LIBRARIES} + clangCXXProto + clangHandleCXX + clangProtoToCXX + ) + else() + # Hack to bypass LLVM's cmake sources check and allow multiple libraries and + # executables from this directory. + set(LLVM_OPTIONAL_SOURCES ClangFuzzer.cpp ExampleClangProtoFuzzer.cpp) + endif() + + add_clang_subdirectory(handle-cxx) + + add_clang_executable(clang-fuzzer + EXCLUDE_FROM_ALL + ClangFuzzer.cpp ) - target_link_libraries(clang-proto-fuzzer - ${ProtobufMutator_LIBRARIES} - clangCXXProto + target_link_libraries(clang-fuzzer clangHandleCXX - clangProtoToCXX ) endif() - -add_clang_subdirectory(handle-cxx) - -add_clang_executable(clang-fuzzer - EXCLUDE_FROM_ALL - ${DUMMY_MAIN} - ClangFuzzer.cpp - ) - -target_link_libraries(clang-fuzzer - clangHandleCXX - ) diff --git a/tools/clang-fuzzer/ClangFuzzer.cpp b/tools/clang-fuzzer/ClangFuzzer.cpp index 2d35fb7735..327d955f60 100644 --- a/tools/clang-fuzzer/ClangFuzzer.cpp +++ b/tools/clang-fuzzer/ClangFuzzer.cpp @@ -17,8 +17,6 @@ using namespace clang_fuzzer; -extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { return 0; } - extern "C" int LLVMFuzzerTestOneInput(uint8_t *data, size_t size) { std::string s((const char *)data, size); HandleCXX(s, {"-O2"}); diff --git a/tools/clang-fuzzer/DummyClangFuzzer.cpp b/tools/clang-fuzzer/DummyClangFuzzer.cpp deleted file mode 100644 index 382c161307..0000000000 --- a/tools/clang-fuzzer/DummyClangFuzzer.cpp +++ /dev/null @@ -1,21 +0,0 @@ -//===-- DummyClangFuzzer.cpp - Entry point to sanity check fuzzers --------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// Provides a main() to build without linking libFuzzer. -// -//===----------------------------------------------------------------------===// -#include "llvm/FuzzMutate/FuzzerCLI.h" - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size); -extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv); - -int main(int argc, char *argv[]) { - return llvm::runFuzzerOnInputs(argc, argv, LLVMFuzzerTestOneInput, - LLVMFuzzerInitialize); -} |