A title's own libc.prx implements __cxa_thread_atexit and the destructor pass of exit() through _sceLibcInternalThreadAtexit and _sceLibcInternalThreadDtors. Its __cxa_finalize calls _sceLibcInternalForceTlsDestructor. Destructors are kept per thread and run newest first, including those registered while they run, as FreeBSD's __cxa_thread_call_dtors does. A null destructor or one outside every loaded image throws instead of being skipped. The first registration installs the pass as the libkernel thread exit hook, so it runs on every guest thread before the thread can be joined. _sceLibcInternalForceTlsDestructor throws. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| CMakeLists.txt | ||
| Export.cpp | ||