[all-commits] [llvm/llvm-project] 9cbbb7: [wasm-ld] Refactor WasmSym from static globals to ...

Anutosh Bhat via All-commits all-commits at lists.llvm.org
Fri Apr 25 07:35:22 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 9cbbb74d370c09e13b8412f21dccb7d2c4afc6a4
      https://github.com/llvm/llvm-project/commit/9cbbb74d370c09e13b8412f21dccb7d2c4afc6a4
  Author: Anutosh Bhat <andersonbhat491 at gmail.com>
  Date:   2025-04-25 (Fri, 25 Apr 2025)

  Changed paths:
    M lld/wasm/Config.h
    M lld/wasm/Driver.cpp
    M lld/wasm/InputChunks.cpp
    M lld/wasm/MarkLive.cpp
    M lld/wasm/OutputSections.cpp
    M lld/wasm/Symbols.cpp
    M lld/wasm/Symbols.h
    M lld/wasm/SyntheticSections.cpp
    M lld/wasm/Writer.cpp

  Log Message:
  -----------
  [wasm-ld] Refactor WasmSym from static globals to per-link context (#134970)

Towards
#https://github.com/llvm/llvm-project/issues/134809#issuecomment-2787206873

This change moves WasmSym from a static global struct to an instance
owned by Ctx, allowing it to be reset cleanly between linker runs. This
enables safe support for multiple invocations of wasm-ld within the same
process

Changes done 

- Converted WasmSym from a static struct to a regular struct with
instance members.

- Added a std::unique_ptr<WasmSym> wasmSym field inside Ctx.

- Reset wasmSym in Ctx::reset() to clear state between links.

- Replaced all WasmSym:: references with ctx.wasmSym->.

- Removed global symbol definitions from Symbols.cpp that are no longer
needed.

Clearing wasmSym in ctx.reset() ensures a clean slate for each link
invocation, preventing symbol leakage across runs—critical when using
wasm-ld/lld as a reentrant library where global state can cause subtle,
hard-to-debug errors.

---------

Co-authored-by: Vassil Vassilev <v.g.vassilev at gmail.com>



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list