Commit Graph
20967 Commits
Author SHA1 Message Date
Adrià 4007c64f1e Merge pull request #8406 from thuanquang/docs/debt-interp-f16-lavapipe
docs(shader): drop the stale lavapipe skip from the 16-bit interpolation entry
2026-10-24 11:19:46 +02:00
Adrià 4b4f67aa1b Merge pull request #7953 from kiaramaldonado/docs/rosetta-m2-macos14
docs(relinker): record Rosetta instruction support on an M2 with macOS 14.8.9
2026-10-24 11:19:42 +02:00
Adrià 51e17a78bc Merge pull request #8403 from thuanquang/docs/debt-unnormalized-sampler-uses
docs(shader): list the samples unnormalized S#s are accepted for
2026-10-24 11:19:24 +02:00
Adrià 1618d6602e Merge pull request #8401 from thuanquang/docs/debt-descriptor-pool-lavapipe
docs(agc): say that only lavapipe frees descriptor sets individually
2026-10-24 11:18:46 +02:00
jacob6769 e599306514 Merge remote-tracking branch 'origin/main' into fix/libressl-digest-version-paths
# Conflicts:
#	docs/dev/debt/libSceLibreSsl.md
2026-10-24 18:18:03 +09:00
Bram910 4866d9e976 fix(io): avoid allocating the entire file prefix limit 2026-10-24 11:15:05 +02:00
Maximilian FleckensteinandClaude Opus 5.5 7ce21df27a fix(tests): compare the enabled exception query with the environment the host keeps
CheckEnabledExceptions writes x87 and MXCSR states with some SSE
exceptions unmasked, calls fegetexcept, and expects the environment
afterwards to equal the state it wrote. Under Rosetta 2 MXCSR keeps its
six exception masks set, as CheckTraps already allows for, so whenever
the test unmasks an SSE exception the state read back differs from the
one written, and the check failed although fegetexcept changed nothing.
Compare with the environment read back right after the write instead;
on other hosts the two are the same.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 06:14:51 -03:00
Adrià FranchandClaude Sonnet 5.5 387f069744 chore(libkernel): drop code comments from the kqueue tests and move the timer debt line off the section end
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-24 11:13:43 +02:00
Adrià Franch 252374a309 test(libkernel): tolerate a late wake in the disabled timer's second expiry 2026-10-24 11:13:43 +02:00
blawesom 681cfa1170 fix(libkernel): refuse a timer modify with fflags and pin the disabled timer's enable re-arm
- a timer change with EV_ADD unset and data 0 keeps the period; one that set
  fflags was silently ignored, where FreeBSD 11's kqueue_register copies it
  onto the note: it now throws with the other re-adds, waiting for the
  measured rules
- EV_ENABLE on a disabled timer reports the expiries missed while disabled in
  one step and keeps the note's phase, as FreeBSD 11's filt_timerexpire counts
  a disabled note and keeps its p_nexttime; TimerDisableEnableRearm pins it
  (5 serial runs and 3 rounds of 8 parallel copies pass)
- the next-wait abort from the review round was observed before main's
  5cbc46029b wait refactor and does not reproduce
2026-10-24 11:13:43 +02:00
blawesom 13934baea2 test(libkernel): gate the oneshot leak check on Linux and drop the superseded kevent tests
- RecycleBinDeleteWatchedFile now runs on Windows: its call moves out of the
  #ifndef _WIN32 block so the $Extend$Deleted$ path is exercised
- InotifyWatchCount and the two leak assertions gate on __linux__ (macOS has
  no /proc; the count was always 0 and the assertion vacuous)
- DisableAndEnable, Dispatch, ForceOneshot and StressTest drop with their
  main() calls: they belong to the superseded #6510 feature, and StressTest
  asserts strict arrival order across 4 threads with 1-2 ms sleeps (CI flake risk)
