# AUDIT-040 canary patch — extends audit-030 TrapLogLR helper to log # r3..r10 + r28..r31 plus a 32-byte memdump from r4 and r5 (the two source # pointers passed into sub_8244FC90). Total +56 LOC across 4 files. Applied # 2026-05-09 then reverted at session close; `git status` clean afterwards. # # Files changed: # src/xenia/cpu/backend/x64/x64_emitter.cc (+43) TrapLogLR + dump_bytes # src/xenia/cpu/cpu_flags.cc (+5) log_lr_on_pc cvar # src/xenia/cpu/cpu_flags.h (+2) DECLARE_uint64 # src/xenia/cpu/ppc/ppc_hir_builder.cc (+6) Trap(100) emit on PC match # # Build: cd build/ && ninja -f build-Debug.ninja xenia_canary # # The TrapLogLR helper now reads: # ctx->r[3..10], ctx->r[28..31], ctx->lr # thread_state->memory()->TranslateVirtual(r4) -> 32 bytes # thread_state->memory()->TranslateVirtual(r5) -> 32 bytes # # Output format: # TRACE-PC-LR pc=8244FC90 lr=82450440 r3=BC65CD00 r4=701CF580 ... r31=701CF3C0 # TRACE-PC-LR r4* addr=701CF580 bytes=F800008C 00000000 ... (8 dwords hex) # TRACE-PC-LR r5* addr=BC79C960 bytes=820B57D0 FFFFFFFF ... (8 dwords hex) # # Reusable for other ctor-input investigations: change --log_lr_on_pc value; # reinterpret r4*/r5* dumps based on the target function's argument convention.