Author: Sam Clegg Date: 2025-08-19T09:46:10-07:00 New Revision: 28f2fb24e1668943172cfd7a381c4262d51615b4
URL: https://github.com/llvm/llvm-project/commit/28f2fb24e1668943172cfd7a381c4262d51615b4 DIFF: https://github.com/llvm/llvm-project/commit/28f2fb24e1668943172cfd7a381c4262d51615b4.diff LOG: Revert "[lld][WebAssembly] Do not relocate ABSOLUTE symbols" (#154371) Reverts llvm/llvm-project#153763 This caused a bunch of failures on the emscripten waterfall, specifically most of the lsan tests started failing. Added: Modified: lld/test/wasm/pie.s lld/wasm/SyntheticSections.cpp Removed: ################################################################################ diff --git a/lld/test/wasm/pie.s b/lld/test/wasm/pie.s index 433958e149d8f..21eac79207318 100644 --- a/lld/test/wasm/pie.s +++ b/lld/test/wasm/pie.s @@ -2,7 +2,7 @@ # RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-emscripten %S/Inputs/internal_func.s -o %t.internal_func.o # RUN: wasm-ld --no-gc-sections --experimental-pic -pie --unresolved-symbols=import-dynamic -o %t.wasm %t.o %t.internal_func.o # RUN: obj2yaml %t.wasm | FileCheck %s -# RUN: llvm-objdump --disassemble-symbols=__wasm_call_ctors,__wasm_apply_data_relocs,__wasm_apply_global_relocs --no-show-raw-insn --no-leading-addr %t.wasm | FileCheck %s --check-prefixes DISASSEM +# RUN: llvm-objdump --disassemble-symbols=__wasm_call_ctors,__wasm_apply_data_relocs --no-show-raw-insn --no-leading-addr %t.wasm | FileCheck %s --check-prefixes DISASSEM .functype external_func () -> () .functype internal_func1 () -> (i32) @@ -41,9 +41,6 @@ foo: drop global.get __stack_pointer - drop - - global.get __wasm_first_page_end@GOT end_function get_data_address: @@ -148,18 +145,6 @@ _start: # DISASSEM-LABEL: <__wasm_apply_data_relocs>: # DISASSEM: end -# global 6 is __wasm_first_page_end, which is ABSOLUTE and -# thus should not be relocated. -# -# DISASSEM-LABEL: <__wasm_apply_global_relocs>: -# DISASSEM: global.set 4 -# DISASSEM: global.set 5 -# DISASSEM-NOT: global.set 6 -# DISASSEM: global.set 7 -# DISASSEM: global.set 8 -# DISASSEM: global.set 9 -# DISASSEM: end - # Run the same test with extended-const support. When this is available # we don't need __wasm_apply_global_relocs and instead rely on the add # instruction in the InitExpr. We also, therefore, do not need these globals @@ -188,23 +173,17 @@ _start: # EXTENDED-CONST-NEXT: Type: I32 # EXTENDED-CONST-NEXT: Mutable: false # EXTENDED-CONST-NEXT: InitExpr: -# EXTENDED-CONST-NEXT: Opcode: I32_CONST -# EXTENDED-CONST-NEXT: Value: 65536 -# EXTENDED-CONST-NEXT: - Index: 7 -# EXTENDED-CONST-NEXT: Type: I32 -# EXTENDED-CONST-NEXT: Mutable: false -# EXTENDED-CONST-NEXT: InitExpr: # EXTENDED-CONST-NEXT: Extended: true # This instruction sequence decodes to: # (global.get[0x23] 0x1 i32.const[0x41] 0x0C i32.add[0x6A] end[0x0b]) # EXTENDED-CONST-NEXT: Body: 2301410C6A0B -# EXTENDED-CONST-NEXT: - Index: 8 +# EXTENDED-CONST-NEXT: - Index: 7 # EXTENDED-CONST-NEXT: Type: I32 # EXTENDED-CONST-NEXT: Mutable: false # EXTENDED-CONST-NEXT: InitExpr: # EXTENDED-CONST-NEXT: Opcode: GLOBAL_GET # EXTENDED-CONST-NEXT: Index: 2 -# EXTENDED-CONST-NEXT: - Index: 9 +# EXTENDED-CONST-NEXT: - Index: 8 # EXTENDED-CONST-NEXT: Type: I32 # EXTENDED-CONST-NEXT: Mutable: false # EXTENDED-CONST-NEXT: InitExpr: diff --git a/lld/wasm/SyntheticSections.cpp b/lld/wasm/SyntheticSections.cpp index e26f818fc2ca0..e1192706ea913 100644 --- a/lld/wasm/SyntheticSections.cpp +++ b/lld/wasm/SyntheticSections.cpp @@ -440,8 +440,6 @@ void GlobalSection::generateRelocationCode(raw_ostream &os, bool TLS) const { : WASM_OPCODE_I32_ADD; for (const Symbol *sym : internalGotSymbols) { - if (sym->flags & WASM_SYMBOL_ABSOLUTE) - continue; if (TLS != sym->isTLS()) continue; @@ -505,8 +503,7 @@ void GlobalSection::writeBody() { bool useExtendedConst = false; uint32_t globalIdx; int64_t offset; - if (ctx.arg.extendedConst && ctx.isPic && - (sym->flags & WASM_SYMBOL_ABSOLUTE) == 0) { + if (ctx.arg.extendedConst && ctx.isPic) { if (auto *d = dyn_cast<DefinedData>(sym)) { if (!sym->isTLS()) { globalIdx = ctx.sym.memoryBase->getGlobalIndex(); _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits