Commit Graph
20967 Commits
Author SHA1 Message Date
Dean 940c298d51 Merge pull request #9698 from mazen320/feat/libc-num-put-vtable-size
fix(libc): size the num_put facet vtable to 112 bytes
2026-10-27 18:20:54 +13:00
Dean 9260711d01 Merge pull request #9694 from Tamalero/fix/agc-metadata-pass-coverage-without-metadata
fix(agc): require full coverage only for metadata pass targets with CMASK or DCC keys
2026-10-27 18:20:38 +13:00
Dean ecf89d91a1 Merge pull request #9654 from rooklz/test/macos-terminate-message
test(libkernel): throw through the guest runtime on macOS in the host standard error test
2026-10-27 18:20:20 +13:00
Dean 8aa1f9ef7f Merge pull request #9344 from MarcZX10/codex/macos-backtrace-support
feat(libc): restore macOS guest backtraces
2026-10-27 18:20:03 +13:00
Dean 27310a12eb Merge pull request #9282 from MarcZX10/codex/npmanager-waitasync-unimplemented
feat(libSceNpManager): add explicit sceNpWaitAsync stub
2026-10-27 18:19:42 +13:00
Dean 5023cd5a25 Merge pull request #9263 from imellag/fix/libkernel-macos-guest-unwind-info
fix(libkernel): report unwind information for guest and host addresses on macOS
2026-10-27 18:19:28 +13:00
Dean 1764e016f8 Merge pull request #9050 from EagleBearerYS/fix/agc-moved-buffer-render-target-cut
fix(agc): size a moved read-only buffer at the render target as its build does
2026-10-27 18:19:07 +13:00
Dean a0cf4c4d23 Merge pull request #8913 from Celegans12/perf/agc-pool-exact-size-hit
perf(agc): prefer a pooled buffer of the requested exact size
2026-10-27 18:18:50 +13:00
Adrià 22782795a9 Merge pull request #10853 from krishalivaibhav/fix/macos-open-create-directory
fix(libkernel): refuse O_CREAT on an existing directory with EISDIR on macOS
2026-10-27 06:18:28 +01:00
milescovielloandClaude Opus 5.5 bf97894bc8 perf(shader): reuse the evaluator's requirement list across values
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 05:15:23 +00:00
robbie d995f6223d fix(codegen): reject 16-bit branches into a rewritten instruction
Operand-size-prefixed (0x66) relative branches are classified as having
no branch target, so the AdjustedDelta check never saw them. The
truncated-branch guard only checked whether the branch and its target
move apart, so `66 EB 01 B8 11 22 33 44 C3` rewritten at offset 3 was
accepted and the branch landed in the middle of the new bytes.

Reject a truncated branch whose target is inside the cut, and run that
check for same-length rewrites too, matching the rel8/rel32 path.
2026-10-27 05:15:16 +00:00
Adrià d093ea9ced Merge pull request #10767 from Ragbie/fix/recvmsg-after-shut-rd
fix(libkernel): drop the data a socket held before shutdown(SHUT_RD) in every receive path
2026-10-27 06:14:18 +01:00
Adrià FranchandClaude Sonnet 5.5 511735840c fix(libkernel_sys): keep the owner check of chown, lchown and fchownat as on main
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 06:14:13 +01:00
Adrià FranchandClaude Sonnet 5.5 7554d2095c fix(libkernel): keep swapcontext's finish helper externally linked
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 06:14:13 +01:00
Adrià FranchandClaude Sonnet 5.5 fb1474f032 test(libkernel_sys): drop assertions that valid sched_setscheduler and sigreturn calls throw
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 06:14:13 +01:00
Yunus Shaikh fb3841479b fix(libkernel_sys): keep the owner check of chown, lchown and fchownat unmodelled
oneandonlydean's review of #8457 settled that the guest is modelled as
root, and FreeBSD 11's root keeps the privilege to change a file's
owner, so EPERM for another owner has no source until a console
measurement shows it. chown, lchown and fchownat go back to
RequireGuestOwner after the path lookup, as fchown does, and their debt
entry is main's again. The EPERM assertions go without throw assertions
in their place; the lookup error checks stay.
2026-10-27 06:14:13 +01:00
Yunus Shaikh 8f007d234a feat(libkernel_sys): implement sigreturn
sigreturn applies FreeBSD 11's amd64 sys_sigreturn checks:
- EFAULT for a null context;
- EINVAL for unknown mc_flags, and for rflags bits outside
  PSL_USERCHANGE that differ from the current flags;
- set_fpcontext's FPU format and ownership cases.
It then restores the context through the path setcontext uses, which
now lives in RestoreContext. A non-user %cs and an extended FPU state
still throw.
2026-10-27 06:14:13 +01:00
Yunus Shaikh 51849e7e41 feat(libkernel_sys): implement sched_setscheduler for the calling thread
FreeBSD 11's sys_sched_setscheduler checks: a null parameter is EFAULT,
another process is ESRCH and an unknown policy is EINVAL. Pid 0 sets the
calling thread through scePthreadSetschedparam. Values that call
rejects, and the guest's own pid, whose first thread is not tracked,
still throw.
2026-10-27 06:14:13 +01:00
Yunus Shaikh 788a87cb8e feat(libkernel_sys): fail chown, lchown and fchownat with EPERM for another owner
An owner or group other than the guest's (0) or the unchanged value
returns EPERM after the path lookup, as FreeBSD 11's chown(2) does for
a caller without the superuser privilege. That is the answer #8457
gives for fchown. A lookup error still comes first.
2026-10-27 06:14:13 +01:00
Adrià e3a2b3846d Merge pull request #10741 from camezaro-intc/feat/libkernel-sys-cpuset
feat(libkernel_sys): implement cpuset, cpuset_getid and cpuset_setid
2026-10-27 06:13:49 +01:00
milescovielloandClaude Opus 5.5 369011996c docs(libSceAvPlayer): note that six titles pass all four allocator callbacks
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 05:12:31 +00:00
Adrià 4297464b12 Merge pull request #9402 from janzezno/perf/incremental-import-refresh
perf(agc): re-check only the host imports a registry change can reach
2026-10-27 06:10:48 +01:00
Adrià 35feb94580 Merge pull request #10801 from EagleBearerYS/feat/systemservice-running-app-identity
feat(libSceSystemService): answer the rest of the running title's identity
2026-10-27 06:07:36 +01:00
Adrià 2e85f47aef Merge pull request #10659 from imellag/fix/libc-elf-pf-r-macos
fix(libc): define PF_R beside PF_X and PF_W for the macOS ELF types
2026-10-27 06:04:30 +01:00
akkadbakkad89andDevin 5e1b8849d2 fix(libScePsml): answer console-measured MFSR enable flags and Context1300 size check
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-27 10:32:53 +05:30
Jota 846e298923 fix(agc): keep each device's resolver for deferred destruction passthrough
The previous commit replaced the process-wide resolver when a device
was set up after the last deferred device went, so a wrapper returned
for the earlier device, which may still be alive until vkDestroyDevice,
passed through to the later device's loader. The registry now keeps the
resolver of every device it set up and passes each device's calls
through its own one; the most recent resolver is used only for devices
it never set up. Two live devices with different resolvers are still
refused.
2026-10-27 01:59:50 -03:00
roboterspinne 3123f92e7b fix(relinker): reject --lazy-binding for macOS output
MacOsMachOPatcher::Patch discarded its lazyBinding argument, so a
module-free `--macos --lazy-binding` conversion exited 0 and wrote the
same eagerly bound Mach-O as a run without the flag. The Mach-O writer
puts every import in the LC_DYLD_INFO_ONLY bind stream and leaves the
lazy_bind stream empty, with no __la_symbol_ptr or stub helper, so the
macOS target cannot honour the flag. The patcher now throws "macOS
target does not support --lazy-binding", in the form of its
--windows-diagnostics check, so such a conversion exits 2 and writes no
output. Conversions with bundled modules were already refused by the
guest module builder.
2026-10-27 05:59:10 +01:00
al3w0f205 3ad3755487 test(libSceVrSetupDialog): cover reopen and null parameter behavior in finished dialog state 2026-10-26 23:54:48 -05:00
Daniel Castrillon c39b17134c fix(shader): bound runtime formatted-store expansion 2026-10-26 23:52:19 -05:00
Adrià 0a570f617d Merge pull request #10660 from imellag/build/libkernel-elf-fixture-options-not-apple
build(libkernel): keep the ELF-only module fixture options off Apple
2026-10-27 05:51:03 +01:00
MarcZX10 bef1faf9f5 test(libkernel): dup2 onto a descriptor an equeue watches while it waits
Next to CloseWhileWaitingOnFile: 2000 rounds of watching a regular file and replacing its descriptor with dup2 while another thread waits on the queue.
2026-10-27 04:46:00 +00:00
MarcZX10 ea4eaeae42 fix(libkernel): remove a watched descriptor's events before dup2 takes its positioned lock on Windows
dup2 called EqueueDescriptorClosed(to) while holding the positioned-transfer lock of the descriptor, and the in-flight measurement it waits for needs that lock for its sceKernelLseek, so dup2 onto a watched descriptor deadlocked. The events are removed first, before the lock is taken.
2026-10-27 04:46:00 +00:00
MarcZX10 9b9f9b4af8 fix(libkernel): retire an in-flight file measurement on every exit with a guard
MeasureFiles registered the descriptors it measures in m_measuring and removed them only on the normal path, so an exception between unlocking and relocking left them there and every later RemoveDescriptorEvents for one of them waited forever. Both vectors are reserved before anything is registered, and a guard owns the registration: on every exit it relocks if needed, removes the entries and notifies.
2026-10-27 04:46:00 +00:00
MarcZX10 de2b96d8bd fix(libkernel): wait for an in-flight file measurement before closing a watched descriptor 2026-10-27 04:46:00 +00:00
Adrià f5e3dc5e3b Merge pull request #10676 from imellag/fix/agc-libcxx-build-macos
fix(agc): build the pending image snapshot and the queued index read order test with Apple's libc++
2026-10-27 05:45:00 +01:00
Adrià 6856adae6e Merge pull request #10655 from thuanquang/perf/import-watched-parallel-hash
perf(agc): hash the pages of an import window on several threads
2026-10-27 05:44:55 +01:00
Adrià ddd72f488b Merge pull request #10628 from maximilianfv/fix/libscenet-macos-datagram-fionread
fix(libSceNet): count only datagram bytes in sceNetIoctl FIONREAD on macOS
2026-10-27 05:38:46 +01:00
Adrià 50a28679c4 Merge pull request #10528 from akkadbakkad89/fix/direct-remap-block-index
fix(libkernel): walk direct-memory physical ranges by block, not page
2026-10-27 05:35:38 +01:00
Felipebmaitan f75e51c5d4 test(libkernel): cover cancellation during entry-return teardown 2026-10-27 01:30:15 -03:00
Felipebmaitan 152155e484 fix(libkernel): isolate AIO controls in the registry test target 2026-10-27 01:30:11 -03:00
Adrià c3ee5a4253 Merge pull request #10590 from morten-holm/fix/macos-fiber-context-write-watch
fix(fiber): keep fiber context stacks out of the write watch on macOS
2026-10-27 05:29:29 +01:00
xXPBSXxandClaude Sonnet 5.5 ad95db1032 docs(agc): note the 0x1aa01 DB_ALPHA_TO_MASK stop of PPSA12361
PPSA12361 reaches DB_ALPHA_TO_MASK 0x1aa01 on main 74acfad65b on an RTX 4080 SUPER and an RX 6400. It is the accepted 0xaa01 with bit 16 also set, and radeonsi never programs that combination. Its semantics are not measured, so the path keeps throwing; the entry records it.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 05:24:30 +01:00
milescovielloandClaude Opus 5.5 d31f194c9c test(agc): keep the DMA data patch checks to valid packets
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 04:24:02 +00:00
Felipebmaitan e44cc5d463 chore: merge current main for AIO review fixes 2026-10-27 01:23:42 -03:00
milescovielloandClaude Opus 5.5 bcb3df7352 docs(agc): note how seven titles call sceAgcDebugRaiseException
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 04:22:34 +00:00
milescovielloandClaude Opus 5.5 8c8a695e64 docs(libSceHttp): note how two titles call sceHttpParseResponseHeader
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 04:21:59 +00:00
Yunus Shaikh 30d2ca3492 fix(libScePad): keep presses from before a capture out of the intercepted reads
A press published before the keyboard captured the pad stayed in the
read latch and in the sample queue. The first ReadState after the
handoff returned it beside the Intercepted bit, and Read drained the
queued samples from before the capture unmasked. Clear both when a
sample starts the capture, so every read while it lasts holds only the
Intercepted bit.

Found by MarcZX10's review.
2026-10-27 05:20:10 +01:00
Yunus Shaikh b4d2f7a7f9 docs(debt): record the open IME keyboard questions 2026-10-27 05:20:10 +01:00
Yunus Shaikh dc209521ed feat(agc): draw the system keyboard over the presented frame 2026-10-27 05:20:10 +01:00
Yunus Shaikh 2a3cd39882 feat(libSceVideoOut): hand the pad to an open keyboard and hold back the game's reads 2026-10-27 05:19:49 +01:00