Commit Graph
14017 Commits
Author SHA1 Message Date
bluandClaude Opus 5.5 0ecef87c4c fix(libkernel): answer Windows reparse points that are not links
lstat and readlink threw NotImplemented for every Windows reparse point
other than a symbolic link or a drive junction. A tag without the name
surrogate bit (cloud files, deduplication) does not stand for another path,
so lstat now answers as stat does and readlink returns EINVAL, as FreeBSD
does for a file that is not a link and as CPython's os.lstat and os.readlink
do (bpo-37834). A name surrogate that is neither a symbolic link nor a
junction (a mounted volume, a WSL link) is reported as the reparse point
itself with the mode of its attributes, and readlink returns EINVAL.

The tests set reparse tags with FSCTL_SET_REPARSE_POINT, one without the
name surrogate bit and one with it. A compact /exe (WOF) file cannot serve
as the fixture: on Windows 11 24H2 the WOF filter hides the reparse point
from GetFileAttributesW and FileAttributeTagInfo alike. Windows refuses
every open of an unhandled tag without FILE_FLAG_OPEN_REPARSE_POINT, so the
test requires lstat to agree with stat rather than to succeed.

mashingaan's boykopovar/AnyPS5#6447 returned EINVAL for other reparse
points without the tag check.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-20 08:21:33 -07:00
Federico Marras 5f6c30547e Merge remote-tracking branch 'upstream/main' into feat/kqueue-read-on-kqueue
# Conflicts:
#	docs/dev/debt/libkernel.md
2026-10-20 17:18:22 +02:00
Federico Marras 0d6ba22d9f feat(libSceAudioOut): serve the low-latency AudioOut2 calls through their standard counterparts 2026-10-20 17:16:40 +02:00
Adrià d073fe6a1d Merge pull request #7524 from jotitadev/fix/macos-guest-math-bessel-reference
fix(tests): compare the Bessel exports with fixed reference values
2026-10-20 17:16:08 +02:00
valenciana-nc 85cb95851b fix(tools): avoid redundant padding when unwrapping SELF 2026-10-20 09:15:49 -06:00
Adrià 1e1a19bf48 Merge pull request #7075 from AlexOfTheForest/feat/kevent-pipe-write
feat(libkernel): support EVFILT_WRITE on the write end of a pipe
2026-10-20 17:15:03 +02:00
Savvanis SpyrosandClaude Opus 5.5 267d211318 fix(shader): refuse a call link escape only at the wave size it escapes under
When the graph is built without the wave size and the return address
escapes under only one of wave32 and wave64, the graph records that size
and its error instead of throwing, and translation throws it only at
that size. A wave64 program that reads a compare mask written over a
call's link pair from a scalar instruction is now recompiled, while the
same program at wave32, where the high dword still holds the return
address, is refused.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 18:13:18 +03:00
Dean 5ccf1824df Merge pull request #6679 from SleglJan/pr/merged-hull
feat(agc): run registered merged hull programs (binary type 3)
2026-10-21 04:12:03 +13:00
Dean 3177d1989e Merge pull request #8036 from ymatrix1/feat/ime-filter-text
feat(libSceIme): implement sceImeFilterText
2026-10-21 04:11:45 +13:00
Savvanis SpyrosandClaude Opus 5.5 e0095e5b49 fix(relinker): find more constant syscall numbers before a gap syscall
The raw-byte check that runs before a syscall pattern between PS4 unwind
functions is skipped now also accepts mov rax, imm64, merges a following
mov al, imm8 or mov ax, imm16 into the earlier constant, and walks back
over any number of register moves or zeroings that leave rax alone
instead of at most seven. Visited states keep the walk linear in the
bytes it covers.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 18:10:59 +03:00
Dean 1a3a1b2e0e Merge pull request #3998 from MrMha/feat/controller-timelines
feat(pad): queue timed controller button sequences
2026-10-21 04:08:30 +13:00
Dean d243cc5cab Merge pull request #7960 from Lindamea1/fix/savedata-ps5-64k-blocks
fix(libSceSaveData.native): count PS5 save data in 64 KiB blocks, at most 16384
2026-10-21 04:08:02 +13:00
Joey Fisher 56ddbbbd0d test(agc): report a missing host import in lookup-changed as a device skip
resource-lookup-changed skipped with its own texts when the device has no
host imports or refuses the import of the watched surface. Neither matches
DEVICE_LIMITATION in tools/check_skips.py, so a runner without host imports
would fail the job instead of recording a device skip. Both now print the
existing "skipped, host imports are unavailable".
2026-10-20 09:07:28 -06:00
Savvanis SpyrosandClaude Opus 5.5 cf12795014 fix(shader): check call link registers for both wave sizes when the size is unknown
The control-flow builder does not know the wave size (the front end is
shared across wave sizes), and with an unknown size it took a v_cndmask
mask to read two registers but a VOPC result to write only one. A wave64
compare that overwrote a call's link pair before a v_cndmask read it was
then rejected as a link register escaping the call/return model. The
check now runs once for wave32 and once for wave64 when the size is
unknown, so each read is matched with writes of the same width.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 18:07:21 +03:00
Adrià 286908f918 Merge pull request #7615 from XD3V3LOP3RX/codex/windows-remap-write-watch
fix(windows): restore write tracking after resident direct remaps
2026-10-20 17:06:48 +02:00
Federico Marras 0bc9d64443 feat(libSceSystemService): end the running title through sceLncUtilKillApp and sceLncUtilKillAppWithReason 2026-10-20 17:06:08 +02:00
Adrià 054852a76b Merge pull request #6942 from AlexOfTheForest/fix/path-errno
fix(libkernel): report ELOOP and ENAMETOOLONG from mkdir, rmdir and truncate
2026-10-20 17:05:43 +02:00
fma-rc 96b190317a docs: use a made-up title ID in the bug report form's example 2026-10-20 17:02:59 +02:00
Adrià acda0b06f9 Merge pull request #7416 from mohammad-alosta/add/unimplemented-system-lib-stubs
feat(libs): add unimplemented PS5 system library stubs and debt docs
2026-10-20 17:00:33 +02:00
Federico Marras 6ead14f9e8 feat(libkernel): watch a kqueue with EVFILT_READ 2026-10-20 16:56:06 +02:00
fogydes d5463ce04f feat(libSceRemoteplay): export missing firmware remote play interfaces 2026-10-20 20:20:29 +05:30
xXPBSXxandClaude Sonnet 5.5 923a32c9c9 fix(libkernel_sys): fail link, symlink, pathconf and fchmodat through a regular file with ENOTDIR
FreeBSD 11.4 vfs_cache_lookup answers ENOTDIR when the directory it searches
is not a directory (sys/kern/vfs_cache.c:2104-2105), the lookup behind the
calls fixed in the earlier ENOTDIR changes. These four calls answered ENOENT
for a path such as file/child on Windows.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 16:48:47 +02:00
Zenodeon 9fe1f963c8 test(agc): verify incomplete array history against the backend 2026-10-20 18:48:22 +04:00
Zenodeon c19dcecfec fix(agc): expire collected write proofs on allocation changes 2026-10-20 18:48:22 +04:00
Adrià 7526640c3c Merge pull request #7839 from hypermoist/feat/libc-reentrant-time-xtime
feat(libc): implement gmtime_r, localtime_r, timegm and the Dinkumware xtime helpers
2026-10-20 16:47:07 +02:00
Adrià 4cfcb003de Merge pull request #7862 from parl0v/fix/storage-budget-sampled-reserve
fix(agc): reserve only the sampled textures alive from the storage image budget
2026-10-20 16:45:56 +02:00
Federico Marras c9ff98e249 test(libSceRazorCpu): let the guest unwinder see the test's frames on Windows 2026-10-20 16:43:51 +02:00
fogydes 919e5f64f1 feat(libSceVorbisDec): export missing firmware Vorbis decoder interfaces 2026-10-20 20:09:32 +05:30
orezraeyandClaude Opus 5.5 1965dc0dc4 test(videoout): skip the HDR probe check on a monitor Windows reports as HDR
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 11:37:50 -03:00
Adrià 75787d2f64 Merge pull request #6696 from al3w0f205/feat/player-selection-dialog-support
feat(libScePlayerSelectionDialog): add common dialog lifecycle and tests
2026-10-20 16:36:40 +02:00
Dean GalvinandJoey Fisher 1cb64823ef Merge main into fix/template-texture-audit
Co-authored-by: Joey Fisher <[email protected]>
2026-10-21 03:35:29 +13:00
Zenodeon b8f6d316a9 test(agc): expose cached write history across allocation replacement 2026-10-20 18:31:03 +04:00
Zenodeon 5012f736d0 test(agc): scope unit history checks to write-watched hosts 2026-10-20 18:31:03 +04:00
Zenodeon 2421f6cfa0 fix(agc): retain write history for committed texture units 2026-10-20 18:31:03 +04:00
Zenodeon de0cf03efe test(agc): cover array slices beside uncommitted memory 2026-10-20 18:31:03 +04:00
Zenodeon c25566ca6d perf(agc): upload selected array layers through CPU staging 2026-10-20 18:31:03 +04:00
Zenodeon 2d677974d1 test(agc): cover CPU refresh of overlapping array targets 2026-10-20 18:31:03 +04:00
MiguelAdolfsenandClaude Opus 5.5 52a64aef65 perf(agc): refresh only the layers a use of an array color target covers
A color view of one slice of a 2D array target refreshed the whole array
image before each draw, sampled lookup and present. When the array's unused
slices lie over other live targets (ps5-opengl declares every target as a
two-slice array and allocates the next one over its second slice), each
refresh stored the other targets' pending results, wrote back its own and
uploaded the whole image from guest memory again, on every pass.

StorageTexture::RefreshLayers refreshes the tracked layers that hold the
given array layers alone: it flushes and compares their memory only, and
results of other images pending over the other layers stay pending. A layer
outside the range whose memory changed or that holds another image's pending
results is left behind; GenerationFor reports it as never current, so a use
over it takes the whole Refresh. It falls back to Refresh for volumes,
single-layer and DCC images, an alias, or results of the image pending
outside the range.

A draw into an array slice, a 2D view of one layer of an array image and a
present of one layer use it. The compare memo of untracked memory is kept
per range, so a layer refresh's compare is memoized like the whole image's.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 18:31:03 +04:00
xTRACKGOD dc9a15aede fix(tools): find compile commands for sources outside checkout 2026-10-20 19:58:22 +05:30
Yuri Olive 9a6f7c1bac chore(tools): drop the codepage generator, kept in the PR description 2026-10-20 11:25:58 -03:00
Dean 5f7e30233e Merge pull request #7340 from teepean/perf/write-only-pass-continuation
perf(agc): draws that only store to a buffer continue one render pass
2026-10-21 03:23:29 +13:00
Adrià 28f126650b Merge pull request #6598 from zaryabzip/fix/agc-reserve-prepare-stacks
fix(agc): reserve the shader preparation thread stacks on Windows instead of committing them
2026-10-20 16:23:09 +02:00
milescovielloandClaude Opus 5.5 f1cafaca07 fix(libSceNgs2): refuse a destroy from inside its own system's render
A voice callback runs during its system's render. A rack or system
destroyed from that callback was freed while the render still walked
it, which corrupted the heap. sceNgs2RackDestroy and
sceNgs2SystemDestroy now throw when the calling thread is rendering
that system; the console's behaviour there is not measured.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 14:23:07 +00:00
Yuri Olive e5543aad64 chore(tools): add the sceImeFilterText codepage generator 2026-10-20 11:20:19 -03:00
Adrià 576b4b94b2 Merge pull request #7873 from whamre/feat/hang-dump-stack-candidates
feat(libc): list stack return address candidates in the hang dump
2026-10-20 16:20:04 +02:00
Dean Galvin 5be6c2a074 fix(libkernel): bound the raise wait on host code to 50 ms
Follow-up to #7652. A raise on a thread running host code waited up to the
1 s RetryLimit before falling back, so Windows guest_raise_exception (about
220 host-resident raises) went from ~15 s to 17-30 s. Host code now has its
own HostCodeLimit of 50 ms; RetryLimit still guards NtContinue and winpthreads.
2026-10-21 03:12:33 +13:00
Adrià 5f7aa5570c Merge pull request #7563 from babyhuey/feat/libkernel_sys-fstatat
feat(libkernel_sys): implement fstatat
2026-10-20 16:08:26 +02:00
Adrià 6e9279c51a Merge pull request #7829 from JJenkx/fix/shader-bda-anchor-read-sync114
fix(shader): retain adjacent anchor byte loads on RADV
2026-10-20 16:05:32 +02:00
Adrià fdc557292b Merge pull request #7523 from jotitadev/fix/tools-check-python-test-registration
fix(tools): fail when a test_*.py script is never run
2026-10-20 16:05:20 +02:00
Adrià d28cb2a66e Merge pull request #7785 from pushkarreddyy/fix/savedata-umount2-icon-null
fix(savedata): return parameter error on null arguments in umount2, loadIcon and saveIcon
2026-10-20 16:01:09 +02:00