2026-10-24 11:13:43 +02:00
Nawasfadili 29a6fc7169 fix(libkernel): retire an EV_ONESHOT note through its delete callback and follow Windows $Deleted paths
Carries the additive pieces of #6510 onto main after its feature was
superseded by #5847: the deleteEventFunc invocation when an EV_ONESHOT
note retires in CollectTriggered, the Windows $Deleted path detection
in FileEvent (IsDeleted transitions), the relaxed timer-modify and
SetVnodeNotes guards, and the compatible kevent tests.
2026-10-24 11:13:43 +02:00
Dean 19cb822f84 Merge pull request #9033 from HQasper/claude/project-thread-w0s18y-aes
feat(libSceLibreSsl): implement the low-level AES functions
2026-10-24 22:13:35 +13:00
Dean ce965ddb7b Merge pull request #9153 from orezraey/fix/libkernel-dmem-available-measured-ps5
fix(libkernel): match sceKernelAvailableDirectMemorySize arguments to PS5
2026-10-24 22:13:10 +13:00
Dean 6a3901fb69 Merge pull request #10384 from JJenkx/windows/libc-strcasecmp-sign
fix(libc): return only the sign from strcasecmp and strncasecmp as titles' libc.prx does
2026-10-24 22:12:38 +13:00
Dean e9a551d6f4 Merge pull request #9857 from JJenkx/windows/libc-trigf-msun
fix(libc): compute sinf, cosf, tanf and sincosf with FreeBSD msun's algorithms, as titles' libc.prx does
2026-10-24 22:12:11 +13:00
Dean f7b1b3d694 Merge pull request #8876 from Ninot1Quyi/codex/protect-audit-cmake-inputs
fix(tools): protect CMake inputs from audit JSON output
2026-10-24 22:11:35 +13:00
Dean c077c7aaa1 Merge pull request #9907 from EagleBearerYS/fix/ir-dump-memory-offsets
fix(shader): print memory instructions' pc and offset in the IR dump
2026-10-24 22:11:05 +13:00
Dean bc559d4c98 Merge pull request #10342 from Filip722/submit/got-20261023
fix(relinker): preserve wrapped EIP-relative GOT accesses
2026-10-24 22:10:34 +13:00
Dean 538d97052e Merge pull request #10339 from Filip722/submit/rex-20261023
fix(relinker): honor the final REX prefix in call-site loads
2026-10-24 22:10:08 +13:00
JJenkx 88be59f990 test(agc): retain device-limitation wording for native clear skip 2026-10-24 05:09:38 -04:00
Adrià b64df51467 Merge pull request #8353 from MarrasFederico/docs/ajm-instance-signature-sources
docs(libSceAjm.native): credit the instance call signatures to the sources that give them
2026-10-24 11:08:39 +02:00
Adrià 2b2055fa4f Merge pull request #8281 from thuanquang/docs/f64-denormal-debt
docs(debt): correct stale f64 denormal and RSRC1 float mode statements
2026-10-24 11:06:19 +02:00
Adrià a228fd9548 Merge pull request #8276 from thuanquang/docs/volume-array-sample-debt
docs(shader): state the gap first for 2D-array samples through a 3D T#
2026-10-24 11:06:00 +02:00
Adrià FranchandClaude Sonnet 5.5 927fe074fe docs(relinker): note the M2 Max macOS 27.2 result
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-24 11:05:43 +02:00
Kiara Maldonado 47ff0109c9 docs(relinker): record Rosetta instruction support on an M2 with macOS 14.8.9 2026-10-24 11:05:35 +02:00
hypermistandClaude Opus 5.5 928729bdfb feat(libSceFont): report the glyph outline profile through the FreeType driver
sceFontGetFontGlyphsOutlineProfile reports the maxp maximum contours,
points, composite contours and composite points through the driver slot
at SysDriver+0x70, as libSceFont and libSceFontFt do in firmware 13.60.
A maxp older than 1.0 returns SCE_FONT_ERROR_NO_SUPPORT_FUNCTION, and a
failed call clears the output. Font-set records, which the console
merges over system font entries, still throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 22:02:15 +13:00
Karim Masmoudi ce6c2a0c66 fix(relinker): rewrite XSAVEOPT to XSAVE under --to-rosetta
XSAVEOPT raises an illegal instruction under Rosetta on an M5 running
macOS 27.0.1, as XSAVEC does, while XSAVE and XRSTOR save and restore
x87, SSE and AVX state in the standard format. The PS5's Zen 2 has
XSAVEOPT, so code built for it can use the instruction without a CPUID
check.

XSAVEOPT differs from XSAVE only in the init and modified optimizations:
it may skip writing state that is in its initial configuration or
unchanged since the last XRSTOR from the same area. XRSTOR restores the
same state from the area XSAVE writes, so --to-rosetta rewrites
XSAVEOPT (NP 0F AE /6, memory operand) to XSAVE (/4) in place, keeping
the prefixes and the operand, as RDSEED becomes RDRAND. CLWB (66 0F AE
/6), MFENCE, UMONITOR, UMWAIT and the Intel target are left alone.
XSAVEC is not converted: it writes the compacted format.

The converter tests check the rewrite for the plain, REX.W,
RSP-relative, extended-base, RIP-relative and FS-relative forms, check
that the neighbouring 0F AE encodings are not taken, and execute the
rewritten XSAVEOPT64 followed by XRSTOR on YMM3 in the x86-64 build.
The --to-rosetta integration test now covers XSAVEOPT as well.
2026-10-24 11:01:44 +02:00
Adrià FranchandClaude Sonnet 5.5 e1fea2ebc8 fix(relinker): drop stray blank line and document the moving-branch guard
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-24 10:58:12 +02:00
Yaash Singhh f5fbf2f98d fix(relinker): rebase truncated branch guard onto current main 2026-10-24 10:58:00 +02:00
xXPBSXxandClaude Sonnet 5.5 6558457483 test(libc): print the host time zone values when a POSIX-form zone offset differs on Windows
The CI run of this branch reports PST8PDT at 995198400 with offset -28800 and daylight 1 where -25200 is expected. The failure message now also prints the host's _get_timezone, _get_dstbias and the host tm_isdst, so the next run shows whether the runner's C runtime leaves the daylight bias at 0. The checks themselves are unchanged.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-24 10:52:50 +02:00
Federico Marras aff93896ca Merge remote-tracking branch 'origin/main' into feat/np-matching2-contexts
# Conflicts:
#	core/libs/CMakeLists.txt
#	docs/dev/debt/libSceNpSignaling.md
2026-10-24 10:51:43 +02:00
Dragos Negoita 79fef78d01 fix(relinker): honor prefixes in the syscall number byte walk
The raw-byte walk behind the refusal message ignored the prefixes of the
constant rax loads it recognizes. mov r8d, imm32 (41 B8) and
xor r8d, eax (41 31 C0) reported the immediate or zero as the syscall
number, xor ax, ax (66 31 C0) reported a zeroed rax, and mov r8b, imm8
(41 B0) misaligned the walk so an established number was not reported.

An active REX prefix is only the byte immediately before the opcode, and
a REX byte earlier in the prefix run is dead, so 41 66 B8 is a
mov ax, imm16 with one dead byte in front. The B8 arm accepts a REX
without W or B, since rex.R and rex.X do not change the register, and
rejects an operand-size override; the xor arm rejects a 16-bit pair and
the REX bit that extends the destination, B for the 31 form and R for
the 33 form; the B0 arm treats REX.B as a different register and walks
past the three bytes; the 66 B8 arm keeps the dead REX byte in the walked
span. Test the reported and skipped byte patterns on every target.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <[email protected]>
2026-10-24 11:48:45 +03:00
thuanquang b58a21d9f4 Merge commit 'd36311d661' into fix/linear-target-import-creation
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-10-24 15:47:17 +07:00
Federico Marras 41d4640c06 fix(libSceNetCtlAp): clear the callback id when registration slots are full 2026-10-24 10:45:41 +02:00
thuanquangandClaude d36311d661 fix(agc): keep a drawn linear target's draws per 64 KiB block over a direct write's completion stamp
A direct write with completion work, recorded before draws into a resident
linear target, stamps the target's memory again when its batch completes.
The keep rule moved the whole image past that stamp only when nothing in
the image had changed since its generation, so a CPU store anywhere else
in the target, made before the completion, dropped every draw in the
direct write's range at the next store.

