Index: lld/Common/ErrorHandler.cpp =================================================================== --- lld/Common/ErrorHandler.cpp +++ lld/Common/ErrorHandler.cpp @@ -192,12 +192,12 @@ reportDiagnostic(logName, Colors::RESET, "", msg); } -void ErrorHandler::message(const Twine &msg) { +void ErrorHandler::message(const Twine &msg, llvm::raw_ostream &s) { if (disableOutput) return; std::lock_guard lock(mu); - lld::outs() << msg << "\n"; - lld::outs().flush(); + s << msg << "\n"; + s.flush(); } void ErrorHandler::warn(const Twine &msg) { Index: lld/MachO/Driver.cpp =================================================================== --- lld/MachO/Driver.cpp +++ lld/MachO/Driver.cpp @@ -1362,15 +1362,17 @@ config->platform() == PlatformKind::macOS); if (args.hasArg(OPT_v)) { - message(getLLDVersion()); + message(getLLDVersion(), lld::errs()); message(StringRef("Library search paths:") + - (config->librarySearchPaths.empty() - ? "" - : "\n\t" + join(config->librarySearchPaths, "\n\t"))); + (config->librarySearchPaths.empty() + ? "" + : "\n\t" + join(config->librarySearchPaths, "\n\t")), + lld::errs()); message(StringRef("Framework search paths:") + - (config->frameworkSearchPaths.empty() - ? "" - : "\n\t" + join(config->frameworkSearchPaths, "\n\t"))); + (config->frameworkSearchPaths.empty() + ? "" + : "\n\t" + join(config->frameworkSearchPaths, "\n\t")), + lld::errs()); } config->progName = argsArr[0]; Index: lld/include/lld/Common/ErrorHandler.h =================================================================== --- lld/include/lld/Common/ErrorHandler.h +++ lld/include/lld/Common/ErrorHandler.h @@ -109,7 +109,7 @@ void error(const Twine &msg, ErrorTag tag, ArrayRef args); [[noreturn]] void fatal(const Twine &msg); void log(const Twine &msg); - void message(const Twine &msg); + void message(const Twine &msg, llvm::raw_ostream &s); void warn(const Twine &msg); void reset() { @@ -137,7 +137,9 @@ } [[noreturn]] inline void fatal(const Twine &msg) { errorHandler().fatal(msg); } inline void log(const Twine &msg) { errorHandler().log(msg); } -inline void message(const Twine &msg) { errorHandler().message(msg); } +inline void message(const Twine &msg, llvm::raw_ostream &s = outs()) { + errorHandler().message(msg, s); +} inline void warn(const Twine &msg) { errorHandler().warn(msg); } inline uint64_t errorCount() { return errorHandler().errorCount; }