Repository navigation
fix(libs): return what the firmware returns from 29 more calls it does not implement - #9173
Conversation
Progress report (4017310 → f2f5267)📈 System libraries: 49.84% (+0.23%, +29 implemented functions) ✅ 29 implemented
⚪ 12 behaviourally empty (constant return or throw)
Changed libraries (implemented exports)
|
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
MarcZX10
left a comment
There was a problem hiding this comment.
Review
The implementations are small and consistent with the stated firmware behavior. I did not find a source-level defect in the constant returns. I’m requesting changes because the submitted test counts do not exercise these new exports, and the firmware evidence is not yet specific enough to verify all 29 values.
Direct regression coverage
I searched core/libs/tests for the 29 export names in this change and found no direct references. The reported 24 library tests passing therefore do not demonstrate that these functions now return the claimed values.
Please add focused assertions that call each export and check its return constant (grouping them by library is fine). This will also ensure the changed definitions are linked and callable. Please rerun those tests after updating the branch.
Firmware evidence
The description identifies firmware 12.00 and says these bodies were read from disassembly, but the table only provides the inferred instruction shape and result. Please add concise verification context for each group (module and function offsets or an attached disassembly excerpt) so reviewers can check the 29 constant-return claims. The debt notes should continue to say these behaviors have not been measured on console.
Base and overlap
The head is 104 commits behind current main; the three-way merge check is clean, but CONTRIBUTING asks branches to stay up to date. Please rebase/update before merge and rerun the focused library tests.
The overlap report lists #6039 in docs/dev/debt/libSceSsl.md. I checked its hunk: it edits a separate entry, so I found no dependency or merge-order issue there. The other overlap PRs you checked are likewise described as separate hunks.
Checks
git diff --checkagainst currentmain: passed.- Current conventions check: zero errors (five debt-length warnings in touched library debt files); hosted conventions, eligibility, labels, and report jobs passed.
- Hosted Linux, Windows, register-context, relinker, ASan relinker, and write-watch jobs were skipped.
- I did not build or run the library tests locally in this session. The 24 passing results in the description are author-reported and were run on the earlier base.
The firmware-derived return values are a reasonable implementation direction; direct tests and reviewable source evidence are still needed before approval.
|
Checked these 29 against firmware 13.42 as well: each is the same constant return as in your description, and the code returns those values. AI-assisted: yes (Claude Code) |
|
@MarcZX10 thanks, all three addressed:
|
|
Merged Assisted With AI: Yes But all test done locally on actual hardware |
|
Correction: I mislabelled the firmware. The decrypted modules I read are firmware 13.60, not 12.00 (each module's module-param segment records SDK 13.60). The behaviour described is unchanged; only the version label was wrong. I've updated the description. Assisted With AI: Yes But all test done locally on actual hardware |
Dismissing a stale review: the requested changes were addressed after it (new head) and the merge queue blocks on it. Please request changes again if anything is still open.
…s not implement Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
… test Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nt returns Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
360f184 to
f2f5267
Compare
|
|
@hypermoist Some exports your sweeps measured as fixed returns but left out still throw on
Would you like to take them? If not, could you post the value each one returns, and the firmware you read it on? Then I'll put them in a small PR citing your reading. |
What
These 29 exports were
NotImplementedstubs. In the firmware modules (system/common/lib/<library>.sprx, firmware 13.60, read from disassembly, not measured on a console), each is a single constant return that reads no arguments and makes no IPC call or syscall, so the exports now return the same value. This follows #8303, #8305 and #8307. The names are removed from the pending-declaration lists in each library's debt file.sceCompositorCreateIndirectRenderTargetmeXSAmyPBUE0x6290mov eax, 0x80d40006; ret0x80d40006;sceCompositorDeleteIndirectRenderTargetwCqghwW7vQw0x62a0mov eax, 0x80d40006; ret0x80d40006;sceCompositorSetIndirectCanvasCommand-zpfGY1n49E0x1870xor eax, eax; retsceCompositorSetIndirectCompositionCommandM6wp6+JUSRI0x1850xor eax, eax; retsceCompositorSetIndirectRenderTargetConfigCommandkZ7Xre07w700x1860xor eax, eax; retsceFsErriCtliLxIuu5Xs2A0xf5f0mov eax, 0x8002002d; ret0x8002002d;sceFsErriGetState-1whCDzGK1E0x181c0mov eax, 0x8002002d; ret0x8002002d;sceHttpCacheDebugSetUrlFME0+DPciaU0x3a5e0xor eax, eax; retscePlayReadyMemGetStatsiktpef6dl3k0x1db0mov eax, 0x80004001; ret0x80004001;sceSdmaInitializeXc+bwbBPK000x26b0xor eax, eax; retsceSdmaFinalizemNFbFFiI-7A0x2960xor eax, eax; retsceSdmaQueryWorkingBufferSize1FH-82oV3PY0xd0mov eax, 0x8000; ret0x8000;sceSdmaFlushAllWithEventuHobIZSa1dI0x2ab0mov eax, 0x809900c9; ret0x809900c9;sceSdmaWaitForEventrzfOSPn1w7k0x2ac0mov eax, 0x809900c9; ret0x809900c9;CRYPTO_uninitAsymmetricKeycW7VCIMCh9A0x38d0xor eax, eax; retVLONG_freeVlongQueuewcVuyTUr5ys0x38e0xor eax, eax; retsceVisionManagerOpenwzr6GTOo9Dw0x162b0mov eax, 0x80e70004; ret0x80e70004;sceVisionManagerCloseP9+90HStC440x162c0mov eax, 0x80e70004; ret0x80e70004;sceVisionManagerRequestFindUserF8aomqtpD980x16600mov eax, 0x80e70004; ret0x80e70004;sceVisionManagerRequestFindUserInRegioniBbwD8vxSEk0x16620mov eax, 0x80e70004; ret0x80e70004;sceVisionManagerRequestFindUserWithoutIdentifyCZgPsIdPqSk0x165c0mov eax, 0x80e70004; ret0x80e70004;sceVisionManagerRequestRegisterUserInRegion-RJmkkuBhaY0x165e0mov eax, 0x80e70004; ret0x80e70004;sceVisionManagerGetResultOfFindUserNuhv71YjC+g0x16610mov eax, 0x80e70004; ret0x80e70004;sceVisionManagerGetResultOfFindUserInRegionGop3lku7E+Q0x16630mov eax, 0x80e70004; ret0x80e70004;sceVisionManagerGetResultOfFindUserWithoutIdentifyES+vLK-z0+U0x165d0mov eax, 0x80e70004; ret0x80e70004;sceVisionManagerGetResultOfRegisterUserInRegionGYamKe-3LbY0x165f0mov eax, 0x80e70004; ret0x80e70004;sceVisionManagerLoadSettingsl9zev-ybPNs0x178a0xor eax, eax; retsceDebugGetProcessEventCntlFlagZi+rAm6czUg0x4af0mov eax, 1; retsceDebugSetProcessEventCntlFlag--I4Ml0ADxQ0x4b00mov eax, 1; retLeft out:
sceCompositorGetDummyAddressandsceCompositorGetDummySize: the first returns a fixed address in the console's address space.sceSaveDataDebugGetThreadId,sceSaveDataGetClientThreadPriority,sceSaveDataGetSavePoint): fix(savedata): build libSceSaveData and libSceSaveDataDialog from the native sources #7780 rewrites that file.Tested
Linux (CachyOS, GCC), merged with current
main: the eight libraries build. The newguest_firmware_constant_returnstest (core/libs/tests/GuestFirmwareConstantReturns.cpp) calls all 29 exports and checks each exact return; it passes, as do the 10 existing tests matching these libraries' names.check_conventionspasses.pr_overlapcould not compare #6039, #8541, #8951 and #9137; I checked their hunks by hand, and none touches these functions or the debt lines edited here. No title was run.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code
https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK