Commit Graph
14017 Commits
Author SHA1 Message Date
JJenkxandClaude Opus 5.5 92ea0b9ce3 test(relinker): wait for the exited diagnostic runner to release its fixtures
windows_dependency_diagnostics rewrites the fixture images right after the
diagnostic runner exits. The runner ends with an unhandled RaiseException of
STATUS_DLL_NOT_FOUND, and Windows fault handling keeps the exited process's
image files open for a short time after its handle is signaled: on Windows 11
22621 the Restart Manager names the exited runner as the holder and the file
opens 37 to 153 ms later. The rewrite then fails with ERROR_SHARING_VIOLATION,
and the final removal of the fixtures with access denied. Retry opening a
fixture while it fails with a sharing violation and the removal while it fails
with access denied, for at most 10 s each; every other failure still fails the
test at once.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 21:45:35 -04:00
Adrià 6bd669e40c Merge pull request #6832 from al3w0f205/feat/bluetoothhid-firmware-exports
feat(libSceBluetoothHid): export missing firmware functions from database
2026-10-20 03:45:08 +02:00
Adrià 306bb17a27 Merge pull request #7789 from JJenkx/fix/ajm-batch-context-ownership
fix(ajm): keep batch handles within their creating context
2026-10-20 03:45:02 +02:00
xXPBSXxandClaude Sonnet 5.5 45940f27cc fix(libkernel): honour MSG_DONTWAIT in the socket send and receive calls on Windows
send, sendto, sendmsg, recv, recvfrom and recvmsg failed with EOPNOTSUPP for
MSG_DONTWAIT on Windows, where FreeBSD 11.4 sosend_generic and
soreceive_generic make the one call non-blocking and fail with EWOULDBLOCK
when it would wait. Winsock has no per-call flag, so the call now asks WSAPoll
with a zero timeout whether the socket is ready and fails with EAGAIN when it
is not. The Windows branches of the socket tests that expected EOPNOTSUPP now
run the same checks as the other hosts.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 03:43:59 +02:00
Adrià 1d8389d3e3 Merge pull request #7755 from JJenkx/fix/profile-output-stop-rejection
fix(agc): reject late profiling output after shutdown
2026-10-20 03:43:52 +02:00
xXPBSXxandClaude Sonnet 5.5 da6b8561c3 fix(libkernel): fail fsync and fdatasync on a pipe with EINVAL
On Windows fsync and fdatasync of a pipe descriptor answered EBADF for the
read end and 0 for the write end. FreeBSD 11.4 kern_fsync reaches the
descriptor through getvnode, which fails a descriptor that is not a vnode
with EINVAL. NativeSync now refuses a pipe handle with EINVAL before it
commits.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 03:32:02 +02:00
Adrià 02084228a4 Merge pull request #7567 from pushkarreddyy/fix/libSceAcm-batch-wait-validation
feat(libSceAcm): validate context and batch parameters in batch wait and lifecycle exports
2026-10-20 03:30:45 +02:00
Adrià ef823a4458 Merge pull request #7756 from frankea/ssl-ps5-measured
fix(libSceSsl): follow the codes and defaults measured on a PS5 (13.40)
2026-10-20 03:30:38 +02:00
xXPBSXxandClaude Sonnet 5.5 a11756851e fix(libkernel): fail flock on an invalid descriptor with EBADF and on a pipe with EOPNOTSUPP
flock on a descriptor that is not open threw a runtime_error from the failed
Windows lock call, ending the title. FreeBSD 11.4 sys_flock fails it with
EBADF (fget) and a descriptor that is not a vnode, such as a pipe, with
EOPNOTSUPP. The guest flock now checks the descriptor first, on Windows
through the OS handle and elsewhere through fstat.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 03:29:01 +02:00
MarcZX10 40cd706127 fix(libc): enforce mspace trace table capacity 2026-10-20 01:26:54 +00:00
Adrià 049a826e95 Merge pull request #7786 from T3cm0/feat/videoout-hmd2-bus
feat(libSceVideoOut): answer the HMD2 bus open as the console does
2026-10-20 03:25:32 +02:00
Adrià d55acb2695 Merge pull request #7739 from ionut27001/test/guest-kill-foreign-group
test(libkernel): pick a foreign process group guest_kill cannot own
2026-10-20 03:25:26 +02:00
MarcZX10 3bac1f0b43 fix(agc): fail requested BDA GPU selection when Vulkan is unavailable 2026-10-20 01:17:49 +00:00
Luis Gerardo Aguilar 1b33f14c8c feat(netctl): add sceNetCtlGetInfoV6 argument and connection checks
Titles import sceNetCtlGetInfoV6, and a missing import stops them at
load. The checks that need no answer layout are implemented; every code
throws when the host has IPv6, since the layout of the answer is not
verified.
2026-10-19 20:17:26 -05:00
Adrià 7e12b3da80 Merge pull request #7736 from jotitadev/fix/relinker-desktop-entry-test-unique-dir
test(relinker): give the desktop entry test its own temporary directory
2026-10-20 03:13:23 +02:00
Adrià 54c289bcfa Merge pull request #7735 from MarcZX10/codex/fix-libc-cnd-wait-precision
fix(libc): avoid coarse Windows C++ condition waits
2026-10-20 03:13:18 +02:00
Adrià 444101c50b Merge pull request #7728 from jotitadev/fix/agc-capture-ignore-ds-store
fix(agc): ignore Finder .DS_Store files in capture directories
2026-10-20 03:13:13 +02:00
Adrià 8a76c34a02 Merge pull request #7722 from jotitadev/fix/agc-library-layout-null-sets
fix(agc): keep each descriptor set slot in one of a split pipeline library pair
2026-10-20 03:13:06 +02:00
xXPBSXxandClaude Sonnet 5.5 7535eb45fc fix(libSceLibcInternal): start fdopendir at the descriptor position and set FD_CLOEXEC
fdopendir listed the directory from its first entry whatever position the
descriptor had, and left FD_CLOEXEC unchanged. FreeBSD 11.4 fdopendir sets
FD_CLOEXEC on the descriptor and preserves the initial seek position (lib/libc/gen/opendir.c).
The Windows directory handle now skips the entries the descriptor already
consumed, the Linux handle duplicates the descriptor, and the test requires both.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 03:11:14 +02:00
To3akaRin c1c416fc43 docs(build): translate quick syntax checks into English 2026-10-20 09:09:09 +08:00
priyanshrv-netizenandClaude Opus 5.5 16a7cece3b feat(libc): implement j0, j1, jn, y0, y1 and yn
The double Bessel functions follow the system libc.prx: FreeBSD msun
e_j0.c, e_j1.c and e_jn.c with every multiply-add the console fuses
done as one FMA, and the console's constant results for zero and
negative arguments of the second kind.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-20 06:38:32 +05:30
Savvanis SpyrosandClaude Opus 5.5 4aadd19659 fix(relinker): accept a relative jump table padded to 16 bytes before more code
FindTrailingRelativeJumpTable accepted a jump table after a function's
code only when padding followed it up to the end of the inspected range.
A PS4 function's table can end past its FDE, be padded to the next
16-byte boundary and be followed by more code before the next FDE. The
table is now accepted when padding reaches that boundary; it then ends
there, so the code after it is still analysed as code.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 04:07:56 +03:00
xXPBSXxandClaude Sonnet 5.5 dd945495e3 fix(libkernel): check truncate length and utimes times before the path
FreeBSD 11.4 kern_truncate returns EINVAL for a negative length before it
looks up the path, and getutimes rejects an out-of-range tv_usec before
namei in utimes and lutimes. The guest calls checked a NULL or empty path
first, so truncate(NULL, -1) and utimes("", {usec -1}) returned EFAULT or
ENOENT where FreeBSD returns EINVAL.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 03:07:47 +02:00
MarcZX10 8c301fb5c7 fix(agc): honor ANYPS5_GPU in BDA tests 2026-10-20 01:06:47 +00:00
MarcZX10 4cb397a4c9 test(agc): cover BDA fixture GPU selection 2026-10-20 01:06:47 +00:00
Dean Galvin f06c9f9222 Merge main into pr-6604
# Conflicts:
#	docs/dev/debt/shader.md
2026-10-20 14:05:05 +13:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 58f0e89ca3 fix(agc): keep resident DCC targets watched under aligned block imports
Since host imports group adjacent ranges into aligned blocks (#6457), an
import can span both 64 KiB blocks that an earlier import left unwatched
and the metadata of resident multisampled DCC targets.

ImportWatched with staysWatched took the whole import out of the write
watch when any part of it was not watched before. It now walks and
compares each run of watched blocks of the import on its own, and
unwatches only the blocks that were not watched or whose walk failed.

A resident DCC target took the generation of its metadata from a walk
of the metadata's pages alone. CPU stores to the rest of the metadata's
64 KiB block made before that walk were stamped later by the import's
walk, so the block read as written, and the import window marked the
metadata page as possibly stored over: the next draw refused the
target. The generations now come from a walk of the whole blocks.

agc_write_tracking and agc_driver_msaa_dcc_clear_* gain regression
tests for both.

Fixes #8103

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 06:04:44 +05:00
xXPBSXxandClaude Sonnet 5.5 3f007a8798 fix(tools): read the select_tests changed-file list as UTF-8 with a byte order mark
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 03:00:15 +02:00
Adrià b50976750d Merge pull request #7640 from Pipodi/perf/texture-cache-scan-admission
perf(agc): refuse uncached textures while the sampled cache's least recently used entry is still in use
2026-10-20 02:57:27 +02:00
Savvanis SpyrosandClaude Opus 5.5 45cc02c49c fix(relinker): start Windows runtime modules the executable needs when the title loads them
A --module-dir module that only the executable needs was initialized by
the Windows entry stub with no start arguments, so a later
sceKernelLoadStartModule with arguments found it started and its
module_start never saw them. Unity's mono-ps4.sprx keeps those
arguments for the plugins it loads. Such a module is now deferred like
any other runtime module: mapped at startup and started, with its
arguments, when the title loads it. Modules another guest module needs
are still started at startup, and Linux and macOS are unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:57:24 +03:00
Adrià 509cad049d Merge pull request #7707 from milescoviello/fix/uint-direct-point-sampler
fix(shader): point-filter direct samplers paired with unsigned integer images
2026-10-20 02:57:22 +02:00
xXPBSXxandClaude Sonnet 5.5 49940998cd docs(libc): list the lookup order and the backslash separator among the rename dot component differences
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:57:14 +02:00
xXPBSXxandClaude Sonnet 5.5 9899ba0fa2 fix(libc): fail a rename of a path that ends in a dot component with EINVAL
rename and sceKernelRename resolved "dir/." to "dir" and renamed the directory. FreeBSD 11.4's lookup fails a last component of "." for DELETE and RENAME with EINVAL, for the source and the destination alike. Check the guest string before it is resolved: a last component of "." (also under trailing slashes) fails with EINVAL when its parent exists, ENOENT when it does not and ENOTDIR when it is not a directory.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:57:14 +02:00
babyhuey b28198008c feat(libkernel): implement sceKernelOpenEventFlag
Return the handle of an event flag this process created under the
given name, or ENOENT. Twispero opens the shell's
SceShellCoreUtilAppFocus flag at start-up and treats a failed open as
unknown focus.
2026-10-19 20:52:47 -04:00
Dean a569f47cb7 Merge pull request #7876 from ErenYeager1836/feat/libc-export-tgammaf
feat(libc): export tgammaf float math function
2026-10-20 13:52:11 +13:00
xXPBSXxandClaude Sonnet 5.5 1ab777e257 docs(libc): list the backslash separator and the sceNgs2ParseWaveformFile exception among the path name length differences
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:47:58 +02:00
xXPBSXxandClaude Sonnet 5.5 1ccbbc2faa fix(libkernel): fail chflags on an oversized path name with ENAMETOOLONG instead of throwing
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:46:54 +02:00
xXPBSXxandClaude Sonnet 5.5 6bc6c444e0 fix(libc): fail an oversized guest path name with ENAMETOOLONG
stat, open, mkdir, rename and the other calls that resolve a guest path answered ENOENT (or EIO for rename) for a name longer than 255 bytes or a path of 1024 bytes or more, because the host path just did not exist. FreeBSD 11.4's namei fails a component above NAME_MAX and a path of MAXPATHLEN bytes with ENAMETOOLONG. Check both limits on the guest string before it is resolved; FilesystemError already maps the error to 63.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:46:53 +02:00
xXPBSXxandClaude Sonnet 5.5 d5d17788ae fix(libkernel): fail a socket call on an open non-socket descriptor with ENOTSOCK
bind, listen, accept, connect, shutdown, getsockname, getsockopt, setsockopt, send, recv and the other calls that look up a guest socket answered EBADF for a descriptor that is open but not a socket, for example a pipe end. FreeBSD 11.4's getsock_cap fails these with ENOTSOCK and keeps EBADF for a closed or invalid descriptor.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:44:17 +02:00
xXPBSXxandClaude Sonnet 5.5 6cbfe3e4c5 docs(debt): say that the RX 6400 device loss of the CMASK clear pass is not reproduced
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:42:50 +02:00
RengundomandClaude Opus 5.5 9abcd45861 fix(trace): fail a benchmark file replace from the move, not the stream
The Windows build failed agc_performance_trace: ReplaceGzipFile made the
write fail by putting a directory at <name>.tmp, so the std::ios_base::failure
came out of libstdc++'s ofstream and could not unwind to the test's catch on
Windows.

The test now blocks the move instead, with a directory at the destination:
MoveFileExW (or rename) fails and ReplaceGzip throws std::system_error from
the driver's own code. ReplaceGzip also removes its temporary file when the
move fails, and the test checks that the blocked destination, the missing
temporary file and the other benchmark file are as expected.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 19:42:04 -05:00
Adrià 340247a083 Merge pull request #7695 from jotitadev/fix/macos-write-watch-unfair-mutex
fix(libc): let the macOS write watch fault handler go first
2026-10-20 02:38:47 +02:00
Adrià 1b0ff1e153 Merge pull request #7673 from tibzejoker/perf/fold-unused-bits
perf(shader): fold masks, shifts and field extracts through bits they do not use
2026-10-20 02:35:37 +02:00
xXPBSXxandClaude Sonnet 5.5 a957b8c106 test(libkernel): check and close the IPv6 socket of guest_socket_address_length
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:30:55 +02:00
xXPBSXxandClaude Sonnet 5.5 cd09badb2b fix(libkernel): fail a short or long socket address like FreeBSD
bind, connect and sendto answered EFAULT for an address length below 2 and EAFNOSUPPORT for an AF_INET address below 16 or an AF_INET6 address below 28 bytes. FreeBSD 11.4's getsockaddr fails a length below 2 with EINVAL and above SOCK_MAXADDRLEN (255) with ENAMETOOLONG, and the protocols compare the length with sizeof(struct sockaddr_in) or sockaddr_in6 and fail with EINVAL.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:30:55 +02:00
xXPBSXxandClaude Sonnet 5.5 89b04548c8 fix(tools): name the failing command when pr_overlap cannot run git or gh
pr_overlap.py let a failed git or gh call escape as a bare
CalledProcessError traceback that names the command but drops the
error text, so a mistyped --base such as upstream/main (refs/heads/upstream/main
does not exist) read as an unexplained crash. The script now exits with
"pr_overlap: <command> failed with exit code N: <stderr>".

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 02:30:31 +02:00
hamb3r 47591f2e92 docs(debt): update sceLibcBacktrace technical debt entry for Windows 2026-10-20 03:28:37 +03:00
hamb3r 1819d3965e test(libc): enable guest_backtrace on Windows and cover path buffer growth 2026-10-20 03:28:30 +03:00
hamb3r 6fb1b56526 feat(libc): implement sceLibcBacktraceSelf and GetBufferSize on Windows 2026-10-20 03:28:24 +03:00
hamb3r ba1a85ebb3 feat(libc): add Windows module path helper for backtrace resolution 2026-10-20 03:28:17 +03:00