[lld] [LLD][COFF] Allow overriding EC alias symbols with lazy archive symbols (PR #113283)

Martin Storsjö via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 22 05:01:48 PDT 2024


================
@@ -455,11 +455,34 @@ void ObjFile::initializeSymbols() {
     COFFSymbolRef coffSym = check(coffObj->getSymbol(i));
     bool prevailingComdat;
     if (coffSym.isUndefined()) {
-      symbols[i] = createUndefined(coffSym);
+      symbols[i] = createUndefined(coffSym, false);
     } else if (coffSym.isWeakExternal()) {
-      symbols[i] = createUndefined(coffSym);
-      weakAliases.emplace_back(symbols[i],
-                               coffSym.getAux<coff_aux_weak_external>());
+      auto aux = coffSym.getAux<coff_aux_weak_external>();
+      bool overrideLazy = true;
+
+      // On ARM64EC, external functions don't emit undefined symbols. Instead,
----------------
mstorsjo wrote:

Can you elaborate here and in the commit message, about what you mean about how external functions emit things. Outside of ARM64EC, where would external functions emit undefined symbols - do you mean when a calling function calls an external function? (Instinctively, the only thing I would expect a function to emit, would be a defined symbol?)

https://github.com/llvm/llvm-project/pull/113283


More information about the llvm-commits mailing list