diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2015-06-09 21:52:48 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2015-06-09 21:52:48 +0000 |
commit | bd1cb792d32c28e887387611fc0aba8638a32756 (patch) | |
tree | d326713e4ab7cbbcb12a15cb1aa982c20fa545e0 | |
parent | 75589ffcc28258f2d9ff3143e5b2f8351e0848ff (diff) | |
download | bcm5719-llvm-bd1cb792d32c28e887387611fc0aba8638a32756.tar.gz bcm5719-llvm-bd1cb792d32c28e887387611fc0aba8638a32756.zip |
COFF: Implement /lib using LibDriver.
Differential Revision: http://reviews.llvm.org/D10347
llvm-svn: 239436
-rw-r--r-- | lld/COFF/CMakeLists.txt | 1 | ||||
-rw-r--r-- | lld/COFF/Driver.cpp | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/lld/COFF/CMakeLists.txt b/lld/COFF/CMakeLists.txt index 790e7941476..984044ac4ef 100644 --- a/lld/COFF/CMakeLists.txt +++ b/lld/COFF/CMakeLists.txt @@ -16,6 +16,7 @@ add_llvm_library(lldCOFF ${LLVM_TARGETS_TO_BUILD} Core LTO + LibDriver MC MCDisassembler Support diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp index 1cc635be18f..63f680c1481 100644 --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -16,6 +16,7 @@ #include "llvm/ADT/Optional.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringSwitch.h" +#include "llvm/LibDriver/LibDriver.h" #include "llvm/Option/Arg.h" #include "llvm/Option/ArgList.h" #include "llvm/Option/Option.h" @@ -185,6 +186,11 @@ bool LinkerDriver::link(int Argc, const char *Argv[]) { llvm::InitializeAllAsmPrinters(); llvm::InitializeAllDisassemblers(); + // If the first command line argument is "/lib", link.exe acts like lib.exe. + // We call our own implementation of lib.exe that understands bitcode files. + if (Argc > 1 && StringRef(Argv[1]).equals_lower("/lib")) + return llvm::libDriverMain(Argc - 1, Argv + 1) == 0; + // Parse command line options. auto ArgsOrErr = Parser.parse(Argc, Argv); if (auto EC = ArgsOrErr.getError()) { |