[libcxx-commits] [libcxxabi] [libc++abi] Revert gating of `__cxa_thread_atexit` on Linux||Fuchsia (PR #186054)
via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Mar 12 01:27:39 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxxabi
Author: Catherine (whitequark)
<details>
<summary>Changes</summary>
This was done in the commit 3c100d5d548d with the description "Enable -Wmissing-prototypes" which seems incongruent to me.
Since then it's made its way into a release and broke the use of `thread_local` variables with destructors on Wasm/WASI:
```cc
// repro.cc
struct c { ~c() {} };
thread_local c v;
int main() { (void)v; }
```
```console
$ ./wasi-sdk-31.0-x86_64-linux/bin/clang++ repro.cc
wasm-ld: error: /tmp/repro-dd1ad7.o: undefined symbol: __cxa_thread_atexit
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
```
---
Full diff: https://github.com/llvm/llvm-project/pull/186054.diff
1 Files Affected:
- (modified) libcxxabi/src/cxa_thread_atexit.cpp (-2)
``````````diff
diff --git a/libcxxabi/src/cxa_thread_atexit.cpp b/libcxxabi/src/cxa_thread_atexit.cpp
index 402a52c741012..370e76344e89c 100644
--- a/libcxxabi/src/cxa_thread_atexit.cpp
+++ b/libcxxabi/src/cxa_thread_atexit.cpp
@@ -106,7 +106,6 @@ namespace {
#endif // HAVE___CXA_THREAD_ATEXIT_IMPL
-#if defined(__linux__) || defined(__Fuchsia__)
extern "C" {
_LIBCXXABI_FUNC_VIS int __cxa_thread_atexit(Dtor dtor, void* obj, void* dso_symbol) throw() {
@@ -142,5 +141,4 @@ extern "C" {
#endif // HAVE___CXA_THREAD_ATEXIT_IMPL
}
} // extern "C"
-#endif // defined(__linux__) || defined(__Fuchsia__)
} // namespace __cxxabiv1
``````````
</details>
https://github.com/llvm/llvm-project/pull/186054
More information about the libcxx-commits
mailing list