summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ToolDrivers
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ToolDrivers')
-rw-r--r--llvm/lib/ToolDrivers/CMakeLists.txt1
-rw-r--r--llvm/lib/ToolDrivers/LLVMBuild.txt2
-rw-r--r--llvm/lib/ToolDrivers/llvm-dlltool/CMakeLists.txt9
-rw-r--r--llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp160
-rw-r--r--llvm/lib/ToolDrivers/llvm-dlltool/LLVMBuild.txt22
-rw-r--r--llvm/lib/ToolDrivers/llvm-dlltool/Options.td26
6 files changed, 1 insertions, 219 deletions
diff --git a/llvm/lib/ToolDrivers/CMakeLists.txt b/llvm/lib/ToolDrivers/CMakeLists.txt
index 28da36bba20..ad458450fda 100644
--- a/llvm/lib/ToolDrivers/CMakeLists.txt
+++ b/llvm/lib/ToolDrivers/CMakeLists.txt
@@ -1,2 +1 @@
-add_subdirectory(llvm-dlltool)
add_subdirectory(llvm-lib)
diff --git a/llvm/lib/ToolDrivers/LLVMBuild.txt b/llvm/lib/ToolDrivers/LLVMBuild.txt
index a49e04bdf3c..7da9a5c0100 100644
--- a/llvm/lib/ToolDrivers/LLVMBuild.txt
+++ b/llvm/lib/ToolDrivers/LLVMBuild.txt
@@ -16,7 +16,7 @@
;===------------------------------------------------------------------------===;
[common]
-subdirectories = llvm-dlltool llvm-lib
+subdirectories = llvm-lib
[component_0]
type = Group
diff --git a/llvm/lib/ToolDrivers/llvm-dlltool/CMakeLists.txt b/llvm/lib/ToolDrivers/llvm-dlltool/CMakeLists.txt
deleted file mode 100644
index 52bd5cba86f..00000000000
--- a/llvm/lib/ToolDrivers/llvm-dlltool/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-set(LLVM_TARGET_DEFINITIONS Options.td)
-tablegen(LLVM Options.inc -gen-opt-parser-defs)
-add_public_tablegen_target(DllOptionsTableGen)
-
-add_llvm_library(LLVMDlltoolDriver
- DlltoolDriver.cpp
- )
-
-add_dependencies(LLVMDlltoolDriver DllOptionsTableGen)
diff --git a/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp b/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
deleted file mode 100644
index a7de7930607..00000000000
--- a/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
+++ /dev/null
@@ -1,160 +0,0 @@
-//===- DlltoolDriver.cpp - dlltool.exe-compatible driver ------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Defines an interface to a dlltool.exe-compatible driver.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h"
-#include "llvm/Object/ArchiveWriter.h"
-#include "llvm/Object/COFF.h"
-#include "llvm/Object/COFFImportFile.h"
-#include "llvm/Object/COFFModuleDefinition.h"
-#include "llvm/Option/Arg.h"
-#include "llvm/Option/ArgList.h"
-#include "llvm/Option/Option.h"
-#include "llvm/Support/Path.h"
-
-#include <string>
-#include <vector>
-
-using namespace llvm;
-using namespace llvm::object;
-using namespace llvm::COFF;
-
-namespace {
-
-enum {
- OPT_INVALID = 0,
-#define OPTION(_1, _2, ID, _4, _5, _6, _7, _8, _9, _10, _11, _12) OPT_##ID,
-#include "Options.inc"
-#undef OPTION
-};
-
-#define PREFIX(NAME, VALUE) const char *const NAME[] = VALUE;
-#include "Options.inc"
-#undef PREFIX
-
-static const llvm::opt::OptTable::Info infoTable[] = {
-#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12) \
- {X1, X2, X10, X11, OPT_##ID, llvm::opt::Option::KIND##Class, \
- X9, X8, OPT_##GROUP, OPT_##ALIAS, X7, X12},
-#include "Options.inc"
-#undef OPTION
-};
-
-class DllOptTable : public llvm::opt::OptTable {
-public:
- DllOptTable() : OptTable(infoTable, false) {}
-};
-
-} // namespace
-
-std::vector<std::unique_ptr<MemoryBuffer>> OwningMBs;
-
-// Opens a file. Path has to be resolved already.
-// Newly created memory buffers are owned by this driver.
-MemoryBufferRef openFile(StringRef Path) {
- ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> MB = MemoryBuffer::getFile(Path);
-
- if (std::error_code EC = MB.getError())
- llvm::errs() << "fail openFile: " << EC.message() << "\n";
-
- MemoryBufferRef MBRef = MB.get()->getMemBufferRef();
- OwningMBs.push_back(std::move(MB.get())); // take ownership
- return MBRef;
-}
-
-static MachineTypes getEmulation(StringRef S) {
- return StringSwitch<MachineTypes>(S)
- .Case("i386", IMAGE_FILE_MACHINE_I386)
- .Case("i386:x86-64", IMAGE_FILE_MACHINE_AMD64)
- .Case("arm", IMAGE_FILE_MACHINE_ARMNT)
- .Default(IMAGE_FILE_MACHINE_UNKNOWN);
-}
-
-static std::string getImplibPath(std::string Path) {
- SmallString<128> Out = StringRef("lib");
- Out.append(Path);
- sys::path::replace_extension(Out, ".a");
- return Out.str();
-}
-
-int llvm::dlltoolDriverMain(llvm::ArrayRef<const char *> ArgsArr) {
- DllOptTable Table;
- unsigned MissingIndex;
- unsigned MissingCount;
- llvm::opt::InputArgList Args =
- Table.ParseArgs(ArgsArr.slice(1), MissingIndex, MissingCount);
- if (MissingCount) {
- llvm::errs() << Args.getArgString(MissingIndex) << ": missing argument\n";
- return 1;
- }
-
- // Handle when no input or output is specified
- if (Args.hasArgNoClaim(OPT_INPUT) ||
- (!Args.hasArgNoClaim(OPT_d) && !Args.hasArgNoClaim(OPT_l))) {
- Table.PrintHelp(outs(), ArgsArr[0], "dlltool", false);
- llvm::outs() << "\nTARGETS: i386, i386:x86-64, arm\n";
- return 1;
- }
-
- if (!Args.hasArgNoClaim(OPT_m) && Args.hasArgNoClaim(OPT_d)) {
- llvm::errs() << "error: no target machine specified\n"
- << "supported targets: i386, i386:x86-64, arm\n";
- return 1;
- }
-
- for (auto *Arg : Args.filtered(OPT_UNKNOWN))
- llvm::errs() << "ignoring unknown argument: " << Arg->getSpelling() << "\n";
-
- MemoryBufferRef MB;
- if (auto *Arg = Args.getLastArg(OPT_d))
- MB = openFile(Arg->getValue());
-
- if (!MB.getBufferSize()) {
- llvm::errs() << "definition file empty\n";
- return 1;
- }
-
- COFF::MachineTypes Machine = IMAGE_FILE_MACHINE_UNKNOWN;
- if (auto *Arg = Args.getLastArg(OPT_m))
- Machine = getEmulation(Arg->getValue());
-
- if (Machine == IMAGE_FILE_MACHINE_UNKNOWN) {
- llvm::errs() << "unknown target\n";
- return 1;
- }
-
- Expected<COFFModuleDefinition> Def =
- parseCOFFModuleDefinition(MB, Machine, true);
-
- if (!Def) {
- llvm::errs() << "error parsing definition\n"
- << errorToErrorCode(Def.takeError()).message();
- return 1;
- }
-
- // Do this after the parser because parseCOFFModuleDefinition sets OutputFile.
- if (auto *Arg = Args.getLastArg(OPT_D))
- Def->OutputFile = Arg->getValue();
-
- if (Def->OutputFile.empty()) {
- llvm::errs() << "no output file specified\n";
- return 1;
- }
-
- std::string Path = Args.getLastArgValue(OPT_l);
- if (Path.empty())
- Path = getImplibPath(Def->OutputFile);
-
- if (writeImportLibrary(Def->OutputFile, Path, Def->Exports, Machine))
- return 1;
- return 0;
-}
diff --git a/llvm/lib/ToolDrivers/llvm-dlltool/LLVMBuild.txt b/llvm/lib/ToolDrivers/llvm-dlltool/LLVMBuild.txt
deleted file mode 100644
index 11736eb47bc..00000000000
--- a/llvm/lib/ToolDrivers/llvm-dlltool/LLVMBuild.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-;===- ./lib/ToolDrivers/llvm-dlltool/LLVMBuild.txt -------------*- Conf -*--===;
-;
-; The LLVM Compiler Infrastructure
-;
-; This file is distributed under the University of Illinois Open Source
-; License. See LICENSE.TXT for details.
-;
-;===------------------------------------------------------------------------===;
-;
-; This is an LLVMBuild description file for the components in this subdirectory.
-;
-; For more information on the LLVMBuild system, please see:
-;
-; http://llvm.org/docs/LLVMBuild.html
-;
-;===------------------------------------------------------------------------===;
-
-[component_0]
-type = Library
-name = DlltoolDriver
-parent = Libraries
-required_libraries = Object Option Support
diff --git a/llvm/lib/ToolDrivers/llvm-dlltool/Options.td b/llvm/lib/ToolDrivers/llvm-dlltool/Options.td
deleted file mode 100644
index 213c6a4d767..00000000000
--- a/llvm/lib/ToolDrivers/llvm-dlltool/Options.td
+++ /dev/null
@@ -1,26 +0,0 @@
-include "llvm/Option/OptParser.td"
-
-def m: JoinedOrSeparate<["-"], "m">, HelpText<"Set target machine">;
-def m_long : JoinedOrSeparate<["--"], "machine">, Alias<m>;
-
-def l: JoinedOrSeparate<["-"], "l">, HelpText<"Generate an import lib">;
-def l_long : JoinedOrSeparate<["--"], "output-lib">, Alias<l>;
-
-def D: JoinedOrSeparate<["-"], "D">, HelpText<"Specify the input DLL Name">;
-def D_long : JoinedOrSeparate<["--"], "dllname">, Alias<D>;
-
-def d: JoinedOrSeparate<["-"], "d">, HelpText<"Input .def File">;
-def d_long : JoinedOrSeparate<["--"], "input-def">, Alias<d>;
-
-//==============================================================================
-// The flags below do nothing. They are defined only for dlltool compatibility.
-//==============================================================================
-
-def k: Flag<["-"], "k">, HelpText<"Kill @n Symbol from export">;
-def k_alias: Flag<["--"], "kill-at">, Alias<k>;
-
-def S: JoinedOrSeparate<["-"], "S">, HelpText<"Assembler">;
-def S_alias: JoinedOrSeparate<["--"], "as">, Alias<S>;
-
-def f: JoinedOrSeparate<["-"], "f">, HelpText<"Assembler Flags">;
-def f_alias: JoinedOrSeparate<["--"], "as-flags">, Alias<f>;
OpenPOWER on IntegriCloud