Pin v0.44 (sha256 4d06eab7...). Its crt/ and prospero-nid are identical to v0.43, so the vendored sdk-crt (+ ps5upload.patch) and the portable prospero-nid stay as they are; the helper, installer and elfldr build to the same code (only the build-id differs). v0.44 adds LLVM 23 to the candidate list, so the Makefile comment and Homebrew fallbacks move too. scripts/update-ps5-sdk.sh (make update-sdk): finds the latest release (or --tag), checks the zip, rewrites the pin, re-vendors prospero-nid and crt only when upstream changed them (stops if our crt patch no longer applies), moves the "SDK vX.Y" doc mentions and installs with install-ps5-sdk.sh, keeping the old SDK as a backup. --check only reports. The installer names its backups after the release they hold. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ub1mez9eaVtTF8pMEFXvA9
sdk-crt
The startup code (crt/) of ps5-payload-sdk v0.43
(identical in v0.44),
GPLv3 (see LICENSE), built by payload/sdk-crt.mk and linked into the helper, the installer
daemon and the patched elfldr in place of the SDK's own crt1.o.
One change, in ps5upload.patch: __kernel_init no longer returns -ENOSYS when the DMAP base
or the IOMMU softc search (added upstream in 4b86c73a) comes up empty. That return stopped every
payload before main() on FW 5.50, where 5.x builds (SDK v0.42, without the searches) ran.
Only two fallbacks use those values, and both refuse without them: the IOMMU write helpers
(which check for a missing softc themselves) and the physical-address path of
kernel_proc_copyin/kernel_proc_copyout (a guard added in kernel_procio.c).
scripts/update-ps5-sdk.sh does this check on every SDK bump: it re-vendors crt/ and
re-applies the patch when upstream changed it, and stops if the patch no longer applies.
By hand: copy the new release's crt/*.{c,h,S} here, re-apply ps5upload.patch, and check
that the exported symbols still match the SDK's target/lib/crt1.o (llvm-nm).