For a drawn target, when the whole-image check fails, the stamped 64 KiB
blocks are now checked one by one. A block with no change since the
image's generation is recorded as kept at the stamp (completionKept), and
writeBackLayers and the unwatch path read that per-block generation, so
the draws there are stored while a block the CPU wrote keeps the CPU's
bytes outside the drawn rectangles. Whole-image keeps of drawn targets are
rechecked for CPU stores after the stamp and fall back to the per-block
keep. The per-block values are cleared when the layer starts a new
pending period.

agc_driver_linear_target_direct_write_completion gains the ordering from
review: a fill over block 0, a draw into block 0, a CPU store into block 1
while the fill's completion is still pending, then the label, on
write-watched and unwatched memory.

Co-Authored-By: Claude <[email protected]>
2026-10-24 15:45:26 +07:00
Dean Galvin 4a6e013eed Merge main into feat/libc-feupdateenv 2026-10-24 21:43:01 +13:00
Dean Galvin 7c52c8728a Merge main into feat/libc-feholdexcept 2026-10-24 21:43:00 +13:00
Dean Galvin b0b291be0b Merge main into feat/libkernel-sys-underscore-openat 2026-10-24 21:42:59 +13:00
Dean Galvin 161b602a45 Merge main into feat/prx-declare-ps5-3.20-exports-tier3 2026-10-24 21:42:57 +13:00
954a8e1a9d fix(libkernel): append positioned writes on an O_APPEND descriptor on macOS
macOS pwrite and pwritev write at the given offset even when the
descriptor was opened with O_APPEND. FreeBSD's vn_write appends to an
O_APPEND regular file whatever the offset and leaves the file offset
unchanged, and Linux pwrite appends too. On macOS, sceKernelPwrite,
pwrite, sceKernelPwritev, pwritev and the AIO write commands now append
such writes with writev and restore the file offset, as #8359 does on
Windows.

Co-authored-by: Himansh Raj <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 05:34:28 -03:00
f5dffcb12f fix(libSceSsl): keep the bundled mbedtls symbols out of libSceSsl's exports on macOS
On Linux and MinGW, --exclude-libs keeps the statically linked mbedtls
out of libSceSsl's dynamic exports. Apple's linker has no such option,
so on macOS libSceSsl.prx exported 930 mbedtls and 155 PSA symbols, and
libSceLibreSsl.prx 27 mbedtls symbols. A program that links its own
mbedtls can then bind to libSceSsl's copy, which allocates from
libSceSsl's own pool; guest_ssl_transport_kernel and
guest_ssl_transport_net fail that way. Build the mbedtls libraries with
hidden visibility on macOS instead.

Co-authored-by: Ycaro Gabriel <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 05:34:26 -03:00
Federico Marras 1723ade7ba fix(tools): reject dynamic tables without DT_NULL in import_audit 2026-10-24 10:26:43 +02:00
orezraeyandClaude Opus 5.5 22b120c185 Merge main into docs/libkernel-sem-timedwait-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 05:24:29 -03:00
Adrià Franch a5e60928ec test(libc): fix expected length of the printf unknown conversion case 2026-10-24 10:22:18 +02:00
MarcZX10 a3e41499be fix(libc): match title printf conversions on Windows 2026-10-24 10:22:15 +02:00
MarcZX10 11fc4b3e1a fix(libc): resolve printf rebase conflicts 2026-10-24 10:22:15 +02:00
MarcZX100 87cf00de0d test(libc): drop printf formats now supported on main 2026-10-24 10:22:15 +02:00
MarcZX100 45bfa20e43 test(libc): separate Windows printf conversion cases 2026-10-24 10:22:15 +02:00
Hussein Kadhim b331e3a86d fix(libc): keep throwing for printf conversions FreeBSD supports but Windows does not
The unknown-conversion branch printed %m, positional arguments, the grouping
flag and modifiers in an unusual order as literal characters. Only characters
FreeBSD's vfprintf prints as themselves are now printed.

(cherry picked from commit 0106858d3d39f83eb2234a5f581d5bf5260521a0)
2026-10-24 10:22:15 +02:00