Commit Graph
20967 Commits
Author SHA1 Message Date
JJenkxandClaude Opus 5.5 171d767382 fix(libc): format wide %a, %e, %f and %g with the narrow console rules
The wide printf family still formatted floating-point conversions
through the host, while the libc.prx that titles ship gives swprintf the
same text as snprintf: on 199,948 random formats the copy bundled with
PPSA07923 printed identical narrow and wide output, and this build's
wide output differed from it on 23,893. Use the narrow DecimalFloat and
HexFloat for finite values.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:06:20 -04:00
lakhantheboss 1674e450e9 fix(libSceRegMgr): preserve unsupported zero-length paths 2026-10-26 04:34:43 +05:30
Yunus Shaikh 350d27a531 Merge branch 'feat/npmanager-idmapper-requests' into feat/npmanager-int-getters 2026-10-25 16:00:59 -07:00
hyvvs a0de29a1a6 fix(tools): preserve stubgen single-pass iterable inputs 2026-10-26 00:00:37 +01:00
Yunus Shaikh c65fa57993 Merge main into feat/npmanager-idmapper-requests 2026-10-25 15:59:53 -07:00
orezraeyandClaude Opus 5.5 9797a214b0 fix(libkernel): fail scePthreadCondSignalto for a null or non-waiting thread as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:56:40 -03:00
orezraeyandClaude Opus 5.5 18e69a439f docs(libc): record reallocalign to size 0 as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:50:05 -03:00
Adrià 49d1f9b07e Merge pull request #9726 from KernelPanicNT/fix/npmanager-state-callback-id-error
fix(libSceNpManager): return the module error for an out-of-range state callback id
2026-10-25 23:49:10 +01:00
Adrià e82b11daaf Merge pull request #9550 from Ondra97/codex/feat-freetype-size-objects
feat(libSceFreeType): manage multiple size objects
2026-10-25 23:49:05 +01:00
Adrià 34b882ff19 Merge pull request #9722 from hypermoist/feat/font-graphics-fill-descriptors
feat(libSceFont): build the graphics region and fill descriptors as the console does
2026-10-25 23:49:00 +01:00
orezraeyandClaude Opus 5.5 5a6dc65069 docs(libkernel): record the socket options an accepted socket inherits as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:47:14 -03:00
Evrim Cicek d94c409f1f fix(libkernel): wait for sigtimedwait timeouts with the precise timed wait on Windows 2026-10-26 01:47:03 +03:00
Evrim Cicek 848e67db6b test(libkernel): bound short sigtimedwait timeouts 2026-10-26 01:46:37 +03:00
orezraeyandClaude Opus 5.5 f940729f00 docs(libkernel): record the text location, unwind info, SoC id and model queries as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:44:11 -03:00
Alexandre Figueiredo fcf9754a29 feat(libSceNpCppWebApi): track the TitleCloudStorage and InGameCatalog parameter lifecycles as the module does 2026-10-25 22:40:18 +00:00
Brainiac91 640577c3ec fix(relinker): keep the terminator before a decoded padding suffix
trailing[next] is Padding for an instruction that starts with 00 or CC
even when the rest of its bytes are code, so it is not the same as
padding[next]. The recurrence treated the two as interchangeable and
overwrote the trailing state of a syscall that precedes such an
instruction, which let the fallback extend the mask over it and made
both conversion routes accept the gap. Decide from the trailing state
whether the successor is padding.

The regression covers the table helper plus the executable and guest
module routes; without the correction the executable and module
conversions succeed instead of refusing syscall 9.
2026-10-26 00:37:56 +02:00
Josip Parlov 3cbd5a4be3 fix(libkernel): retire epoll registrations of a socket closed with sceKernelClose 2026-10-25 23:35:48 +01:00
orezraeyandClaude Opus 5.5 ea02895cc0 fix(libkernel): refuse TCP_MAXSEG before a connection and raise it to 216 as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:35:33 -03:00
Alexandre Figueiredo 4d0cd9a53e feat(libSceNpCppWebApi): read size and operator[] of the Sku, Container and PlayerSession vectors from host bodies 2026-10-25 22:33:56 +00:00
Josip Parlov 6cbb4ff7fd fix(libSceNet): read an option of a libkernel socket through sceNetGetsockopt
Human Fall Flat (PPSA02429) opens its sockets with libkernel's socket()
and reads options of them with sceNetGetsockopt. libSceNet only looked
in its own socket table, so each call failed with SCE_NET_ERROR_EBADF.
On the console both calls work on the same kernel sockets, the position
sceNetSetsockopt already takes for MXGP 26 (PPSA30839).

