forked from llvm/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 104
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[clang][WebAssembly] Support wasm32-wasi shared libraries
This adds support for Emscripten-style shared libraries [1] to non-emscripten targets, such as `wasm32-wasi`. 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 <[email protected]> Reviewed By: sbc100 Differential Revision: https://reviews.llvm.org/D153293 Signed-off-by: Joel Dice <[email protected]>
- Loading branch information
Showing
4 changed files
with
36 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters