[lld] [lld][WebAssembly] Allow linker-synthetic symbols to be undefine when… (PR #153537)
YAMAMOTO Takashi via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 13 23:14:52 PDT 2025
================
@@ -985,23 +985,35 @@ static void createOptionalSymbols() {
ctx.sym.dsoHandle = symtab->addOptionalDataSymbol("__dso_handle");
- if (!ctx.arg.shared)
- ctx.sym.dataEnd = symtab->addOptionalDataSymbol("__data_end");
-
+ auto addDataLayoutSymbol = [&](StringRef s) -> DefinedData * {
+ // Data layout symbols are either defined by lld, or (in the case
+ // of PIC code) defined by the dynamic linker / embedder.
+ if (ctx.isPic) {
+ ctx.arg.allowUndefinedSymbols.insert(s);
+ return nullptr;
+ } else {
+ return symtab->addOptionalDataSymbol(s);
+ }
+ };
+
+ ctx.sym.dataEnd = addDataLayoutSymbol("__data_end");
+ ctx.sym.stackLow = addDataLayoutSymbol("__stack_low");
+ ctx.sym.stackHigh = addDataLayoutSymbol("__stack_high");
+ ctx.sym.globalBase = addDataLayoutSymbol("__global_base");
----------------
yamt wrote:
i suspect __data_end and __global_base don't make much sense for pic. what do you think?
https://github.com/llvm/llvm-project/pull/153537
More information about the llvm-commits
mailing list