summaryrefslogtreecommitdiff
path: root/lld/tools
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2019-11-15 14:06:57 +0900
committerRui Ueyama <ruiu@google.com>2019-11-18 11:18:06 +0900
commitb11386f9be9b2dc7276a758d64f66833da10bdea (patch)
treea2b86a5ace890513090fea13c704acf2e149de0e /lld/tools
parent5d67d81f484f935b709918ad99462e32efa3b17a (diff)
downloadllvm-b11386f9be9b2dc7276a758d64f66833da10bdea.tar.gz
Make it possible to redirect not only errs() but also outs()
This change is for those who use lld as a library. Context: https://reviews.llvm.org/D70287 This patch adds a new parmeter to lld::*::link() so that we can pass an raw_ostream object representing stdout. Previously, lld::*::link() took only an stderr object. Justification for making stdoutOS and stderrOS mandatory: I wanted to make link() functions to take stdout and stderr in that order. However, if we change the function signature from bool link(ArrayRef<const char *> args, bool canExitEarly, raw_ostream &stderrOS = llvm::errs()); to bool link(ArrayRef<const char *> args, bool canExitEarly, raw_ostream &stdoutOS = llvm::outs(), raw_ostream &stderrOS = llvm::errs()); , then the meaning of existing code that passes stderrOS silently changes (stderrOS would be interpreted as stdoutOS). So, I chose to make existing code not to compile, so that developers can fix their code. Differential Revision: https://reviews.llvm.org/D70292
Diffstat (limited to 'lld/tools')
-rw-r--r--lld/tools/lld/lld.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/lld/tools/lld/lld.cpp b/lld/tools/lld/lld.cpp
index 14dcc95899e9..72ff758164d8 100644
--- a/lld/tools/lld/lld.cpp
+++ b/lld/tools/lld/lld.cpp
@@ -51,7 +51,7 @@ enum Flavor {
};
LLVM_ATTRIBUTE_NORETURN static void die(const Twine &s) {
- errs() << s << "\n";
+ llvm::errs() << s << "\n";
exit(1);
}
@@ -150,14 +150,14 @@ int main(int argc, const char **argv) {
switch (parseFlavor(args)) {
case Gnu:
if (isPETarget(args))
- return !mingw::link(args);
- return !elf::link(args, canExitEarly());
+ return !mingw::link(args, canExitEarly(), llvm::outs(), llvm::errs());
+ return !elf::link(args, canExitEarly(), llvm::outs(), llvm::errs());
case WinLink:
- return !coff::link(args, canExitEarly());
+ return !coff::link(args, canExitEarly(), llvm::outs(), llvm::errs());
case Darwin:
- return !mach_o::link(args, canExitEarly());
+ return !mach_o::link(args, canExitEarly(), llvm::outs(), llvm::errs());
case Wasm:
- return !wasm::link(args, canExitEarly());
+ return !wasm::link(args, canExitEarly(), llvm::outs(), llvm::errs());
default:
die("lld is a generic driver.\n"
"Invoke ld.lld (Unix), ld64.lld (macOS), lld-link (Windows), wasm-ld"