Commit Graph
20967 Commits
Author SHA1 Message Date
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 7faa3ea40b Merge pull request #9001 from Queuse/codex/test-siginterrupt-contracts
test(libc): cover siginterrupt state boundaries
2026-10-26 04:45:14 +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
simnJS f8213ac53d test(libSceUsbStorage): run the service cases on Windows with injected volumes
libstdc++ on Windows answers create_directory_symlink with
function_not_supported, so the fake sysfs could never be built there and
every device case was skipped. Inject the host volumes directly for the
device, map, getdents and hotplug cases, and keep the fake sysfs only
for the scan of mountinfo and sysfs, which is Linux's.
2026-10-25 15:33:46 +00:00
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
Dean 006c3648bd Merge pull request #8911 from Celegans12/perf/agc-held-read-skip-empty-flush
perf(agc): skip the queued-draw read check when a storage flush stores nothing
2026-10-26 04:19:29 +13:00
Dean 15e1e72a21 Merge pull request #10542 from anizayazcodpro-png/feat/libc-iswascii
feat(libc): implement iswascii
2026-10-26 04:19:25 +13:00
Adrià 6b8075ecf2 Merge pull request #9403 from rooklz/test/net-abort-after-send
test(libSceNet): wait for the blocked send to start before aborting it
2026-10-25 16:17:02 +01: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à 7e5a2c6e3d Merge pull request #9380 from emirplus/fix/progress-compare-utf8-bom
fix(tools): decode snapshots with utf-8-sig and reconfigure streams in progress
2026-10-25 16:16:53 +01:00
Adrià 355dd435e4 Merge pull request #9379 from DavidSamir/feat/libkernel-sys-swapcontext
feat(libkernel): implement swapcontext
2026-10-25 16:16:48 +01:00
Adrià e07e775074 Merge pull request #9377 from emirplus/fix/import-audit-utf8-stream-reconfigure
fix(tools): decode sources with utf-8-sig and reconfigure streams in import_audit
2026-10-25 16:16:43 +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
Dean Galvin debfe27cde test(agc): add a required nonzero-lead CPU publish case to the sparse dma-buf import test
The CPU publish pass could pass with lead 0 or with the publish unchecked. A dedicated agc_driver_sparse_dma_buf_cpu_lead run (--require-cpu-lead) now fails unless the import is a dma-buf with lead 16384, the unit is watched, the CPU publish is nonzero and every word and guard is checked, and it fails instead of skipping when the device cannot. The default run keeps its existing checks, reports the skip with its reason and prints a coverage line.
2026-10-26 04:08:12 +13:00
JJenkx 53da58ac91 test(audioout2): preserve the native test entry point with SDL headers 2026-10-25 11:07:39 -04:00
Itamar Medyoni 3db438f997 fix(libkernel): answer process CPU clocks like FreeBSD instead of throwing
A clock id with CPUCLOCK_PROCESS_BIT threw in clock_gettime and
clock_getres. FreeBSD 11 get_cputime reads the process's CPU time, or
fails with EINVAL when pget finds no such process, and kern_clock_getres
gives every CPU clock the CPU time resolution without a lookup. The
guest's own process clock now reads CLOCK_PROCESS_CPUTIME_ID, any other
fails with EINVAL, as kill already finds no other process.
2026-10-25 16:07:10 +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
plexerPK 4fa1cf0d55 fix(tools): reject NaN JobManager reference timeouts 2026-10-25 15:54:59 +01:00
Dean Galvin a006b57dbb fix(libc): declare the underflow_error destructor once in the public header
The new export is declared next to its siblings in prx/libc/include/Api.hpp and GuestUnderflowError.cpp uses the canonical declarations instead of local externs, which public_headers rejects.
2026-10-26 03:54:56 +13:00
Dean Galvin 1e7b3bfe14 Merge branch 'main' into feat/libc-underflow-error 2026-10-26 03:54:56 +13:00
al3ss4ndrolbandClaude Opus 5.5 5698c2c50f test(relinker): compare patch advisor output against the resolved temporary root
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 15:53:03 +01: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
JJenkx c75ef9f48d fix(audioout2): publish queue changes when producer scopes exit 2026-10-25 10:52:42 -04:00
raghav314andClaude Opus 5.5 ab7834aaa2 test(agc): check plane copy memory reuse only where the pool keeps such a block
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 20:21:02 +05:30
valenciana-nc 37ba4a9d2f fix(libkernel): reject ended threads in pthread_attr_get_np 2026-10-25 15:49:57 +01:00
Cankiee e8757f9d5c fix(tools): handle escaped backticks and invalid fences 2026-10-25 15:44:31 +01:00
Cankiee b82bd7a400 fix(tools): preserve code spans and fences when relinking debt 2026-10-25 15:44:31 +01:00
roboterspinne 727939dd08 fix(relinker): reject an existing directory at any output path before writing
Only the main executable output was checked for being a directory. A
directory at a guest module, extra executable, registry, needed-library,
patch manifest, icon, desktop entry or diagnostics path failed only when
it was opened, in most cases after earlier outputs had been written.
checkOutputInputs now rejects an existing directory for every output
kind it checks, as 286cf28ec7 did for the main executable. Such runs
still exit 2, now before any output is written.
2026-10-25 15:44:18 +01:00
raghav314andClaude Opus 5.5 1ec99e3aba fix(agc): subtract the import lead from the CPU publish address
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 20:13:38 +05:30
orezraeyandClaude Opus 5.5 b78627d354 fix(libkernel): fail the yield loop setter on a destroyed mutex as measured on a PS5
On PS5 firmware 13.60 pthread_mutex_setyieldloops_np and
scePthreadMutexSetyieldloops return EINVAL on a destroyed mutex, as the
other spin and yield loop calls already did here. The default counts
(2000 spins for an adaptive mutex, 0 otherwise, 0 yields) match.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 11:41:31 -03:00
plexerPK de2b5de1b7 fix(relinker): detect opcode-encoded bswap stack operands 2026-10-25 15:41:22 +01:00
plexerPK c1bfd95e3a fix(relinker): reject executable TLS symbols in special sections 2026-10-25 15:40:17 +01:00
plexerPK a9e6fff227 fix(tools): preserve debt entry identities during conflict resolution 2026-10-25 15:39:51 +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
roboterspinne a5327c73b9 fix(relinker): keep fixed Windows images below the highest user address
With --windows-fixed-base the PE writer bounded the end of a fixed
image by 0x7fffffffffff, so an image ending in the top 64 KiB relinked
with exit code 0 and then failed to load with
STATUS_CONFLICTING_ADDRESSES. On x64 Windows 8.1 and later the highest
user address is 0x7ffffffeffff (lpMaximumApplicationAddress), so the
exclusive end of a fixed image must not exceed 0x7fffffff0000. Such
images are now rejected with the existing user address space error;
every image that ends at or below the limit is written unchanged.
2026-10-25 15:35:55 +01:00
roboterspinne 33b48ba39f fix(relinker): refuse GS traps that overwrite a code entry point in Windows output
--windows replaced a guest GS memory instruction with UD2 and NOPs even
when a symbol, a relocation pointer, a lea target or a DT_INIT_ARRAY
entry started inside it, so that entry ran padding instead of the
original code. A trapped instruction that holds a collector entry root
after its first byte now fails with "GS trap would overwrite an
executable entry point" at the root's file offset, the rule that TLS
rewrites already follow. The branch check runs first, so a relative
branch into the instruction keeps its message, and outputs without such
a root are unchanged.
2026-10-25 15:34:15 +01:00
JJenkx fef6f77622 fix(audioout2): poll device queue levels without the callback mutex 2026-10-25 10:34:14 -04: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
plexerPK 7259cf0a87 fix(tools): shorten stubgen temporary filenames 2026-10-25 15:25:23 +01:00