Skip to content

feat(prx): declare pending exports of seven dummy-only libraries from ps5rs - #10697

Merged
oneandonlydean merged 21 commits into
boykopovar:mainfrom
MarcZX10:marc/inventory-ps5rs
Nov 2, 2026
Merged

oneandonlydean merged 21 commits into
boykopovar:mainfrom
MarcZX10:marc/inventory-ps5rs

Conversation

@MarcZX10

Copy link
Copy Markdown
Contributor

What

Replaces the APS5_DUMMY_FUN placeholder in seven libraries with their listed PS5 exports, generated with tools/stubgen.py: libSceDbg 29, libSceDeci5 7, libSceGpuTrace 8, libSceMat 52, libScePerf 84, libSceRazorCpu_debug 3, libSceWorkspace 18 (201 in total). The source is the per-library list in claimore22/ps5rs (data/stubs/by_library/<lib>_nosubmission.txt, commit 5f252a658ff470bcb2b6cd15205fd8ca64ae4477). That repository does not document where the lists come from, so each debt file says the list may be incomplete or inexact. Every name was kept only if tools/nid_names.py compute_nid of it equals the listed NID (all 201 did). Each declaration is no-parameter and throws through NotImplemented_nid_no_patch; NIDs already declared anywhere in core/libs would have been dropped (none were).

Tested

Linux x86-64, Ninja Release: cmake --build <build-dir> --target <lib> built all seven libraries. python3 tools/check_conventions.py --base upstream/main --head HEAD passed; git diff --check upstream/main is clean. Overlap: open PRs searched by library name (no match) and the candidate names and NIDs compared with the file patches of the open declaration PRs #9449, #9470, #9467, #9463, #9485, #9569, #9614, #9422, #9438, #9451, #9623, #9541, #9629, #8951, #9444, #9453, #9462, #9504, #9528, #9511, #9498, #9640, #9686, #9665, #9532 and #10617 (no match). Windows and hardware were not run.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source (not applicable; no third-party code added)
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes

@github-actions

github-actions Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Progress report (e2d457b → 9d6a8af)

📉 System libraries: 51.0% (-0.83%, +201 declared functions)

🆕 201 declared as stubs
Library Name
libSceDbg sceDbgAddExternalTriggerEvent
libSceDbg sceDbgAmprAmmGetErrors
libSceDbg sceDbgAmprAmmGetNumberOfErrors
libSceDbg sceDbgAmprAprGetErrors
libSceDbg sceDbgAmprAprGetNumberOfErrors
libSceDbg sceDbgAssertionHandler
libSceDbg sceDbgBacktraceSelf
libSceDbg sceDbgClearHardwareBreakPoint
libSceDbg sceDbgDeleteExternalTriggerEvent
libSceDbg sceDbgEnableExtraHeapDebugInfo
libSceDbg sceDbgGetCpuGpuFrequencySetting
libSceDbg sceDbgGetDebugSuspendCount
libSceDbg sceDbgGetExecutablePath
libSceDbg sceDbgGetModuleInfo
libSceDbg sceDbgGetModuleList
libSceDbg sceDbgGetReleaseCheckMode
libSceDbg sceDbgGetSystemSwVersion
libSceDbg sceDbgIsDebuggerAttached
libSceDbg sceDbgLoggingHandler
libSceDbg sceDbgMapperVirtualQuery
libSceDbg sceDbgRequireSystemSwVersion
libSceDbg sceDbgSetBreakOnErrorState
libSceDbg sceDbgSetBreakOnWarningState
libSceDbg sceDbgSetHardwareBreakPoint
libSceDbg sceDbgSetMinimumLogLevel
libSceDbg sceDbgUserChannelPrint
libSceDbg sceDbgUserChannelPrintf
libSceDbg sceDbgUserChannelVPrintf
libSceDbg sceDbgVLoggingHandler
libSceDeci5 sceDeci5Close
libSceDeci5 sceDeci5CreateHostProcess
libSceDeci5 sceDeci5CreateHostProcessAndWait
libSceDeci5 sceDeci5GetStatus
libSceDeci5 sceDeci5Open
libSceDeci5 sceDeci5Read
libSceDeci5 sceDeci5Write
libSceGpuTrace sceGpuTraceCancel
libSceGpuTrace sceGpuTraceMonitorTrigger
libSceGpuTrace sceGpuTraceParametersInit
libSceGpuTrace sceGpuTraceParametersSetDuration
libSceGpuTrace sceGpuTraceParametersSetGroup
libSceGpuTrace sceGpuTraceParametersSetMemorySize
libSceGpuTrace sceGpuTraceStart
libSceGpuTrace sceGpuTraceStop
libSceMat sceMatAgcRegisterOwner
libSceMat sceMatAgcRegisterResource
libSceMat sceMatAgcUnregisterAllResourcesForOwner
libSceMat sceMatAgcUnregisterOwnerAndResources
libSceMat sceMatAgcUnregisterResource
libSceMat sceMatAlloc
libSceMat sceMatAllocPhysicalMemory
libSceMat sceMatAllocPoolMemory
libSceMat sceMatBatchMap
libSceMat sceMatCalloc
libSceMat sceMatFree
libSceMat sceMatFreePoolMemory
libSceMat sceMatFreeRange
libSceMat sceMatInitialize
libSceMat sceMatMapDirectMemory
libSceMat sceMatMemoryPoolBatch
libSceMat sceMatMemoryPoolCommit
libSceMat sceMatMemoryPoolDecommit
libSceMat sceMatMemoryPoolExpand
libSceMat sceMatMemoryPoolMove
libSceMat sceMatMemoryPoolReserve
libSceMat sceMatMprotect
libSceMat sceMatMspaceCreate
libSceMat sceMatMspaceDestroy
libSceMat sceMatMtypeprotect
libSceMat sceMatNewFrame
libSceMat sceMatPopMarker
libSceMat sceMatPushMarker
libSceMat sceMatPushMarkerStatic
libSceMat sceMatReallocBegin
libSceMat sceMatReallocEnd
libSceMat sceMatReallocPoolMemory
libSceMat sceMatRegisterGroup
libSceMat sceMatRegisterOwner
libSceMat sceMatRegisterResource
libSceMat sceMatRegisterResourceType
libSceMat sceMatReleasePhysicalMemory
libSceMat sceMatReserveVirtualRange
libSceMat sceMatResizeCommsBuffer
libSceMat sceMatSetPrtAperture
libSceMat sceMatSetThreadInfo
libSceMat sceMatSetUserCallstackCapture
libSceMat sceMatTagAllocation
libSceMat sceMatTagPool
libSceMat sceMatTagVirtualMemory
libSceMat sceMatUninitialize
libSceMat sceMatUnmapMemory
libSceMat sceMatUnregisterAllResourcesForOwner
libSceMat sceMatUnregisterOwnerAndResources
libSceMat sceMatUnregisterResource
libSceMat sceMatUpdateModuleList
libSceMat sceMatWriteBookmark
libScePerf scePerfPmcAperfGetCounter
libScePerf scePerfPmcClose
libScePerf scePerfPmcGetCounter
libScePerf scePerfPmcGetCounterSelf
... 101 more

