Skip to content
Snippets Groups Projects
Commit ea3d2bfb authored by Matt Morehouse's avatar Matt Morehouse
Browse files

[clang-proto-fuzzer] Allow user-specified compiler arguments.

Summary:
Arguments can be specified after -ignore_remaining_args=1 to modify
the compiler invocation.  For example, the following command-line
will fuzz LLVM with a custom optimization level and target triple:
  clang-proto-fuzzer CORPUS/ -ignore_remaining_args -O3 \
      -triple arm64-apple-ios9

Reviewers: vitalybuka, kcc

Reviewed By: vitalybuka

Subscribers: aemerson, cfe-commits, kristof.beyls

Differential Revision: https://reviews.llvm.org/D36882

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@311185 91177308-0d34-0410-b5e6-96231b3b80d8
parent 3acb7796
No related branches found
No related tags found
No related merge requests found
...@@ -20,9 +20,25 @@ ...@@ -20,9 +20,25 @@
#include "src/libfuzzer/libfuzzer_macro.h" #include "src/libfuzzer/libfuzzer_macro.h"
#include <cstring>
using namespace clang_fuzzer; 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) { DEFINE_BINARY_PROTO_FUZZER(const Function& input) {
auto S = FunctionToString(input); auto S = FunctionToString(input);
HandleCXX(S, {"-O2"}); HandleCXX(S, CLArgs);
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment