mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-23 00:53:02 -05:00
AnyPS5 resolves a title's imports by NID, so a title that imports a system function that no AnyPS5 library provides fails to load with an unresolved import. This declares 222 such exports across 11 PS5 system libraries that AnyPS5 implements but does not provide. Each declaration calls NotImplemented_nid_no_patch and returns 0; none of them implements the function. A declaration with a credible prototype uses it and cites the source with a pinned commit; the rest are declared without parameters, which resolves the import without making an ABI claim. The technical-debt files record the limitation per library. The list is the intersection of the export table of the console's library (function symbols only), the pinned aerolib names and the functions not yet defined anywhere in the repo. Every name recomputes to its NID with tools/nid_names.py. libSceAudio3d and libSceVoice are left out because #8331 declares them.
4.2 KiB
4.2 KiB
libScePosixForWebKit technical debt
Unknown function info
- gethostbyname (libScePosixForWebKit) - numeric IPv4 forms, trailing whitespace and 64-bit accumulation follow FreeBSD 11.4 inet_aton; clearing the resolver error on numeric success follows fakeaddr. Exact PS5 behavior is unverified; hostname lookup still uses the host resolver
- __wrap_access, __wrap_clock_gettime, __wrap_fchown, __wrap_getcwd, __wrap_getenv, __wrap_link, __wrap_lstat, __wrap_mmap, __wrap_readlink, __wrap_statvfs, __wrap_symlink, clock_gettime_np, getenv_np, gethostbyname_r, mmap_np, msetname, pthread_setschedparam_np, setenv_np, sysinfo (libScePosixForWebKit) - names and NIDs are present in the PS5 3.20 export inventory and the verified NID name database, but no credible prototypes were found. They are declared without parameters solely to resolve known imports; this is not an ABI claim and callers must not call them until signatures are verified.
Functional
- mkstemp and isatty (libScePosixForWebKit) follow FreeBSD's temporary-file API and terminal check, without console verification.
mkstempreplaces all trailingXcharacters, accepts a fixed name, and creates files through the guest path resolver with exclusive read/write access and mode 0600. Windows file permissions follow the existing kernel file implementation.isattytests Windows console handles rather than all character devices; files, pipes and guest sockets returnENOTTY, closed descriptors returnEBADF. - arc4random (libScePosixForWebKit) returns four bytes of host OS entropy (
getentropy,rand_son Windows), asarc4random_bufdoes, uniform over the 32-bit range like FreeBSD 11.4's RC4 keystream in arc4random.c. The console's generator and its reseeding are unknown;arc4random_uniform,arc4random_stirandarc4random_addrandomare not in the module's export set and are absent - fnmatch (libScePosixForWebKit) follows FreeBSD 11 fnmatch.c in the C locale: each byte is one character,
FNM_CASEFOLDfolds ASCII letters only, and bracket ranges compare byte values.[:class:]names are not character classes: as in FreeBSD 11 through 14,[[:digit:]]is the set of[,:,d,i,g,tfollowed by a literal](classes were added tofnmatch.cafter 14). Multibyte characters and locale collation are not modelled. A null pattern or string throws - getservbyname (libScePosixForWebKit) searches a built-in copy of 37 lines of FreeBSD 11.4's etc/services (ftp-data, ftp, ssh, telnet, smtp, domain, tftp, http, pop3, ntp, imap, https, rtsp, submission, imaps, pop3s with their aliases and protocols, in file order) the way getservent.c searches the file: case-sensitive name or alias, a null protocol takes the first match, the port in network byte order, the result in per-thread storage. The console's
/etc/servicesis unknown, so any other service returns null without settingerrno, as for a name the file lacks.getaddrinfostill resolves service names through the host's service database