A descriptor libSceNet does not own but libkernel has open as a socket
now goes to libkernel's getsockopt(), which answers the options it
models. Anything else still fails with EBADF. The fallback runs after
g_mutex is released.

guest_sce_net reads SO_SNDBUF and TCP_NODELAY of a libkernel TCP socket
through sceNetGetsockopt, checks that an unknown level fails with
EINVAL, and that the call fails with EBADF once the socket is closed.
2026-10-25 23:28:23 +01:00
Josip Parlov b0ab88d650 fix(libSceNet): register libkernel sockets with sceNetEpollControl
Human Fall Flat (PPSA02429) opens its sockets with libkernel's socket()
and registers them with sceNetEpollControl. libSceNet only looked in its
own socket table, so every ADD and DEL failed with SCE_NET_ERROR_EBADF.
The game retries without pause: on box 2 it made more than 1.6 million
failing calls on 14 descriptors in its first seconds, all of them
libkernel sockets.

sceNetEpollControl now accepts a descriptor libkernel has open as a
socket, as sceNetSocketClose and sceNetSetsockopt already do for MXGP 26
(PPSA30839). sceNetEpollWait looks up the host socket of such a
registration through libkernel after g_mutex is released, because that
lookup asks libSceNet's own table for descriptors libkernel does not
own, and keeps the owner alive across the host poll. libkernel's close()
retires the registrations of the closed socket; a wait drops a
registration whose socket is gone.

guest_sce_net registers a libkernel UDP socket, waits for it to become
readable and then writable, deletes it twice, closes registered sockets
through close() and sceKernelClose and waits again, and checks that a
descriptor that was never open still fails with EBADF.
2026-10-25 23:28:22 +01:00
Alexandre Figueiredo f75ede7a7f docs(debt): close the __isfinitel entry with the bundled libc.prx code 2026-10-25 22:27:46 +00:00
Eduardo Ruiz e859215335 feat(libc): export the error_category members and std::future_error
The libc.prx bundled with PPSA02530 keeps error_code values in the second
dword: the shared error_category::default_error_condition shifts the value
into the high half and the equivalent overloads compare that dword and the
category. Export the type info, the base destructor and the three base
members, so titles that import them resolve to the same code the generic
and system category vtables already use.

future_category returns a static _Future_error_category derived from
_Generic_error_category and named "future". Its message maps 1..4 to
"broken promise", "future already retrieved", "promise already satisfied"
and "no state", and falls back to the generic table. future_error is 0x40
bytes: a GuestLocale::String at 0x8 and the 16-byte error_code at 0x30; its
0x30-byte vtable carries the console's _Doraise slot. _Throw_future_error
allocates that size and throws it with the console type info, and
_Rethrow_future_exception delegates to rethrow_exception.
2026-10-25 23:27:36 +01:00
hyvvs 0134af3f62 fix(tools): preserve verified NID names in generated exports 2026-10-25 23:22:36 +01:00
orezraeyandClaude Opus 5.5 c7392b3fca fix(libkernel): accept EVFILT_TIMER re-adds with a time unit or on a disabled timer as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:21:25 -03:00
lakhantheboss eed35dc5d9 feat(libSceRegMgr): implement core registry access and query interfaces 2026-10-26 03:50:51 +05:30
LeandroLP23andClaude Opus 5.5 a69872e516 fix(agc): hand a recorded submission to the driver before the recorder takes its next call
The recorder released its lock between recording a submission, flip or
suspend point and the driver accepting it. Another thread's delta could
then wait for the accepted work, read its blocks, and record itself
after a call whose work the driver had not accepted yet, so the replay
submitted that work before applying stale bytes over its result. The
entry points now pass the driver call to the recorder, which runs it
under the same lock right after recording the call.

agc_driver_frame_replay_concurrent submits copies from a second thread
during the capture and checks that every memory delta was read after
the submissions recorded before it had completed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 23:20:21 +01:00
Eduardo Ruiz 93b0c59870 feat(libc): export std::setprecision(int)
Dinkumware's setprecision returns the same two-register manipulator as setw: the function pointer in RAX and the precision value in RDX. The function stores the argument at ios_base offset 0x1c, leaving flags and width alone.

