A licence audit found that no published ZIP carries the licence texts its parts require, and that three release tags name commits older than the ones built. - tooling/notices/components.json lists every part of the title, its licence, its licence texts and where its source is. - tools/stage-notices.py (run by tools/build-title.sh before the manifest) writes licenses/ into the title folder, tying every executable to its source revision; tools/check-notices.py checks it in the integration gate. - tools/source-bundle.py archives each part's source at that revision. - LICENSE (GPLv3), docs/RELEASING.md, docs/releases/SOURCE_CORRESPONDENCE.md, README licence and trademark sections, docs/RPCS3_PORT.md licence facts, runtime/README.md (what libc.prx contains, as verified). Evidence: stage-notices on a copy of the current 16-core build staged 28 parts, every core equal to its build report; check-notices passes, --release fails on uncommitted source; source-bundle built 10 archives whose sums verify; make test-unit 83 OK; lint-shell PASS; libc.prx rebuilt from committed files is byte-identical to every release's (e6ff45d1...). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1.9 KiB
The generated runtime module (libc.prx)
sce_module/libc.prx is the module a title carries where the console's loader
expects a C library companion. It is generated, not copied: make libc (or
tools/rebuild-libc.sh) builds tooling/native/libc_builder.cpp and runs it on the
two manifests in tooling/native/runtime/, then signs the result as a fake SELF.
The code is Copyright (C) 2026 BlackBearReloaded (ps5-native-app-boilerplate),
GPL-3.0-or-later.
What the module contains:
- a few dozen bytes of machine code written by the builder: an initializer that hands
the title's
malloc/free/posix_memalignto the kernel's heap hook and registers three thread callbacks, and functions that return zero; - loader metadata: the NIDs, ELF bindings, types and sizes of the symbols the
console's libc exports (
api-surface.txt, recorded by observing that module, as its header says), the imports it declares (imports.txt), and a segment layout that matches what the loader accepts.
It contains no instructions or data copied from a console module. That is
established by the generator's source, and by reproduction: on 2026-09-29 the
module rebuilt from this repository's committed files alone was byte-identical to
the one below, which is also the libc.prx in every published PS5_RetroArch release
(v0.1.0-alpha.1 to v0.5.0-alpha.5). The name "clean-room", used for this module
elsewhere, is BlackBearReloaded's description of how it was written; this
repository has no record of that process beyond the source itself.
The expected artifact has SHA-256:
e6ff45d16adf687855cc3b33b0c8a4132b6504360b221e0a34c7e99fb3ba0036
Generate it from the repository root with make libc, then verify it from this
directory with sha256sum -c libc.prx.sha256. The generated file is ignored by
Git; a normal build creates it too. The upstream description of the generator and
its compatibility scope is ps5-native-app-boilerplate's docs/RUNTIME_SHIM.md.