]> granicus.if.org Git - llvm/commitdiff
Revert r315545 "llvm-isel-fuzzer: Handle a subset of backend flags in the executable...
authorHans Wennborg <hans@hanshq.net>
Thu, 12 Oct 2017 03:32:09 +0000 (03:32 +0000)
committerHans Wennborg <hans@hanshq.net>
Thu, 12 Oct 2017 03:32:09 +0000 (03:32 +0000)
It broke some tests on Windows:

Failing Tests (4):
    LLVM :: tools/llvm-isel-fuzzer/execname-options.ll
    LLVM :: tools/llvm-isel-fuzzer/missing-triple.ll
    LLVM :: tools/llvm-isel-fuzzer/x86-empty-bc.ll
    LLVM :: tools/llvm-isel-fuzzer/x86-empty.ll

> llvm-isel-fuzzer: Handle a subset of backend flags in the executable name
>
> Here we add a secondary option parser to llvm-isel-fuzzer (and provide
> it for use with other fuzzers). With this, you can copy the fuzzer to
> a name like llvm-isel-fuzzer:aarch64-gisel for a fuzzer that fuzzer
> AArch64 with GlobalISel enabled, or fuzzer:x86_64 to fuzz x86, with no
> flags required. This should be useful for running these in OSS-Fuzz.
>
> Note that this handrolls a subset of cl::opts to recognize, rather
> than embedding a complete command parser for argv[0]. If we find we
> really need the flexibility of handling arbitrary options at some
> point we can rethink this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315554 91177308-0d34-0410-b5e6-96231b3b80d8

docs/FuzzingLLVM.rst
include/llvm/FuzzMutate/FuzzerCLI.h
lib/FuzzMutate/FuzzerCLI.cpp
test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll [deleted file]
test/tools/llvm-isel-fuzzer/execname-options.ll [deleted file]
tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp

index 5ba5fa10b6798296ce40e273edb143afa32970e4..ef7b21383261d6ad3b6f0b94d0866a03f2804e18 100644 (file)
@@ -81,13 +81,6 @@ the following command would fuzz AArch64 with :doc:`GlobalISel`:
 
    % bin/llvm-isel-fuzzer <corpus-dir> -ignore_remaining_args=1 -mtriple aarch64 -global-isel -O0
 
-Some flags can also be specified in the binary name itself in order to support
-OSS Fuzz, which has trouble with required arguments. To do this, you can copy
-or move ``llvm-isel-fuzzer`` to ``llvm-isel-fuzzer:x-y-z``, where x, y, and z
-are architecture names (``aarch64``, ``x86_64``), optimization levels (``O0``,
-``O2``), or specific keywords like ``gisel`` for enabling global instruction
-selection.
-
 llvm-mc-assemble-fuzzer
 -----------------------
 
index 4cb32cefc917fd3153ce58487fa0b3184e0f2c2f..83c8356247e184bca28fd8236c269102f05cef37 100644 (file)
@@ -15,7 +15,6 @@
 #ifndef LLVM_FUZZMUTATE_FUZZER_CLI_H
 #define LLVM_FUZZMUTATE_FUZZER_CLI_H
 