Changed libraries (implemented exports)

Library Before After Change
libSceDbg No exports 0/29 (0.00%) n/a
libSceDeci5 No exports 0/7 (0.00%) n/a
libSceGpuTrace No exports 0/8 (0.00%) n/a
libSceMat No exports 0/52 (0.00%) n/a
libScePerf No exports 0/84 (0.00%) n/a
libSceRazorCpu_debug No exports 0/3 (0.00%) n/a
libSceWorkspace No exports 0/18 (0.00%) n/a

@oneandonlydean

Copy link
Copy Markdown
Collaborator

@MarcZX10 The repo rule is one declaration per export, in its library header. None of the 201 new exports has one yet, across libSceDbg, libSceDeci5, libSceGpuTrace, libSceMat, libScePerf, libSceRazorCpu_debug and libSceWorkspace (for example sceDbgUserChannelPrint, sceMatMemoryPoolReserve, scePerfTraceIoControllerEnable). Please declare each exactly once in its library's public header (include/Api.hpp, reached from the library's umbrella header), include it from the Export.cpp, and run public_headers and public_headers_compile_*. python3 core/libs/tests/test_public_headers.py --audit-only lists every missing one. Keep the placeholder signatures and the debt entries as they are.

@wachi35676

Copy link
Copy Markdown
Contributor

Windows check of head e91c58850bce merged onto main 90f918fa7 (WinLibs GCC 15.2.0, Release).

  • All 201 new stubs are exported: the APS5_VABI names in the seven Export.cpp files against objdump -p of each unpatched .prx give 29 + 7 + 8 + 52 + 84 + 3 + 18 = 201/201. The NID-patched .prx files build.
  • public_headers fails on this head: expected exactly one header declaration; found 0 for the new exports, starting with sceDbgGetModuleList. It passes on main. That's oneandonlydean's point above: the declarations aren't in the libraries' include/Api.hpp yet.

AI-assisted: yes (Claude Code); results above were run on this machine.

Api.hpp declares each export once, with the placeholder signature its stub has, and the umbrella header and Export.cpp include it.
Api.hpp declares each export once, with the placeholder signature its stub has, and the umbrella header and Export.cpp include it.
…eader

Api.hpp declares each export once, with the placeholder signature its stub has, and the umbrella header and Export.cpp include it.
Api.hpp declares each export once, with the placeholder signature its stub has, and the umbrella header and Export.cpp include it.
Api.hpp declares each export once, with the placeholder signature its stub has, and the umbrella header and Export.cpp include it.
…blic header

Api.hpp declares each export once, with the placeholder signature its stub has, and the umbrella header and Export.cpp include it.
…header

Api.hpp declares each export once, with the placeholder signature its stub has, and the umbrella header and Export.cpp include it.
@MarcZX10
MarcZX10 force-pushed the marc/inventory-ps5rs branch from e91c588 to 9d6a8af Compare October 27, 2026 01:14
@MarcZX10

Copy link
Copy Markdown
Contributor Author

Done in 9d6a8af868 (rebased onto current main, then one commit per library): each of libSceDbg, libSceDeci5, libSceGpuTrace, libSceMat, libScePerf, libSceRazorCpu_debug and libSceWorkspace has an include/Api.hpp that declares every export of this PR exactly once (29 + 7 + 8 + 52 + 84 + 3 + 18 = 201), keeping the placeholder (void) signatures, reached from the library's umbrella header and included by its Export.cpp. The debt entries are unchanged.

test_public_headers.py --audit-only now passes (368 libraries, 12569 exports), all 64 public_headers_compile_* batches pass, tools/check_conventions.py --base upstream/main passes, and the changed Export.cpp files pass a syntax check.

@oneandonlydean
oneandonlydean merged commit 3f364a0 into boykopovar:main Nov 2, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants