Commit Graph
7981 Commits
Author SHA1 Message Date
verusferro 1d31901c4b feat(libc): format num_put<char>::do_put as the console's libc does
The num_put facet's eight do_put overloads build the console's printf format from the stream flags, format through snprintf and lay out the result as the SDK libc.prx does: thousands separators from the stream locale's numpunct, its decimal point, fill and width with left, right and internal adjustment, true and false names under boolalpha, and the console's prefix and infinity rules for floating point.
2026-10-25 19:19:16 +03:00
verusferro 3338ffefff feat(libc): format time_put<char>::do_put as the console's libc does
The time_put facet's do_put formats % with the modifier and conversion through strftime and writes the result through the output iterator's stream buffer, following the SDK libc.prx: it stores into the put area while room remains, calls overflow otherwise, and marks the iterator failed when overflow returns eof or the buffer is null.
2026-10-25 19:18:04 +03:00
David a81fcbfacd feat(libkernel): sync each write on a file whose O_FSYNC flag is set
FreeBSD's F_SETFL may change O_FSYNC (FCNTLFLAGS), and vn_write then
writes with IO_SYNC. The flag now lives in the status table, and the
write entry points sync a regular file after the write while it is set.
2026-10-25 17:13:01 +01:00
MarcZX10 6c1ac043c2 docs(build): note that libc is built without floating-point contraction 2026-10-25 16:07:20 +00:00
pushkarreddyy 9839162494 docs(libkernel): clarify sysctl default assumptions for sysKernel queries 2026-10-25 21:19:57 +05:30
Dean ee856eb7a0 Merge pull request #9931 from Queuse/codex/net-nodelay-short-readback
fix(net): truncate TCP_NODELAY readback
2026-10-26 04:45:18 +13:00
Dean 5e675163f0 Merge pull request #9916 from JJenkx/windows/printf-decimal-console
fix(libc): round and cap %e, %f and %g as titles' libc.prx does
2026-10-26 04:45:09 +13:00
Dean 6b46a5dfdb Merge pull request #10299 from orezraey/fix/libkernel-socket-address-measured-ps5
fix(libkernel): check socket address families and lengths as measured on a PS5
2026-10-26 04:45:05 +13:00
pushkarreddyy 2ba10cd6bb refactor(libkernel): align sysKernel queries with firmware 13.42 disassembly 2026-10-25 21:07:36 +05:30
Himansh Raj fefd2997b7 Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-25 21:00:46 +05:30
Yunus Shaikh 684ffde83d feat(libSceBluetoothHid): fill the HID parameter block in sceBluetoothHidParamInitialize 2026-10-25 15:24:49 +00:00
Yunus Shaikh 92d5f20c10 feat(libSceNpWebApi2): validate and answer the multipart request calls 2026-10-25 15:24:49 +00:00
simnJS 4de4eeff2e fix(libSceUsbStorage): keep mapped directories on the device volume
A requested directory such as C:/Windows or C:Windows carries a root name
on Windows, so appending it to the volume root replaced the root and the
map checked a directory outside the device. Join the validated names one
by one and refuse a name with a root path. The fake sysfs of the test no
longer uses colons, so its device cases can run on Windows too.
2026-10-25 15:20:52 +00:00
Dean d2b3ee3bcc Merge pull request #8541 from Ondra97/codex/fix-ssl-context-connections
fix(ssl): release connections when their context terminates
2026-10-26 04:19:32 +13:00
Adrià 18424d6d7f Merge pull request #9384 from Ondra97/codex/feat-freetype-select-size
feat(libSceFreeType): implement FT_Select_Size
2026-10-25 16:16:57 +01:00
Adrià de74cf1deb Merge pull request #9488 from dantdmdarealguy/docs/relinker-converted-module-output
docs: describe the converted module output the relinker prints
2026-10-25 16:16:34 +01:00
Adrià bd0389635d Merge pull request #9471 from EnriqueDev2002/docs/macos-relinker-prerequisites
docs(build): add macOS relinker prerequisites
2026-10-25 16:16:28 +01:00
Emanueleandmugurc 30cc4ea2e6 feat(libkernel): start the guest off the main thread on macOS
AppKit, which SDL uses for windows, Metal surfaces, event pumping and game
controllers, works only on the main thread, and a guest never hands its
thread back. The macOS relinker emits a call to Aps5StartGuest as the
entry of a relinked executable; no library provided it.

- Aps5StartGuest runs the guest entry on a new thread with the stack size
  of the main thread (at least 8 MiB) and serves the main dispatch queue
  from the run loop of the main thread. The guest ends the process with
  exit; a guest entry that returns aborts.
