Homebrew built with the ps5-payload-dev SDK links LLVM libunwind statically but imports _Unwind_Backtrace from libSceLibcInternal. Its trace callback then reads each frame with its own _Unwind_GetIP, which treats the context as a libunwind cursor and calls through the virtual table in its first word. AnyPS5's context started with the saved RAX, so the call jumped to a register value and the title crashed on its error path (vkQuake, PPSA99010, without its game data). The context now starts with a table in AbstractUnwindCursor's slot order that answers register reads and writes, validFloatReg and isSignalFrame; other slots throw. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EvDbpwUPTa78oCAJqe7m9K |
||
|---|---|---|
| .. | ||
| Runtime.hpp | ||
| Unwind.hpp | ||