3.9 KiB
libSceIcu technical debt
Unknown function info
- ICU export availability across firmware versions remains unproven. The PS5 3.20 inventory includes the implemented escape, invariant-character and version helpers. BunnyFl’s firmware 13.42 report records
u_getVersionreturning78.1.0.0under an emulator, but neither escape function is in the checked nativesystem_ex/common_ex/lib/libSceIcu.sprxexport table. Only 104 of the 661 inventory NIDs appear among that module’s 299 exports. The exports for compatibility with older firmware are retained; availability and routing across firmware versions remain unproven.
Functional
-
C string helpers have no console ABI or behavior verification. Their names/NIDs are in the PS5 3.20 inventory; signatures and behavior follow ICU 78.1's cstring.cpp, unchanged since 65.1 apart from casts. Formatting accepts radices 2–16; null buffers or other radices throw an invalid-argument exception, whereas ICU dereferences the buffer and only asserts the radix. Signed minima and outputs exceeding ICU's 30-byte temporary use unsigned arithmetic and caller storage without reproducing upstream undefined behavior. Parsing uses guest LP64
strtouland keeps the low 32 bits; a null source throws. Cross-firmware availability, native invalid-input behavior and the undefined upstream cases remain unverified. -
Escape decoding has no behavior or ABI verification on console hardware. It follows ICU 78.1's ustring.cpp, including rejection of eight-digit braced hexadecimal escapes although its public header advertises up to eight digits. Null source or offset pointers, null callbacks with an in-range offset, negative capacity with a nonnull destination and source lengths exceeding
INT32_MAXthrow. Null-destination preflight ignores capacity. Closes when: compared with the console, including callback ABI, byte conversion, capacity limits and braced hexadecimal parsing. -
Invariant character and version helpers are unverified on a console.
u_charsToUChars,u_UCharsToChars,u_versionFromString,u_versionFromUStringandu_versionToStringfollow ICU 78.1 uinvchar.cpp and putil.cpp, unchanged since 65.1. Firmware 13.42 reports ICU 78.1 and exports none of them (#11013); the 3.20 table has all five. Version parts use the gueststrtoul, truncated to eight bits;u_versionToStringkeeps ICU's dropped zero tens digit (105 becomes15). A null buffer with a positive conversion length throws; ICU dereferences it. Closes when: compared with the console.
Known export names; ABI prototypes unverified
- The 107
sceIcuUnknown_*_nid_no_patchexports in Export.cpp are present in the PS5 3.20 export inventory from PS5-3.20_Libs. Their prototypes and behavior are unverified. Each uses the no-parameter import-resolution convention and throws throughNotImplemented_nid_no_patch; these declarations make no ABI or behavior claim.