[PATCH] D153293: [clang][WebAssembly] support wasm32-wasi shared libraries

Joel Dice via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 19 09:11:33 PDT 2023


dicej created this revision.
Herald added subscribers: pmatos, asb, delcypher, sunfish, hiraditya, jgravelle-google, sbc100, dschuff.
Herald added a project: All.
dicej requested review of this revision.
Herald added subscribers: llvm-commits, cfe-commits, MaskRay, aheejin.
Herald added projects: clang, LLVM.

This adds support for Emscripten-style shared libraries [1] to the `wasm32-wasi`
target.  Previously, only static linking was supported, and the `-shared` and
`-fPIC` flags were simply ignored.  Now both flags are honored.

Since WASI runtimes do not necessarily include JavaScript support, we cannot
rely on the JS-based Emscripten linker to link shared libraries.  Instead, we
link them using the Component Model proposal [2].

We have prototyped shared library support in `wasi-sdk` [3] and put together a
demo [4] which uses a patched version of `wit-component` [5] to link libraries
using the Component Model.  We plan to submit the required changes upstream to
the respective repositories in the next week or two.

[1] https://github.com/WebAssembly/tool-conventions/blob/main/DynamicLinking.md
[2] https://github.com/WebAssembly/component-model/blob/main/design/mvp/examples/SharedEverythingDynamicLinking.md
[3] https://github.com/dicej/wasi-sdk/tree/dynamic-linking
[4] https://github.com/dicej/component-linking-demo
[5] https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wit-component

Signed-off-by: Joel Dice <joel.dice at fermyon.com>


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D153293

Files:
  clang/docs/ReleaseNotes.rst
  clang/lib/Driver/ToolChains/WebAssembly.cpp
  clang/test/Driver/wasm-toolchain.c
  llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
  llvm/utils/lit/lit/llvm/config.py

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D153293.532688.patch
Type: text/x-patch
Size: 4281 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230619/b69d91fd/attachment.bin>


More information about the llvm-commits mailing list