diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -64,6 +64,9 @@ bool link(ArrayRef args, bool canExitEarly, raw_ostream &stdoutOS, raw_ostream &stderrOS) { + lld::stdoutOS = &stdoutOS; + lld::stderrOS = &stderrOS; + errorHandler().logName = args::getFilenameWithoutExe(args[0]); errorHandler().errorLimitExceededMsg = "too many errors emitted, stopping now" @@ -71,9 +74,6 @@ errorHandler().exitEarly = canExitEarly; enableColors(stderrOS.has_colors()); - lld::stdoutOS = &stdoutOS; - lld::stderrOS = &stderrOS; - config = make(); symtab = make(); driver = make(); diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -77,6 +77,9 @@ bool link(ArrayRef args, bool canExitEarly, raw_ostream &stdoutOS, raw_ostream &stderrOS) { + lld::stdoutOS = &stdoutOS; + lld::stderrOS = &stderrOS; + errorHandler().logName = args::getFilenameWithoutExe(args[0]); errorHandler().errorLimitExceededMsg = "too many errors emitted, stopping now (use " @@ -84,9 +87,6 @@ errorHandler().exitEarly = canExitEarly; enableColors(stderrOS.has_colors()); - lld::stdoutOS = &stdoutOS; - lld::stderrOS = &stderrOS; - inputSections.clear(); outputSections.clear(); binaryFiles.clear(); diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -161,10 +161,11 @@ // then call coff::link. bool mingw::link(ArrayRef argsArr, bool canExitEarly, raw_ostream &stdoutOS, raw_ostream &stderrOS) { - enableColors(stderrOS.has_colors()); lld::stdoutOS = &stdoutOS; lld::stderrOS = &stderrOS; + enableColors(stderrOS.has_colors()); + MinGWOptTable parser; opt::InputArgList args = parser.parse(argsArr.slice(1)); diff --git a/lld/lib/Driver/DarwinLdDriver.cpp b/lld/lib/Driver/DarwinLdDriver.cpp --- a/lld/lib/Driver/DarwinLdDriver.cpp +++ b/lld/lib/Driver/DarwinLdDriver.cpp @@ -1145,6 +1145,9 @@ /// This is where the link is actually performed. bool link(llvm::ArrayRef args, bool CanExitEarly, raw_ostream &StdoutOS, raw_ostream &StderrOS) { + lld::stdoutOS = &StdoutOS; + lld::stderrOS = &StderrOS; + errorHandler().logName = args::getFilenameWithoutExe(args[0]); errorHandler().errorLimitExceededMsg = "too many errors emitted, stopping now (use " @@ -1152,9 +1155,6 @@ errorHandler().exitEarly = CanExitEarly; enableColors(StderrOS.has_colors()); - lld::stdoutOS = &StdoutOS; - lld::stderrOS = &StderrOS; - MachOLinkingContext ctx; if (!parse(args, ctx)) return false; diff --git a/lld/wasm/Driver.cpp b/lld/wasm/Driver.cpp --- a/lld/wasm/Driver.cpp +++ b/lld/wasm/Driver.cpp @@ -80,15 +80,15 @@ bool link(ArrayRef args, bool canExitEarly, raw_ostream &stdoutOS, raw_ostream &stderrOS) { + lld::stdoutOS = &stdoutOS; + lld::stderrOS = &stderrOS; + errorHandler().logName = args::getFilenameWithoutExe(args[0]); errorHandler().errorLimitExceededMsg = "too many errors emitted, stopping now (use " "-error-limit=0 to see all errors)"; enableColors(stderrOS.has_colors()); - lld::stdoutOS = &stdoutOS; - lld::stderrOS = &stderrOS; - config = make(); symtab = make();