Adjust TLS in wasip3 with threads - #867
Open
alexcrichton wants to merge 1 commit into
Open
Conversation
This is a refinement of the previous implementation in WebAssembly#858 and is intended to be the dual of bytecodealliance/wasm-tools#2596 for wasi-libc. Notably the details of what exactly is exported from each shared object is now encapsulated and local to wasi-libc as opposed to needing toolchain integration which removes the need for changes to Clang or LLD. The main change here is that the previous inline array of `__wasilibc_library_tls_info`, which was constructed by `wasm-tools component link`, is now defined by wasi-libc itself. The representation here has changed slightly since TLS size/align isn't `const`-knowable at this time (now it's a function pointer to learn that), and the dynamic linker will now arrange for an array of these structures to be visible to libc and use. This extra level of indirection means that each shared object exports its own information and those are all woven into a single list for wasi-libc to read.
Collaborator
Author
|
This'll fail until bytecodealliance/wasm-tools#2596 is landed/published as a heads up |
dicej
approved these changes
Aug 11, 2026
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a refinement of the previous implementation in #858 and is intended to be the dual of bytecodealliance/wasm-tools#2596 for wasi-libc. Notably the details of what exactly is exported from each shared object is now encapsulated and local to wasi-libc as opposed to needing toolchain integration which removes the need for changes to Clang or LLD. The main change here is that the previous inline array of
__wasilibc_library_tls_info, which was constructed bywasm-tools component link, is now defined by wasi-libc itself. The representation here has changed slightly since TLS size/align isn'tconst-knowable at this time (now it's a function pointer to learn that), and the dynamic linker will now arrange for an array of these structures to be visible to libc and use. This extra level of indirection means that each shared object exports its own information and those are all woven into a single list for wasi-libc to read.