Author: morehouse Date: Mon Jun 4 17:11:41 2018 New Revision: 333969 URL: http://llvm.org/viewvc/llvm-project?rev=333969&view=rev Log: [clang-proto-fuzzer] Refactored LLVMFuzzerInitialize into its own file.
Copied and renamed some files in preparation for new loop-proto-fuzzer. Patch By: emmettneyman Differential Revision: https://reviews.llvm.org/D47666 Added: cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/ cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/CMakeLists.txt cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.cpp cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.h Modified: cfe/trunk/tools/clang-fuzzer/CMakeLists.txt cfe/trunk/tools/clang-fuzzer/ExampleClangProtoFuzzer.cpp Modified: cfe/trunk/tools/clang-fuzzer/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-fuzzer/CMakeLists.txt?rev=333969&r1=333968&r2=333969&view=diff ============================================================================== --- cfe/trunk/tools/clang-fuzzer/CMakeLists.txt (original) +++ cfe/trunk/tools/clang-fuzzer/CMakeLists.txt Mon Jun 4 17:11:41 2018 @@ -40,6 +40,9 @@ if(CLANG_ENABLE_PROTO_FUZZER) # Build the protobuf->C++ translation library and driver. add_clang_subdirectory(proto-to-cxx) + # Build the fuzzer initialization library. + add_clang_subdirectory(fuzzer-initialize) + # Build the protobuf fuzzer add_clang_executable(clang-proto-fuzzer ${DUMMY_MAIN} @@ -52,6 +55,7 @@ if(CLANG_ENABLE_PROTO_FUZZER) ${PROTOBUF_LIBRARIES} ${LLVM_LIB_FUZZING_ENGINE} clangCXXProto + clangFuzzerInitialize clangHandleCXX clangProtoToCXX ) Modified: cfe/trunk/tools/clang-fuzzer/ExampleClangProtoFuzzer.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-fuzzer/ExampleClangProtoFuzzer.cpp?rev=333969&r1=333968&r2=333969&view=diff ============================================================================== --- cfe/trunk/tools/clang-fuzzer/ExampleClangProtoFuzzer.cpp (original) +++ cfe/trunk/tools/clang-fuzzer/ExampleClangProtoFuzzer.cpp Mon Jun 4 17:11:41 2018 @@ -17,28 +17,12 @@ #include "cxx_proto.pb.h" #include "handle-cxx/handle_cxx.h" #include "proto-to-cxx/proto_to_cxx.h" - +#include "fuzzer-initialize/fuzzer_initialize.h" #include "src/libfuzzer/libfuzzer_macro.h" -#include <cstring> - using namespace clang_fuzzer; -static std::vector<const char *> CLArgs; - -extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { - CLArgs.push_back("-O2"); - for (int I = 1; I < *argc; I++) { - if (strcmp((*argv)[I], "-ignore_remaining_args=1") == 0) { - for (I++; I < *argc; I++) - CLArgs.push_back((*argv)[I]); - break; - } - } - return 0; -} - DEFINE_BINARY_PROTO_FUZZER(const Function& input) { auto S = FunctionToString(input); - HandleCXX(S, CLArgs); + HandleCXX(S, GetCLArgs()); } Added: cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/CMakeLists.txt?rev=333969&view=auto ============================================================================== --- cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/CMakeLists.txt (added) +++ cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/CMakeLists.txt Mon Jun 4 17:11:41 2018 @@ -0,0 +1,3 @@ +set(LLVM_LINK_COMPONENTS ${LLVM_TARGETS_TO_BUILD} Support) + +add_clang_library(clangFuzzerInitialize fuzzer_initialize.cpp) Added: cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.cpp?rev=333969&view=auto ============================================================================== --- cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.cpp (added) +++ cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.cpp Mon Jun 4 17:11:41 2018 @@ -0,0 +1,43 @@ +//===-- fuzzer_initialize.cpp - Fuzz Clang --------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// This file implements two functions: one that returns the command line +/// arguments for a given call to the fuzz target and one that initializes +/// the fuzzer with the correct command line arguments. +/// +//===----------------------------------------------------------------------===// + +#include "fuzzer_initialize.h" +#include <cstring> + +using namespace clang_fuzzer; + + +namespace clang_fuzzer { + +static std::vector<const char *> CLArgs; + +const std::vector<const char *>& GetCLArgs() { + return CLArgs; +} + +} + +extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { + CLArgs.push_back("-O2"); + for (int I = 1; I < *argc; I++) { + if (strcmp((*argv)[I], "-ignore_remaining_args=1") == 0) { + for (I++; I < *argc; I++) + CLArgs.push_back((*argv)[I]); + break; + } + } + return 0; +} Added: cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.h?rev=333969&view=auto ============================================================================== --- cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.h (added) +++ cfe/trunk/tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.h Mon Jun 4 17:11:41 2018 @@ -0,0 +1,19 @@ +//==-- fuzzer_initialize.h - Fuzz Clang ------------------------------------==// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Defines a function that returns the command line arguments for a specific +// call to the fuzz target. +// +//===----------------------------------------------------------------------===// + +#include <vector> + +namespace clang_fuzzer { +const std::vector<const char *>& GetCLArgs(); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits