Commit Graph
20967 Commits
Author SHA1 Message Date
Yunus Shaikh 8403d31744 test(libSceAppContent): drop two placeholder-throw checks
Below SDK 0x03500000, sceAppContentAddcontEnqueueDownloadSp and
sceAppContentAddcontShrink throw for a padded entitlement label. The
console accepts that input, so checks requiring the throw would fail
once the case is answered. The throw stays in the code, and the checks
from SDK 0x03500000 up stay.

Asked for in oneandonlydean's review.
2026-10-25 23:24:58 -07:00
xXPBSXx 7937aa3f90 Merge remote-tracking branch 'upstream/main' into rb_pr2i 2026-10-26 07:19:32 +01:00
camezaro-intc dcdd9c301e feat(libkernel_sys): implement cpuset, cpuset_getid and cpuset_setid 2026-10-26 00:19:31 -06:00
akkadbakkad89 779a42c119 fix(libSceNpGameIntent): return launcher error family and restore debt entries
sceNpAppLauncherLaunchApp returned the libSceNpGameIntent codes
0x80553802/0x80553804, but the firmware tail remaps the internal
launch library errors into the launcher family, so the export reports
0x80553A02 before initialize and 0x80553A04 on invalid arguments;
the tests now assert those values and the unrelated GameIntent
constants are untouched.

The two assertions that a valid launch call must throw until
implemented are removed; the production throw and its debt entry
stay, and the validation and lifecycle coverage is unchanged. The
debt file keeps the silent-stub, InitParamInit, InfoInit and
remaining unknown-export entries, updating only the launcher parts.
2026-10-26 06:19:12 +00:00
akkadbakkad89andDevin 81ede7deee feat(libSceNpGameIntent): recover sceNpAppLauncherLaunchApp validation
Recovers the 4.03 firmware signature (int32, const char*, const char*), the uninitialized and invalid-argument errors, the strnlen(0x2001) bound on the optional argument and the initialize/terminate flag. The launch itself still throws.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-26 06:18:14 +00:00
Yunus Shaikh 87d01722ce test(libScePad): stop requiring the unmodelled port types to throw
Port types 3, 4 and 16 are valid ones the console answers.
scePadResetLightBarAllByPortType still refuses them, but a test that
requires the refusal would fail once they are supported. The positive
and invalid-argument checks stay.

Asked for in oneandonlydean's review.
2026-10-25 23:17:56 -07:00
AZLisme 655bcd67c7 test(ajm): stop requiring AAC format placeholders to throw 2026-10-26 14:16:15 +08:00
Yunus Shaikh 6f3771820a fix(libSceNet): return -1 from sceNetConfigGetIfFlags for an interface number of 10 or more
Firmware 13.42's module looks the name up with sceNetGetIfName, which
has none past 9, then issues SIOCGIFFLAGS on the empty name. That ioctl
fails, and the call returns -1 with the flags untouched. Return the
same instead of throwing. Interfaces 1 to 9 still throw, and the test
no longer asserts that for 1 and 4, which the console answers from the
kernel.

Asked for in oneandonlydean's review, from BunnyFl's read of the
module.
2026-10-25 23:10:45 -07:00
gazaret 5c73281606 fix(libkernel_sys): declare uuidgen in the public header
Replace the placeholder uuidgen_nid_postfix(void) declaration in
libkernel_sys/include/Api.hpp with the uuidgen(store, count) signature and
declare the GuestUuid layout there. Uuid.cpp and its test include the
public headers instead of declaring the functions and the type locally.
2026-10-26 11:10:39 +05:00
Nikolay Polukhin a05498c099 feat(libkernel_sys): implement uuidgen
Generate version 1 UUIDs as FreeBSD 11's kern_uuidgen does: consecutive
timestamps from the guest CLOCK_REALTIME, a 14-bit clock sequence that is
randomised on first use and incremented when the clock has not passed the
last batch, and a random multicast node. A count outside 1 to 2048 fails
with EINVAL and a null store with EFAULT.
2026-10-26 11:10:39 +05:00
orezraeyandClaude Opus 5.5 f34c280578 Merge main into feat/videoout-composite-overlay
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 03:06:04 -03:00
camezaro-intc d4200caffc feat(libkernel_sys): implement kldfind, kldfirstmod, kldnext and kldunload 2026-10-25 23:58:13 -06:00
Jishnuraj07andClaude Opus 5.5 2b884749fa fix(pad): fail pad_sdl when SDL_NumJoysticks reports an error
SDL_NumJoysticks returns a negative value on error, which the host
controller check turned into exit code 77 and CTest reported as a
skip. A negative count now fails the test with SDL_GetError, and only
a positive count skips it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 11:26:25 +05:30
orezraeyandClaude Opus 5.5 59d248674f Merge main into docs/libkernel-select-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 02:55:33 -03:00
Yunus Shaikh 1f691a369e test(agc): build agc_private_collect_tests in a plain build
The target was added with EXCLUDE_FROM_ALL and nothing turned it back
on, so `cmake --build build` never built it, and a full ctest reported
agc_private_collect as Not Run. Declare it like the other test targets
in that block.

Found by thuanquang's review.
2026-10-25 22:51:36 -07:00
thuanquangandClaude Opus 5.5 a39a7d1f43 test(agc): keep the scissor-rows test's linear targets synchronous
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 12:49:29 +07:00
orezraeyandClaude Opus 5.5 757e90c8c5 test(libkernel): drop the setpriority group and user throw assertions
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 02:49:25 -03:00
akkadbakkad89 773db47261 fix(libSceNpCppWebApi): copy sources in the UserProfile intrusive-ptr helpers 2026-10-26 05:43:43 +00:00
akkadbakkad89andDevin d7ad433603 feat(libSceNpCppWebApi): cover the UserProfile models and remaining Common instantiations
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-26 05:43:43 +00:00
orezraeyandClaude Opus 5.5 b7b0f58eb0 test(libkernel): drop the semaphore attribute throw assertions
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 02:39:40 -03:00
Dean Galvin 42a75519e3 Merge branch 'main' into windows/libc-tanh-msun 2026-10-26 18:37:39 +13:00
Elie Helou 3c797c52ce fix(libkernel): reject destroyed rwlockattr getters 2026-10-26 07:27:09 +02:00
Dean 14c99b52ac Merge pull request #9007 from EagleBearerYS/perf/agc-library-lto-info-when-optimized
perf(agc): retain link-time optimization info only where a link is optimized
2026-10-26 18:26:44 +13:00
Dean 1eb66943ba Merge pull request #8615 from Lindamea1/fix/agc-stencil-replay-push-data
fix(agc): put a stencil replay shader's guest buffer offsets where its shader data is
2026-10-26 18:26:40 +13:00
Dean 426e1dbf2d Merge pull request #10174 from ntamas94/fix/agc-raw-shader-cache-eviction
fix(agc): keep hundreds of raw shader snapshots cached
2026-10-26 18:26:35 +13:00
Dean 3fcef220ca Merge pull request #10160 from EagleBearerYS/port/fable-fix-present-key-wait
perf(agc): wait for the display keys' writer before a present takes the device lock's time
2026-10-26 18:26:31 +13:00
Dean a3b6f688d8 Merge pull request #10338 from Filip722/submit/ir-20261023
perf(shader): avoid scanning the final IR operand use
2026-10-26 18:26:28 +13:00
Dean d043fc9faa Merge pull request #10047 from atharvjairath/feat/fiber-contextless-execution
feat(fiber): execute contextless fibers on the caller stack
2026-10-26 18:26:24 +13:00
Dean a0c85ea99b Merge pull request #10501 from harisibrar1/fix/pselect-pending-signal-eintr
fix(libkernel): return EINTR from pselect when its mask unblocks a pending signal
2026-10-26 18:26:20 +13:00
elie helou 8aa531d173 fix(libkernel): reject destroyed rwlockattr settype 2026-10-26 07:21:14 +02:00
elieh999 3d5e75ab39 fix(libkernel): reject mixed rwlockattr destruction 2026-10-26 07:20:47 +02:00
elieh999 e6a11ba6de fix(libkernel): preserve destroyed rwlock attributes 2026-10-26 07:20:28 +02:00
thepoppfish a45205c738 test(libc): cover concurrent stream status publication 2026-10-26 06:19:35 +01:00
Dean Galvin c968687b70 fix(libSceNpManager): declare sceNpWaitAsync in the public header
The definition already takes no arguments. The declaration sits once in Api.hpp after sceNpPollAsync.
2026-10-26 18:19:22 +13:00
battleblob1andClaude Opus 5.5 a668165c4b fix(recompiler): accept optional wave bodies of several blocks in stencil replay
MaskReplaySafety accepted an EXEC- or VCC-skipped body only when it was a
single block branching straight to the merge. Bodies with their own
branches (s_cbranch_execz around nested control flow) were refused.
optionalBody now takes the single-entry region of blocks reached from the
body before the merge: every block is entered only from the branch or
the region, none returns, nothing in it is exported or discarded, its
values leave only through merge phis, and every incoming value of a merge
phi equals the skipped value on inactive lanes. inactiveEquals follows
the region's own phis for that.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 05:15:22 +00:00
milescovielloandClaude Opus 5.5 8868e09624 fix(shader): bound the bytes the recompiler's result memos hold
Every shader source keeps up to 256 materialized results of
Recompile(request, capture) in its result memo, and as many patch
recipes in its masked memo, with no limit on their bytes. In Ghost of
Tsushima's opening the memos held about 500 MiB after 5 minutes and
kept growing, at a 13 % hit rate.

