Skip to content

fix(libSceSystemService): declare the PsmKit local process exports - #6939

Open
milescoviello wants to merge 1 commit into
boykopovar:mainfrom
milescoviello:fix/systemservice-psmkit-exports
Open

milescoviello wants to merge 1 commit into
boykopovar:mainfrom
milescoviello:fix/systemservice-psmkit-exports

Conversation

@milescoviello

Copy link
Copy Markdown
Contributor

What

Forever Launcher (PPSA99030, bizkut/ps5-forever, catalog 01.000.006) imports sceSystemServiceAddLocalProcessForPsmKit (cltshBrDLC0) and sceSystemServiceKillLocalProcessForPsmKit (7cTc7seJLfQ) from libSceSystemService. Neither is exported. On main with #6915 (physhm_open, physhm_unlink) and #6028 (sysarch) merged, the title still stops at load:

./app.elf: symbol lookup error: ./app.elf: undefined symbol: 7cTc7seJLfQ

On that stack, nm lists three imports that no library exports: these two and K1A7IJp5xYc (sceKeyboardSetProcessPrivilege), which #6787 adds.

The launcher uses these calls to start Wine as a local process and to stop it (ps5/probes/psmkit-wine/runtime-parent.c). AnyPS5 runs one process and starts no other, so both throw (NotImplemented_nid_no_patch) without reading their arguments, as sceSystemServiceLaunchApp does. The parameters follow the title's own firmware 5.50 probes. ps5/probes/localproc/psmkit-parent.c has a path, a null-terminated argv and a 0x90-byte parameter block, and the kill takes the int32_t handle the add returns (ps5/probes/psmkit-wine/runtime-parent.c). The console's results are unknown, and the entry under Unknown function info in docs/dev/debt/libSceSystemService.md says so.

Tested

Ubuntu 24.04, GCC 13.3, Release.

Not checked: Windows, macOS.

Checklist

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Progress report (3e83446 → f69e6c0)

📉 System libraries: 89.6% (-0.05%, +2 declared functions)

🆕 2 declared as stubs
Library Name
libSceSystemService sceSystemServiceAddLocalProcessForPsmKit
libSceSystemService sceSystemServiceKillLocalProcessForPsmKit

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

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.

Pull request Shared files not compared
PR 6044 core/libs/tests/GuestSystemService.cpp
PR 7201 core/libs/prx/libSceSystemService/Export.cpp
PR 7658 core/libs/prx/libSceSystemService/Export.cpp

Forever Launcher (PPSA99030) imports sceSystemServiceAddLocalProcessForPsmKit
and sceSystemServiceKillLocalProcessForPsmKit and stops at load without
them. AnyPS5 runs one process and starts no other, so both throw without
reading their arguments. The parameters follow the title's own firmware
probes (path, argv and a 0x90-byte parameter block; the kill takes the
returned handle), and the unknown results are recorded as technical debt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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.

1 participant