diff options
author | Rui Ueyama <ruiu@google.com> | 2019-11-15 14:06:57 +0900 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2019-11-18 11:18:06 +0900 |
commit | b11386f9be9b2dc7276a758d64f66833da10bdea (patch) | |
tree | a2b86a5ace890513090fea13c704acf2e149de0e /lld/tools | |
parent | 5d67d81f484f935b709918ad99462e32efa3b17a (diff) | |
download | llvm-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.cpp | 12 |
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" |