Each memo entry now counts the bytes its result's vectors keep (the
bindings' vectors included; the module is shared with the prepared
module cache), plus its patch recipe in the masked memo. A result held
by both tables counts once in each. Past a budget, 256 MiB unless
APS5_RESULT_MEMO_MB sets another (0 sets none), the least recently used
entries of both tables of all sources are dropped until three quarters
of the budget is left. The recency stamps come from one clock for all
sources and both tables so they compare across them. The profile line
also reports the trimmed and held entries and their MiB.

The trim takes its lock blocking and repeats, re-reading the bytes held,
until they are within the budget, so the insertion that pushed them
over has its trim run after any other; it stops when nothing is left to
drop.

SetResultMemoBudget and ResultMemoBytes let agc_shader_result_memo_budget
check that a memo over its budget keeps the most recently used results
and drops the oldest one, with the masked memo off. A one-shot hook
inside the trim (SetResultMemoTrimHook) lets
agc_shader_result_memo_budget_threads insert two results from other
threads after the trim has read the bytes held: the memo must still end
within its budget. agc_shader_result_memo_budget_masked, with the masked
memo on, checks that a first result counts its masked entry too and that
a trim empties the masked memo.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 05:04:18 +00:00
Dean Galvin 92db947130 Merge branch 'main' into feat/libc-thread-gaps 2026-10-26 17:41:29 +13:00
Dean Galvin 7461106f53 Merge branch 'main' into fix/libc-acoshf-domain-fenv 2026-10-26 17:40:43 +13:00
Dean 442c43a574 Merge pull request #10370 from JJenkx/windows/libc-rounding-quiet-snan
fix(libc): quiet signalling NaNs in trunc, ceil, floor and nearbyint as titles' libc.prx does
2026-10-26 17:38:52 +13:00
Dean a401865a1a Merge pull request #9269 from UnhealthyKraken/test/libc-crt-exit-lifecycle
test(libc): cover CRT exit and TLS cleanup lifecycle
2026-10-26 17:38:22 +13:00
Dean e5759e7ee6 Merge pull request #10524 from YossiYad/feat/kernel-sys-console-identity
feat(libkernel_sys): implement sceKernelIsCEX, sceKernelIsDevKit, get_authinfo and sceKernelGetOpenPsIdForSystem
2026-10-26 17:37:52 +13:00
Dean 3e235180d8 Merge pull request #9922 from UnhealthyKraken/feat/freetype-outline-borders
feat(freetype): implement system outline border queries
2026-10-26 17:37:23 +13:00
Dean 12df332811 Merge pull request #10412 from JJenkx/windows/libc-ctype-signed-char
fix(libc): accept signed char values in the ctype functions as titles' libc.prx does
2026-10-26 17:36:57 +13:00
Dean ae7629fd09 Merge pull request #10630 from LeandroLP23/test/libkernel-raise-in-system-call-flake
test(libkernel): keep the raise-in-system-call writer in guest code until each raise lands
2026-10-26 17:36:27 +13:00
harisibrar1andClaude Opus 5.5 d77777a94b feat(libSceLibreSsl): implement the SSL and SSL_CTX ex_data index registry as LibreSSL 2.5.4 does
SSL_get_ex_new_index and SSL_CTX_get_ex_new_index number their indices
per class from 0, SSL_get_ex_data_X509_STORE_CTX_idx allocates its
class-5 index once, and CRYPTO_cleanup_all_ex_data releases every class.
An allocation failure returns -1 with ERR_R_MALLOC_FAILURE queued.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 00:24:32 -04:00
al3w0f205 d23602540f test(libSceMbus): cover thread parameter reserved validation in sceDeviceServiceInitialize 2026-10-25 23:22:59 -05:00
al3w0f205 876bb5fde0 test(libSceSharePlay): cover uninitialized controller prohibition checks 2026-10-25 23:22:38 -05:00
harisibrar1andClaude Opus 5.5 60b5b9b7ab fix(libkernel): fail lseek on a pipe with ESPIPE for a negative offset on Windows
NativeLseek seeked first and only checked for a pipe when the host seek
succeeded, so a negative offset reached the guest as EINVAL from
_lseeki64. FreeBSD 11.4's kern_lseek returns ESPIPE for any seek on a
descriptor without DFLAG_SEEKABLE, so the pipe check now comes first.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 00:19:36 -04:00
Dean 9b197b6ce4 Merge pull request #10297 from al3w0f205/test/videoout-resolution-status-null-buffer
test(libSceVideoOut): cover null status buffer validation in sceVideoOutGetResolutionStatus
2026-10-26 17:18:12 +13:00
al3w0f205 2f6528bfdd test(libSceAudio3d): cover mix coefficients v2 argument validation 2026-10-25 22:55:50 -05:00