D226 - An eboot requires only the libraries the harness needs; the census probes the rest at run time
Status: decided Date: 2026-09-26
An eboot links only the libraries the harness itself calls and
declares them in DT_NEEDED; EBOOT_LIBS fails
the build if it would require more. The census
(900-surface) keeps its symbol names and, in an eboot,
resolves each library at run time through
sceKernelLoadStartModule and each symbol through
sceKernelDlsym, announcing before each and consulting a
control (D015) so a loader without name resolution is told from an
absent library. Libraries in data/hardware/crashers.txt are
not opened. module and payload still link the
full census.
Why: a system loader acts on DT_NEEDED
before any guest code runs, so a library a title is not given kills the
console with nothing on record - the crash cannot be guarded, because
the program does not exist yet. Requiring a library and probing it are
opposite claims. Resolving at run time turns an unloadable library into
a res line, which is more than linking ever told.
Rejected: linking the whole census into the eboot - a title is given far fewer libraries than the census names, and the console dies in the loader.