Publish Chimera GFX source
phase0-ci / build-and-audit (push) Successful in 2m14s

This commit is contained in:
Chimera GFX release export
2026-09-03 03:27:14 +02:00
commit a6037502d7
828 changed files with 100454 additions and 0 deletions
+169
View File
@@ -0,0 +1,169 @@
# Phase 1.0A build and artifact results
## Result
`RETROARCH_PS5_SOFTWARE_PORT_BUILT`
Both outputs are real RetroArch v1.22.2 frontends built from fork commit
`ca1b45680577befc743e1c92fa40687e1b1745e7`. They link the upstream
frontend/runloop and the static `chimera_smokecore`; the software target also
links RGUI and the reviewed PS5 SDL2 software backends. They were not run.
| Profile | Local output | Size | SHA-256 | Map SHA-256 |
| --- | --- | ---: | --- | --- |
| headless | `build/phase10a/final/retroarch_ps5_headless.elf` | 722392 | `fd595a826f64d18598be0b55e539bb524b33bd469b98f62c958ee50acb544628` | `fb935f7a768c91408a87290f03bad8ed59f5061de75232d5660957eff8ec017f` |
| software/RGUI | `build/phase10a/final/retroarch_ps5_software.elf` | 3318432 | `7beb09592404b5c1fb4161c632171d2901f3715db26e59458998690e8c49f3fc` | `1573a9951fa53bfa1bf304e0038e6f049f859fbfbe92f6a895196dc283c27597` |
The paths are relative to the separate `chimera-retroarch` repository. The
ELFs and maps are ignored local build outputs, not files in `chimera-gfx` and
not transfer, execution or installation packages.
## Builds and reproducibility
Every target comparison used fork commit
`ca1b45680577befc743e1c92fa40687e1b1745e7`, SDK commit
`d2e2e585740362976a39fdd5ccf390f199a7bc37`,
`SOURCE_DATE_EPOCH=1763597828`, `TZ=UTC` and `LC_ALL=C`.
Each repetition invoked `make ... clean` to completion before a separate
`make ... -j4 all`. An earlier concurrent `make clean all` experiment was
rejected as a race and is not evidence.
| Comparison | ELF | Linker map |
| --- | --- | --- |
| headless A versus B | byte-identical | byte-identical |
| software A versus B | byte-identical | byte-identical |
Compiler flags include warnings-as-errors, `-O2`, no debug data, source-prefix
maps, section garbage collection, `--as-needed` and `--build-id=none`. The
cross compiler reports Clang 18.1.8 for `x86_64-sie-ps5`; GNU Make 4.4.1 was
used under WSL2.
The static SDL2 archive is 3120572 bytes with SHA-256
`353065505f54e71fa8f7fff41e090dce52f39fe2aaafab85c4653648fc5f1b56`.
It was built from commit `0baf4ac49382b537ba449901b5b6d0d189bb1fbb`
plus the 5195-byte reviewed overlay whose SHA-256 is
`b547260d8af40ce2360575ab7831c009036c1f35f8b525cad6fd376dc5ca9d6b`.
## Host integration result
The host harness compiled with GCC 15.2.0, `-Werror`, AddressSanitizer and
UndefinedBehaviorSanitizer, with leak detection enabled. It completed:
- 600 frames;
- video FNV-1a-64 `43f920496eb5f435`;
- audio FNV-1a-64 `a48f47dc08c56625`;
- digital and analog input mapping: pass;
- Start-driven libretro shutdown callback: pass;
- init/deinit and ASan/UBSan/leak checks: pass;
- PS5 port structural validator: pass.
This is host evidence for the core and source contracts, not PS5 runtime
evidence.
## ELF audit
Both files are ELF64 little-endian x86-64 System V PIE/DYN binaries, dynamically
linked and not stripped. Neither has an interpreter, build ID, GNU-stack
program header, ELF TLS segment, `.tdata` or `.tbss`. Both have 20 section
headers; `.init_array` and `.fini_array` exist with zero size. The full section
set is `.text`, unwind tables, dynamic symbol/hash/string/relocation tables,
`.data.rel.ro`, `.got`, `.rodata`, empty init/fini arrays, `.dynamic`, `.data`,
`.bss`, `.comment` and static symbol/string tables.
| Field | Headless | Software/RGUI |
| --- | ---: | ---: |
| Entry point | `0x47d10` | `0x1c29c0` |
| Program headers | 4 | 4 |
| First LOAD | offset `0x4000`, size `0x4e570`, RWE | offset `0x4000`, size `0x1c93e0`, RWE |
| Other LOADs | two RW | two RW |
| `.rela.dyn` entries | 610 | 3373 |
| Dynamic symbols | 79 | 220 |
| Full symbols | 1387 | 7256 |
| Defined global symbols | 719 | 2403 |
| Undefined symbols/imports | 73 | 210 |
The executable first LOAD segment is also writable because the pinned SDK
linker script co-locates text that way. This is a material W^X weakness and a
future execution risk; offline build success does not waive it.
The linker maps prove inclusion of `frontend/drivers/platform_ps5.o` and
`cores/chimera_smokecore/chimera_smokecore.o` in both targets. The software
map additionally proves inclusion of `SDL_ps5video.c.o`, `SDL_ps5audio.c.o`
and `SDL_ps5joystick.c.o`, while PS5 keyboard and IME objects are absent from
the final link.
## Dynamic dependencies and imports
Headless `DT_NEEDED`:
- `libkernel_web.sprx`;
- `libSceLibcInternal.sprx`.
Software/RGUI additionally needs:
- `libSceVideoOut.sprx`;
- `libScePad.sprx`;
- `libSceUserService.sprx`;
- `libSceSystemService.sprx`;
- `libSceAudioOut.sprx`.
`--as-needed` removes the SDK's otherwise unconditional SceNet dependency.
There are no undefined socket/network, `dlopen`/`dlsym`, module-loader, GNM,
mount, reboot or console-shutdown symbols. The software target's complete Sce
API import set is AudioOut init/open/output/close; direct-memory and equeue
allocation/wait/release; Pad init/open/read/close plus linked-but-not-required
lightbar/vibration calls; UserService initialization/user queries;
`sceSystemServiceHideSplashScreen`; and VideoOut open/register/flip/event/
close operations. Full ordered import lists are in
`manifests/retroarch/phase-1.0a-artifacts.json`.
Generic RetroArch code keeps write-capable libc imports. Headless includes
`fopen`, `ftruncate`, `fwrite`, `mkdir`, `open`, `remove`, `rename` and
`write`; software also includes `setenv`. The fixed PS5 startup path blocks
configuration reads, supplies no content/config/SRAM/state/core/data path and
compiles the normal shutdown-save paths out. The claim is therefore
control-flow-specific, not global absence of write-capable code.
## Entry, shutdown and static reachability
Source and disassembly agree on this entry sequence:
`_start` clears BSS, performs the inlined SDK `payload_init` sequence
(`__crt_syscall_init`, `__kernel_init`, `__klog_init`, `__isthreaded`,
`__patch_init`, `__rtld_init`), constructs the SDK payload runtime, calls
`main`, which tail-jumps to `rarch_main`, then runs SDK fini/close/destroy and
termination handling. RetroArch selects `frontend_ctx_ps5`, performs a
contentless static-core launch, enters `runloop_iterate`, and reaches the
linked `retro_run`. Start requests the normal RetroArch/core shutdown path;
`retro_deinit` and the PS5 frontend deinit/shutdown callbacks are linked.
The SDK source and linked disassembly also prove that startup is not
kernelwrite-free: `__patch_init` reaches credential-capability/attribute
changes and syscall-bound writes through `kernel_copyin/out`. Those effects
are accepted for this authorized offline link milestone under the existing
ADR boundary, but remain unexecuted and hardware-unproven.
## String and policy audit
No personal absolute host path, credential, PS5/device address, install route,
Payload Manager modification, elfldr modification, lifecycle probe, deploy
client or execution helper was found. The generic RetroArch string pool keeps
`udp://127.0.0.1:`, an RTMP template, overlay “autoload” labels and downloader
localization even though networking, updater, dynamic cores and autoload
routes are compiled out. The software pool also yields byte-pattern false
positives `0.1.2.3` and `4.5.6.7`. SDK RTLD name tables contain module/dlsym
strings, but none is an undefined application import.
Full local audit output for each target contains the file classification,
ELF/readobj dump, complete symbols and undefined symbols, relocations,
disassembly, startup/shutdown slices and strings under
`build/phase10a/audit/{headless,software}` in `chimera-retroarch`.
The Chimera GFX secretscan passed across 658 text files and a clean archive of
all 21 fork-delta files passed separately. A whole-upstream RetroArch scan
also identified the pre-existing BearSSL sample private-key fixtures and
mbedTLS parser/writer source literals; these are official baseline dependency
test/source material, not additions or credentials introduced by this port.
No PS5 connection, request, transfer, execution, installation, autoload or
device write occurred.