[lld] cddeb55 - [ELF] Initialize LLVM targets before parsing -mllvm (#228314)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 1 20:55:29 PDT 2026
Author: Fangrui Song
Date: 2026-10-01T20:55:17-07:00
New Revision: cddeb5505f748990cafd46eab11afe464571ea69
URL: https://github.com/llvm/llvm-project/commit/cddeb5505f748990cafd46eab11afe464571ea69
DIFF: https://github.com/llvm/llvm-project/commit/cddeb5505f748990cafd46eab11afe464571ea69.diff
LOG: [ELF] Initialize LLVM targets before parsing -mllvm (#228314)
readConfigs parses -mllvm before initLLVM initializes the targets, so an
option that a target registers at initialization (currently only Sparc
#227977)
is rejected as unknown.
Call initLLVM first, as the COFF, MachO, and wasm ports do. This will be
covered once a -mllvm used by lld/test/ELF/lto tests migrates.
Added:
Modified:
lld/ELF/Driver.cpp
Removed:
################################################################################
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 4e5a5eb8664d7..00842f8f08bfd 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -699,6 +699,7 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
}
}
+ initLLVM();
readConfigs(ctx, args);
checkZOptions(ctx, args);
@@ -716,7 +717,6 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
{
llvm::TimeTraceScope timeScope("ExecuteLinker");
- initLLVM();
createFiles(args);
if (errCount(ctx))
return;
@@ -1368,6 +1368,8 @@ static void parseClangOption(Ctx &ctx, StringRef opt, const Twine &msg) {
raw_string_ostream os(err);
const char *argv[] = {ctx.arg.progName.data(), opt.data()};
+ // Called after initLLVM() to ensure target-specific RegisterLibraryOptions
+ // have been called.
if (cl::ParseCommandLineOptions(2, argv, "", &os))
return;
ErrAlways(ctx) << msg << ": " << StringRef(err).trim();
More information about the llvm-commits
mailing list