- Aps5RunOnMainThread runs a function on the main thread and waits for it,
  or in place where the main thread is the caller or Aps5StartGuest was
  never called.
- libSceVideoOut sends its SDL calls through OnMainThread, which carries
  the exceptions back to the caller: the initialisation and shutdown of the
  video and game controller subsystems, the window, its Vulkan surface and
  drawable size, the event polling and the pad, mouse and keyboard input,
  which are created and destroyed there. On the other platforms the
  functions run in place.
- The flip test starts its tests through Aps5StartGuest on macOS, as a
  relinked guest does.

Co-authored-by: mugurc <[email protected]>
2026-10-25 16:02:42 +01:00
harisibrar1andClaude Opus 5.5 42a02f54f0 feat(libSceLibreSsl): report ASN1_STRING_to_UTF8 errors through the ASN.1 error queue as LibreSSL 2.5.4 does
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 10:58:50 -04:00
simnJS c35855cd98 feat(libSceUsbStorage): pass the host's USB FAT and exFAT volumes through
List the FAT and exFAT volumes the host has mounted from USB mass-storage
devices (Linux mountinfo and sysfs, Windows volume IOCTLs and SetupAPI),
map each to /mnt/usb<id> and report mounts and unmounts to the registered
callbacks from a service thread that rescans the host once a second.
Device info, map requests and getdents scans follow the recovered records
of SharpProspero and shadPS4; unknown answers keep throwing.
2026-10-25 14:56:22 +00:00
Adrià FranchandClaude Sonnet 5.5 949a1e47ab docs(ajm): move the batch bounds debt line inside the Functional section
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 15:53:00 +01:00
JJenkx bd31542d50 fix(ajm): bound private batch job reads before execution 2026-10-25 15:52:55 +01:00
valenciana-nc 37ba4a9d2f fix(libkernel): reject ended threads in pthread_attr_get_np 2026-10-25 15:49:57 +01:00
orezraeyandClaude Opus 5.5 9925a9e401 fix(libSceAudioOut): fail a repeated sceAudioOut2Initialize and sceAudioOutInit as measured on a PS5
On PS5 firmware 13.60 a second sceAudioOut2Initialize returns 0x80268004,
also after sceAudioOutInit, and a second sceAudioOutInit returns
0x8026000e. sceAudioOutInit after sceAudioOut2Initialize still returns 0.
sceAudioOut2InitializeEx and sceAudioOut2LoInit keep returning 0; their
repeats were not measured.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 11:36:01 -03:00
Himansh Raj bc7c5c752d Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-25 20:00:48 +05:30
harisibrar1andClaude Opus 5.5 aebd8881d4 fix(libkernel): fail a write to a pipe without a reader with EPIPE on Windows
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 10:27:58 -04:00
orezraeyandClaude Opus 5.5 2d339842eb fix(libkernel): add 0x80020000 to any event fflags in sceKernelGetEventError as measured on a PS5
On PS5 firmware 13.60 sceKernelGetEventError returns 0x80020000 plus the
event's fflags in 32 bits for every non-zero fflags, including values
above 0xFFFF, where it used to throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 11:25:04 -03:00
Bram910andClaude Opus 5.5 32744645c4 fix(libSceNet): accept MSG_NOSIGNAL in send, sendto and sendmsg
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 15:21:43 +01:00
Maz 4e657b158e feat(libc): export the time_get facet vtable as data
Console libSceLibcInternal exports o4kt51-uO48 as a 104-byte STT_OBJECT;
titles that resolve the symbol as data need a zeroed 13-slot vtable like the
other facet vtables, not a missing import.
2026-10-25 15:20:04 +01:00
orezraeyandClaude Opus 5.5 92448b72f9 fix(libkernel): accept any block size and a null block in the system software version getters as measured on a PS5
On PS5 firmware 13.60 sceKernelGetProsperoSystemSwVersion and
sceKernelGetSystemSwVersion return 0 for every value in the leading size
field, keep it, write the string and the packed version, and return 0
without writing for a null block.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 11:19:52 -03:00
AZLisme 503a0efb3a test(libSceRudp): cover empty poll wait behavior 2026-10-25 22:11:20 +08:00
mantavisualandClaude Opus 5.5 0fd2e0ce9f feat(libSceIcu): implement the invariant character and version helpers
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 16:09:56 +02:00
Adrià FranchandClaude Sonnet 5.5 f63b27bdaa feat(libkernel): implement getlogin
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 15:07:38 +01:00
Yunus Shaikh fc881b9259 Merge main into fix/libscenet-inet-text-rules
Main's #10706 removes the local declarations at the top of libSceNet's
Export.cpp, where this branch had added __inet_pton and __inet_ntop.
libkernel's Api.hpp, which Export.cpp includes, now declares both, so the
merge takes main's side there.
2026-10-25 07:07:33 -07:00
Yunus Shaikh 8be8dc83af Merge main into fix/libkernel-signal-handler-mask
Main's #10706 moves the declarations of exported functions and their types
into the libraries' public headers, and gives WaitForPendingInSet a
KernelTimespec timeout. The merge keeps this branch's DeliverUnblockedPending
and ChangeBlockedMask with main's KernelTimespec. It takes main's side of
the declarations in GuestSignalSets.cpp, whose setjmp and longjmp this
branch had added and libc's Api.hpp now declares. GuestSignalHandlerMask.cpp
includes the libkernel and libc public headers in place of its own
declarations and GuestSignalSet and GuestSigaction types, as the
public_headers audit requires.
2026-10-25 07:05:46 -07:00
verusferro c9df854687 fix(libc): compute strftime week numbers as the console's libc does
%G, %g and %V no longer throw for a negative tm_yday, a tm_yday past the year or a tm_wday below -6. They follow the year and week rule of the SDK libc.prx, read from its disassembly and checked by running it, with its leap-year test and 32-bit arithmetic. %U and %W also wrap in 32 bits as that module does.
2026-10-25 17:03:45 +03:00
lakhantheboss 59c7e535c0 docs(libSceNpGameIntent): concise technical debt entry for receive intent size guard 2026-10-25 19:31:39 +05:30
lakhantheboss b08f1f0234 fix(libSceNpGameIntent): return errors for invalid arguments and uninitialized calls 2026-10-25 19:31:39 +05:30
Dean 85a4d7f8c8 Merge pull request #10754 from slugzero/fix/pad-get-controller-type
fix(libScePad): accept special handles in scePadGetControllerType
2026-10-26 02:32:31 +13:00
Himansh Raj c150109f72 Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-25 19:00:47 +05:30
Adrià 1ee8f4bec1 Merge pull request #9181 from Dripl1x/fix/no-resident-write-faults
fix(libc): stop write-protecting resident runs on Windows
2026-10-25 14:26:12 +01:00
Adrià 0658bc8749 Merge pull request #9186 from fma-rc/fix/agc-retire-undrawn-filled-msaa
fix(agc): retire an undrawn filled multisampled color target that a guest access overlaps
2026-10-25 14:25:07 +01:00
GruzzberryandClaude Opus 5.5 e6b07323de feat(libkernel_sys): implement settimeofday
FreeBSD 11.4's kern_settimeofday rejects a timeval with a microsecond
field outside 0 to 999999 or a negative second field with EINVAL before
changing anything, sets the clock from a valid timeval, and then stores
the timezone, which gettimeofday reports. settimeofday now checks the
timeval the same way and throws for a valid one, as clock_settime does,
because the host clock is not changed. A timezone given without a
timeval is stored and gettimeofday reports it instead of 0 and 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 13:20:31 +00:00
louise-patraandClaude Opus 5.5 10f2994bb6 fix(libSceNpUtility): refuse null results and synchronous requests in polls and waits
Firmware 13.42's module checks a null result first (0x80550704) and
refuses a synchronous request in the lookup poll and wait with
0x80550307; the word filter keeps INVALID_ID. The debt entry records the
measurement and that IDs here do not carry the console's service bits.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 18:50:17 +05:30
Dean fe86ec4a3d Merge pull request #10539 from hypermoist/feat/font-get-glyphs-outline-profile
feat(libSceFont): report the glyph outline profile through the FreeType driver
2026-10-26 02:20:13 +13:00
AZLisme 77ba69041c docs(libSceLibreSsl3): correct ASN.1 debt grammar 2026-10-25 21:20:00 +08:00
AZLisme 489b27e780 refactor(libSceLibreSsl3): publish standalone ASN.1 integer decoder 2026-10-25 21:19:50 +08:00
AZLisme 318b1fad9e feat(libSceLibreSsl3): implement ASN.1 integer decoding 2026-10-25 21:19:50 +08:00
Adrià FranchandClaude Sonnet 5.5 f2f526709c docs(libs): update the libSceSdma pending export count after 5 constant returns
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 14:16:52 +01:00
hypermistandClaude Opus 5.5 9d710abf9d fix(libs): return what the firmware returns from 29 more calls it does not implement
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-25 14:16:45 +01:00