[lld] r240900 - COFF: Handle LINK environment variable.
Rui Ueyama
ruiu at google.com
Sat Jun 27 19:35:31 PDT 2015
Author: ruiu
Date: Sat Jun 27 21:35:31 2015
New Revision: 240900
URL: http://llvm.org/viewvc/llvm-project?rev=240900&view=rev
Log:
COFF: Handle LINK environment variable.
If LINK is defined and not empty, it's supposed to contain
command line options.
Added:
lld/trunk/test/COFF/linkenv.test
Modified:
lld/trunk/COFF/Driver.cpp
lld/trunk/COFF/Driver.h
lld/trunk/COFF/DriverUtils.cpp
Modified: lld/trunk/COFF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.cpp?rev=240900&r1=240899&r2=240900&view=diff
==============================================================================
--- lld/trunk/COFF/Driver.cpp (original)
+++ lld/trunk/COFF/Driver.cpp Sat Jun 27 21:35:31 2015
@@ -233,7 +233,7 @@ bool LinkerDriver::link(llvm::ArrayRef<c
return llvm::libDriverMain(ArgsArr.slice(1)) == 0;
// Parse command line options.
- auto ArgsOrErr = Parser.parse(ArgsArr);
+ auto ArgsOrErr = Parser.parseLINK(ArgsArr);
if (auto EC = ArgsOrErr.getError()) {
llvm::errs() << EC.message() << "\n";
return false;
Modified: lld/trunk/COFF/Driver.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.h?rev=240900&r1=240899&r2=240900&view=diff
==============================================================================
--- lld/trunk/COFF/Driver.h (original)
+++ lld/trunk/COFF/Driver.h Sat Jun 27 21:35:31 2015
@@ -44,6 +44,9 @@ public:
// Parses command line options.
ErrorOr<llvm::opt::InputArgList> parse(llvm::ArrayRef<const char *> Args);
+ // Concatenate LINK environment varirable and given arguments and parse them.
+ ErrorOr<llvm::opt::InputArgList> parseLINK(llvm::ArrayRef<const char *> Args);
+
// Tokenizes a given string and then parses as command line options.
ErrorOr<llvm::opt::InputArgList> parse(StringRef S) {
return parse(tokenize(S));
Modified: lld/trunk/COFF/DriverUtils.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/DriverUtils.cpp?rev=240900&r1=240899&r2=240900&view=diff
==============================================================================
--- lld/trunk/COFF/DriverUtils.cpp (original)
+++ lld/trunk/COFF/DriverUtils.cpp Sat Jun 27 21:35:31 2015
@@ -577,6 +577,17 @@ ArgParser::parse(llvm::ArrayRef<const ch
return parse(V);
}
+ErrorOr<llvm::opt::InputArgList>
+ArgParser::parseLINK(ArrayRef<const char *> Args) {
+ // Concatenate LINK env and given arguments and parse them.
+ Optional<std::string> Env = Process::GetEnv("LINK");
+ if (!Env)
+ return parse(Args);
+ std::vector<const char *> V = tokenize(*Env);
+ V.insert(V.end(), Args.begin() + 1, Args.end());
+ return parse(V);
+}
+
std::vector<const char *> ArgParser::tokenize(StringRef S) {
SmallVector<const char *, 16> Tokens;
BumpPtrStringSaver Saver(AllocAux);
Added: lld/trunk/test/COFF/linkenv.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/linkenv.test?rev=240900&view=auto
==============================================================================
--- lld/trunk/test/COFF/linkenv.test (added)
+++ lld/trunk/test/COFF/linkenv.test Sat Jun 27 21:35:31 2015
@@ -0,0 +1,5 @@
+# RUN: env LINK="-help -foo" lld -flavor link2 >& %t.log
+# RUN: FileCheck %s < %t.log
+
+CHECK: unknown argument: -foo
+CHECK: OVERVIEW: LLVM Linker
More information about the llvm-commits
mailing list