mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 00:22:57 -05:00
__cxa_call_unexpected takes the in-flight exception's unwind header and never returns, as in libcxxabi. No std::set_unexpected is exported and the exception header's unexpected handler is never set, so the handler is always the default one, which calls std::terminate. It therefore forwards to libc's __cxa_call_terminate, which begins the catch and runs the current terminate handler; a null header terminates in libc's __cxa_begin_catch. libcxxabi's std::terminate would instead run the terminate handler saved in the exception header at throw time; the two differ only if std::set_terminate was called in between, which the debt entry records. The test shares the forked-child helper of the std::_Pad test, which now takes the terminate handler to install. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>