-#include "llvm/ADT/StringRef.h"
 #include "llvm/Support/DataTypes.h"
 
 namespace llvm {
@@ -25,17 +24,6 @@ namespace llvm {
 /// This handles all arguments after -ignore_remaining_args=1 as cl::opts.
 void parseFuzzerCLOpts(int ArgC, char *ArgV[]);
 
-/// Handle backend options that are encoded in the executable name.
-///
-/// Parses some common backend options out of a specially crafted executable
-/// name (argv[0]). For example, a name like llvm-foo-fuzzer:aarch64-gisel might
-/// set up an AArch64 triple and the Global ISel selector. This should be called
-/// *before* parseFuzzerCLOpts if calling both.
-///
-/// This is meant to be used for environments like OSS-Fuzz that aren't capable
-/// of passing in command line arguments in the normal way.
-void handleExecNameEncodedBEOpts(StringRef ExecName);
-
 using FuzzerTestFun = int (*)(const uint8_t *Data, size_t Size);
 using FuzzerInitFun = int (*)(int *argc, char ***argv);
 
index 144f1f579ea4c9045ab683a96caf7e59a1d0a99a..3b71cde5af7c34c5a0013825ec415a46660b8c44 100644 (file)
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/FuzzMutate/FuzzerCLI.h"
-#include "llvm/ADT/Triple.h"
+#include "llvm/ADT/StringRef.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Compiler.h"
 #include "llvm/Support/Error.h"
@@ -31,42 +31,6 @@ void llvm::parseFuzzerCLOpts(int ArgC, char *ArgV[]) {
   cl::ParseCommandLineOptions(CLArgs.size(), CLArgs.data());
 }
 
-void llvm::handleExecNameEncodedBEOpts(StringRef ExecName) {
-  std::vector<std::string> Args{ExecName};
-
-  auto NameAndArgs = ExecName.split(':');
-  if (NameAndArgs.second.empty())
-    return;
-
-  SmallVector<StringRef, 4> Opts;
-  NameAndArgs.second.split(Opts, '-');
-  for (StringRef Opt : Opts) {
-    if (Opt.equals("gisel")) {
-      Args.push_back("-global-isel");
-      // For now we default GlobalISel to -O0
-      Args.push_back("-O0");
-    } else if (Opt.startswith("O")) {
-      Args.push_back("-" + Opt.str());
-    } else if (auto Arch = Triple::getArchTypeForLLVMName(Opt)) {
-      Args.push_back("-mtriple=" + Opt.str());
-    } else {
-      errs() << ExecName << ": Unknown option: " << Opt << ".\n";
-      exit(1);
-    }
-  }
-  errs() << NameAndArgs.first << ": Injected args:";
-  for (int I = 1, E = Args.size(); I < E; ++I)
-    errs() << " " << Args[I];
-  errs() << "\n";
-
-  std::vector<const char *> CLArgs;
-  CLArgs.reserve(Args.size());
-  for (std::string &S : Args)
-    CLArgs.push_back(S.c_str());
-
-  cl::ParseCommandLineOptions(CLArgs.size(), CLArgs.data());
-}
-
 int llvm::runFuzzerOnInputs(int ArgC, char *ArgV[], FuzzerTestFun TestOne,
                             FuzzerInitFun Init) {
   errs() << "*** This tool was not linked to libFuzzer.\n"
diff --git a/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll b/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll
deleted file mode 100644 (file)
index e3974b5..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-; REQUIRES: aarch64-registered-target
-
-; RUN: echo > %t.input
-
-; RUN: cp llvm-isel-fuzzer %t.bin:aarch64
-; RUN: %t.bin:aarch64 %t.input 2>&1 | FileCheck -check-prefix=AARCH64 %s
-; AARCH64: Injected args: -mtriple=aarch64
-
-; RUN: mv %t.bin:aarch64 %t.bin:aarch64-O1
-; RUN: %t.bin:aarch64-O1 %t.input 2>&1 | FileCheck -check-prefix=OPT-AFTER %s
-; OPT-AFTER: Injected args: -mtriple=aarch64 -O1
-
-; RUN: mv %t.bin:aarch64-O1 %t.bin:O3-aarch64
-; RUN: %t.bin:O3-aarch64 %t.input 2>&1 | FileCheck -check-prefix=OPT-BEFORE %s
-; OPT-BEFORE: Injected args: -O3 -mtriple=aarch64
diff --git a/test/tools/llvm-isel-fuzzer/execname-options.ll b/test/tools/llvm-isel-fuzzer/execname-options.ll
deleted file mode 100644 (file)
index 8ebc1e9..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-; RUN: echo > %t.input
-
-; RUN: cp llvm-isel-fuzzer %t.bin:gisel
-; RUN: not %t.bin:gisel %t.input 2>&1 | FileCheck -check-prefix=GISEL %s
-; GISEL: Injected args: -global-isel -O0
-; GISEL: -mtriple must be specified
-
-; RUN: cp llvm-isel-fuzzer %t.bin:gisel-O2
-; RUN: not %t.bin:gisel-O2 %t.input 2>&1 | FileCheck -check-prefix=GISEL-O2 %s
-; GISEL-O2: Injected args: -global-isel -O0 -O2
-; GISEL-O2: -mtriple must be specified
-
-; RUN: cp llvm-isel-fuzzer %t.bin:unexist
-; RUN: not %t.bin:unexist %t.input 2>&1 | FileCheck -check-prefix=NO-OPT %s
-; NO-OPT: Unknown option:
index 164c85f9516622185ffaaf354fdce1926cd88b27..314acdb5087d141471da404ab82d3f14fa1880ed 100644 (file)
@@ -150,7 +150,6 @@ extern "C" LLVM_ATTRIBUTE_USED int LLVMFuzzerInitialize(int *argc,
   InitializeAllAsmPrinters();
   InitializeAllAsmParsers();
 
-  handleExecNameEncodedBEOpts(*argv[0]);
   parseFuzzerCLOpts(*argc, *argv);
 
   if (TargetTriple.empty()) {