Skip to content

Conversation

sbc100
Copy link
Collaborator

@sbc100 sbc100 commented Aug 19, 2025

Reverts #153763

This caused a bunch of failures on the emscripten waterfall, specifically most of the lsan tests started failing.

@sbc100
Copy link
Collaborator Author

sbc100 commented Aug 19, 2025

@yamt

@sbc100 sbc100 requested a review from dschuff August 19, 2025 16:05
@llvmbot
Copy link
Member

llvmbot commented Aug 19, 2025

@llvm/pr-subscribers-lld-wasm

@llvm/pr-subscribers-lld

Author: Sam Clegg (sbc100)

Changes

Reverts llvm/llvm-project#153763

This caused a bunch of failures on the emscripten waterfall, specifically most of the lsan tests started failing.


Full diff: https://github.com/llvm/llvm-project/pull/154371.diff

2 Files Affected:

  • (modified) lld/test/wasm/pie.s (+3-24)
  • (modified) lld/wasm/SyntheticSections.cpp (+1-4)
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();

@sbc100 sbc100 merged commit 28f2fb2 into main Aug 19, 2025
12 checks passed
@sbc100 sbc100 deleted the revert-153763-wasm-ld-absolute-reloc branch August 19, 2025 16:46
yamt added a commit to yamt/llvm-project that referenced this pull request Aug 20, 2025
…54371)

This reverts commit 28f2fb2.

The previous attempt was breaking things like __start_ symbols.

This time, use a separate flag instead of abusing ABOSULUTE.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants