sharpemu/tests/SharpEmu.Libs.Tests/Loader
kuba abe224732f [Loader] Guard frame-pointer spill slots that live in the guest red zone
Host signal frames are pushed onto the guest stack, so GuestRedZonePatcher
protects functions that keep live data in the 128-byte red zone. It only
recognized RSP-relative accesses. Clang spills just as often through the frame
pointer: after 'push rbp; mov rbp, rsp' and N callee-saved pushes, RSP sits at
RBP-N and every [rbp-d] with d > N is below RSP. A fault taken there (lazy
commit, write tracking) overwrote those slots, which showed up as garbage
pointers on random threads in Poppy Playtime's level load.

Derive RBP-to-RSP from the standard prologue (leading pushes and the first
'sub rsp, imm') and treat [rbp-d] in (delta, delta + 128] as red-zone use. An
under-estimated delta only widens the guarded window. In Poppy's eboot this
protects 787 functions instead of 485.
2026-09-29 22:47:32 +02:00
..
GuestRedZoneEnclosingSpanTests.cs Fix for DS,Little Nightmares, Little Nightmares III and Astro Bot shader (#913) 2026-09-27 20:43:07 +03:00
GuestRedZonePatcherTests.cs [Loader] Guard frame-pointer spill slots that live in the guest red zone 2026-09-29 22:47:32 +02:00
RosettaVectorStorePatchTests.cs Alpha Rebuild Progress (#887) 2026-09-20 04:09:27 +03:00
SelfLoaderTests.cs Alpha Rebuild Progress (#887) 2026-09-20 04:09:27 +03:00
TlsInitializationTests.cs Alpha Rebuild Progress (#887) 2026-09-20 04:09:27 +03:00