Tags: WebAssembly/wasi-libc
Tags
Test with LLVM 22 in CI, fix a setjmp/longjmp issue (#772) This commit adds a new CI builder for LLVM 22, distinct from preexisting builders using LLVM 20. This notably exposes a bug where setjmp/longjmp needed a fix because the method of definition of `__c_setjmp`, the tag used, changed in LLVM 22. > **Note**: this is temporarily built on #770 and #771
Test with LLVM 22 in CI, fix a setjmp/longjmp issue (#772) This commit adds a new CI builder for LLVM 22, distinct from preexisting builders using LLVM 20. This notably exposes a bug where setjmp/longjmp needed a fix because the method of definition of `__c_setjmp`, the tag used, changed in LLVM 22. > **Note**: this is temporarily built on #770 and #771
wasip2: Fix `poll`'s behavior on invalid fds (#680) Skip negative fds, but fail on invalid fds.
poll_wasip1: ignore entries with no events requested (#630) OpenSSH allocates a pollfd structure for all of its channels, but doesn't request events for all of them all the time. If it wants to check a subset, it clears events, but keeps nfds at the max. This causes the wasip1 implementation to incorrectly abort as it assumes that if POLLRDNORM & POLLWRNORM didn't match, it must be due to requesting unsupported events, and then it errors out with ENOSYS. Simply ignore the case where no events are requested and it all works fine.
Refactor stub pthread library and enable unconditionally (#602) This PR changes the layout of the stub pthread library to match that of libc-top-half: splits it into (mostly) one file per function, and ensures the same API is exposed from both libraries, adding stub functions as necessary. This PR also removes `-lwasi-emulated-pthread` as well as `-D_WASI_EMULATED_PTHREAD` and enables this functionality unconditionally, seeing as this is necessary for building libc++ with threading enabled. It adds a flag `-D_WASI_STRICT_PTHREAD` that causes thread creation functions (`pthread_create`, `pthread_detach`, `pthread_join`) to be defined as a macro causing a compile error, which can be used to locate the parts of a codebase requiring changes for the single thread model. Specifically, after this commit, the two targets `wasm32-wasip1` and `wasm32-wasip1-threads` differ as follows (cleaned up for clarity): ```diff --- expected/wasm32-wasip1/defined-symbols.txt +++ expected/wasm32-wasip1-threads/defined-symbols.txt +flockfile +ftrylockfile +funlockfile +sem_destroy +sem_getvalue +sem_init +sem_post +sem_timedwait +sem_trywait +sem_wait +wasi_thread_start ``` ```diff --- expected/wasm32-wasip1/predefined-macros.txt +++ expected/wasm32-wasip1-threads/predefined-macros.txt +#define _REENTRANT 1 +#define SEM_NSEMS_MAX 256 +#define SEM_VALUE_MAX 0x7fffffff +#define __wasm_atomics__ 1 +#define __wasm_bulk_memory__ 1 ```
Refactor stub pthread library and enable unconditionally (#602) This PR changes the layout of the stub pthread library to match that of libc-top-half: splits it into (mostly) one file per function, and ensures the same API is exposed from both libraries, adding stub functions as necessary. This PR also removes `-lwasi-emulated-pthread` as well as `-D_WASI_EMULATED_PTHREAD` and enables this functionality unconditionally, seeing as this is necessary for building libc++ with threading enabled. It adds a flag `-D_WASI_STRICT_PTHREAD` that causes thread creation functions (`pthread_create`, `pthread_detach`, `pthread_join`) to be defined as a macro causing a compile error, which can be used to locate the parts of a codebase requiring changes for the single thread model. Specifically, after this commit, the two targets `wasm32-wasip1` and `wasm32-wasip1-threads` differ as follows (cleaned up for clarity): ```diff --- expected/wasm32-wasip1/defined-symbols.txt +++ expected/wasm32-wasip1-threads/defined-symbols.txt +flockfile +ftrylockfile +funlockfile +sem_destroy +sem_getvalue +sem_init +sem_post +sem_timedwait +sem_trywait +sem_wait +wasi_thread_start ``` ```diff --- expected/wasm32-wasip1/predefined-macros.txt +++ expected/wasm32-wasip1-threads/predefined-macros.txt +#define _REENTRANT 1 +#define SEM_NSEMS_MAX 256 +#define SEM_VALUE_MAX 0x7fffffff +#define __wasm_atomics__ 1 +#define __wasm_bulk_memory__ 1 ```
Adjust Makefile for LLVM trunk (20) as of 2024-12-02 (#556) llvm/llvm-project@c3536b2
Use the correct compiler-rt (#517) eg. when a user specifies non-default -resource-dir. cf. WebAssembly/wasi-sdk#446
iconv/wctomb: fix memory corruption related to CURRENT_UTF8 implement… …ation (#511)
PreviousNext