Disassembled from the libc.prx bundled in PPSA02530's sce_module, where _ZSt12setprecisioni (NID 1h8hFQghR7w) returns a pointer to 'mov %esi,0x1c(%rdi); ret' and has the same 10-byte export shape as _ZSt4setwi. Negative and zero values are stored unchanged; a null stream throws.
2026-10-25 23:19:11 +01:00
MarcZX10 d824ec2264 test(libSceLibcInternal): let the spawn test's child die from SIGBUS in an ASan build 2026-10-25 22:19:02 +00:00
Romans Pokrovskis 645833f516 Merge commit 'b90d009d9f73354cbea239a74a8f7e2dcd138772' into codex/fix-cpu-write-mapping-lifetime-20261025 2026-10-26 00:17:21 +02:00
GruzzberryandClaude Opus 5.5 33299ee554 feat(libkernel_sys): implement lchflags
lchflags is chflags without following a symbolic link in the last path
component, as FreeBSD 11.4's sys_lchflags calls kern_chflagsat with
AT_SYMLINK_NOFOLLOW. chflags now goes through a shared helper that takes
the follow choice; a link in the last component is accepted as the
target when not following, and the flag checks are unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 22:14:40 +00:00
Dean b90d009d9f Merge pull request #10665 from JJenkx/fix/libc-acoshf-positive-rounding-20261024
fix(libc): match acoshf positive-range evaluation
2026-10-26 11:14:24 +13:00
MarcZX10 9da4efcced test(relinker): lower a 256-bit store through an island across 2^63 2026-10-25 22:13:34 +00:00
JJenkxandClaude Opus 5.5 c228d7a459 docs(libc): record the wide scanner's float errno contract
swscanf restores errno around strtof and strtod, as the bundled
libc.prx does, while long double conversions keep host strtold's
errno and the narrow sscanf family keeps the host's ERANGE. Record
both gaps in the existing swscanf debt entry, as review asked.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 18:12:05 -04:00
JJenkxandClaude Opus 5.5 4eacfd4c6f fix(libc): leave errno alone for out-of-range float and double in swscanf
The wide scanf family converted %f, %e, %g and %a with strtof and
strtod, which set ERANGE when the value overflows or underflows. The
libc.prx that titles ship stores the same infinity or zero there
without touching errno for float and double, and sets ERANGE only for
an out-of-range long double. Restore errno after the float and double
conversions.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 18:11:05 -04:00
Dean 701616674a Merge pull request #10708 from Michael-KD/test/sdwa-cvt-f32-ubyte-measured
test(shader): pin SDWA v_cvt_f32_ubyte source selects measured on RDNA2
2026-10-26 11:10:38 +13:00
Romans Pokrovskis 8385e6410c Merge commit '88f99678bff7345c2a7f83aefcf1b2a8a81c7498' into codex/fix-cpu-write-mapping-lifetime-20261025 2026-10-26 00:10:07 +02:00
Dean dab64bbc52 Merge pull request #9375 from thakrarsagar/codex/relinker-output-path-cache
fix(relinker): avoid repeated output path canonicalization
2026-10-26 11:10:02 +13:00
Danigamer05 c54589b40c docs(pngdec): qualify large-image validation evidence 2026-10-25 23:09:37 +01:00
Dean 3c2453eb8e Merge pull request #10808 from ElysiaAlarien/docs/libscemsgdialog-debt
docs(libSceMsgDialog): record the silent stub and parameter layout as debt
2026-10-26 11:09:35 +13:00
orezraeyandClaude Opus 5.5 a69e912b16 docs(libkernel): record timed self-locks, event flag open and create, and the reltimed calls as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:09:29 -03:00
Evrim Cicek e5d82680e9 fix(libkernel): wake read waiters on every descriptor of a socket shut for reading 2026-10-26 01:09:24 +03:00
Evrim Cicek d0eceb7219 test(libkernel): wake a kevent waiter that watches a duplicate of a socket shut for reading 2026-10-26 01:09:24 +03:00
Adrià b8b792cfe4 Merge pull request #9710 from milescoviello/fix/atrac9-libm
fix(build): link the ATRAC9 gradient test with libm
2026-10-25 23:09:22 +01:00
Evrim Cicek 1c5e876164 fix(libkernel): report EV_EOF and wake read waiters when a socket is shut for reading 2026-10-26 01:09:17 +03:00
orezraeyandClaude Opus 5.5 abd1913b54 docs(libkernel): keep the semaphore debt entry under 1000 characters
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:09:11 -03:00
Dean 905c3e2870 Merge pull request #10647 from Bram910/fix/call-site-hint-prefixes
fix(relinker): resolve BND and NOTRACK call sites
2026-10-26 11:09:02 +13:00
Evrim Cicek 7c680ffded test(libkernel): expect EV_EOF and a wakeup on a socket read filter after shutdown(SHUT_RD) 2026-10-26 01:09:00 +03:00
Dean fd450a5b9b Merge pull request #8997 from HQasper/claude/project-thread-wjykmu
fix(libSceFont): select the Hangul Light system font
2026-10-26 11:08:35 +13:00
MarcZX10 8ce7f0f657 fix(relinker): encode the short jump to a 256-bit store's island without signed overflow 2026-10-25 22:08:32 +00:00