Commit Graph
6138 Commits
Author SHA1 Message Date
Dean 65e2c1af6c Merge pull request #1150 from SkippingCheeto/docs/fix-build-guide-link
docs(contributing): fix build instructions link
2026-10-08 18:22:52 +13:00
Dean e1aca88408 Merge pull request #1144 from AchrafReyani/refactor/psml-debug-name-stubs
refactor(libScePsml_debug): name the Mfsr stubs the NID database resolves
2026-10-08 18:22:39 +13:00
Dean 461ab16f0d Merge pull request #1104 from jeffrey12cali/docs/libs-target-not-default
docs(build): say that the libs target is not part of the default build
2026-10-08 18:22:17 +13:00
Dean d71cc683f2 Merge pull request #1397 from hugodearaujo/fix/rtc-parse-rfc3339-hardware
fix(rtc): match sceRtcParseRFC3339 to the console
2026-10-08 18:22:02 +13:00
Dean 6ad4124a89 Merge pull request #1259 from krishnaraya4/test/agc-skip-without-float64-shader-clock
test(agc): skip the f64 and shader clock execution tests on devices without the feature
2026-10-08 18:21:48 +13:00
Dean dad6e96acd Merge pull request #1234 from hashaam1217/test/windows-tls-cases-on-linux
test(relinker): run the Windows TLS cases on Linux x86-64
2026-10-08 18:21:34 +13:00
Adrià c6bb7c1025 Merge pull request #904 from merwie/fix/kernel-module-info-for-unwind
fix(libkernel): report guest unwind tables in sceKernelGetModuleInfoForUnwind
2026-10-08 07:21:21 +02:00
Dean 2342bd3f76 Merge pull request #1214 from polysius/fix/progress-pck-variants
fix(tools): stop counting IMAGE_*_PCK2/PCK4 as decoded instructions
2026-10-08 18:21:07 +13:00
Dean 0f39363fe0 Merge pull request #1210 from johnmaia/test/agc-recorder-real-gpus
test(agc): run the recorder tests on AMD and Intel GPUs
2026-10-08 18:20:53 +13:00
Dean 637fb3e354 Merge pull request #1187 from johnmaia/test/agc-bda-device-ctest
test(agc): run agc_driver_bda_device_tests under ctest
2026-10-08 18:20:39 +13:00
Dean a8279c01ac Merge pull request #1172 from emaurel/fix/system-font-test-windows
test(font): move the console font aside instead of deleting it while its face is mapped
2026-10-08 18:20:25 +13:00
Dean d521209a3a Merge pull request #1161 from krishnaraya4/docs/build-windows-ca-bundle
docs(build): name the CA bundle the WinLibs CMake needs for the FFmpeg download
2026-10-08 18:20:11 +13:00
Dean d0b7ff98e9 Merge pull request #1149 from eliasbruno124-dev/fix/json-callback-export
fix(json2): support null-access callback spelling
2026-10-08 18:19:57 +13:00
Dean b01673ac0a Merge pull request #1129 from AaravMehta-07/test/exception-runtime-release
test(libc): keep exception runtime assertions enabled in Release
2026-10-08 18:19:44 +13:00
Dean 8180dc5b9c Merge pull request #1118 from TideOPL/feat/pad-is-remote-controller
feat(libScePad): implement scePadIsRemoteController
2026-10-08 18:19:30 +13:00
Dean 66b2895036 Merge pull request #1106 from orbz22/test/register-windows-exception-tests
test(libc): run windows_exception_tests in ctest
2026-10-08 18:19:11 +13:00
Dean e0924e28f1 Merge pull request #1160 from orbz22/feat/font-glyph-define-attribute
feat(font): accept sceFontGlyphDefineAttribute as a silent stub
2026-10-08 18:19:01 +13:00
Dean fd2eb90c69 Merge pull request #1158 from orbz22/feat/ppsa01325-missing-exports
feat(libs): provide the exports PPSA01325 imports that no library has
2026-10-08 18:18:53 +13:00
Dean 1e05e4f953 Merge pull request #1096 from kjhq/feat/libscenet-in6addr
feat(libSceNet): export in6addr_any and in6addr_loopback
2026-10-08 18:18:40 +13:00
Dean 10cb0d208e Merge pull request #1092 from kjhq/feat/libscehttp2-async
feat(libSceHttp2): complete asynchronous requests through the kqueue option
2026-10-08 18:18:26 +13:00
Gjon Gojcevic 9ebc907beb fix(agc): render 16_16_16_16 color targets with reversed component orders
Accept COMP_SWAP STD_REV and ALT_REV on 16_16_16_16 color targets and
map them onto RGBA16 with the same export component mappings used for
8_8_8_8. ALT on 16_16_16_16 is still refused.
2026-10-08 01:13:32 -04:00
Nahuel Genchi 0543e636ef test(agc): match the unreadable-code error and run the flip compute mode in ctest 2026-10-08 01:57:33 -03:00
popcoder565andClaude Opus 5.5 175846186a fix(libkernel): read the raise target's context before choosing APC delivery
SuspendThread returns before the thread has stopped, and GetThreadContext waits until it has. waitCount was read right after SuspendThread, so a thread that was leaving its wait could still decrement it and drain its APCs with NtTestAlert before QueueUserAPC queued the delivery, which then waited for an alertable wait that never came. The context is now read first, so waitCount is read from a stopped thread.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-08 00:53:58 -04:00
popcoder565andClaude Opus 5.5 c3f3cc849a test(libkernel): raise exceptions at a thread that keeps continuing SEH exceptions
The new phase's vectored handler continues every exception the thread raises, so the thread spends much of its time in NtContinue, where a redirect is lost unless the raise retries. Without the retry the phase hangs in every run; with it the test passes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-08 00:53:58 -04:00
Nahuel Genchi 5adac33c5b test(agc): run the PM4 asynchronous failure mode in ctest 2026-10-08 01:53:18 -03:00
raghav314andClaude Opus 5.5 dfa179f43f fix(relinker): write a bucketed hash table for Linux guest modules
The Linux guest module writer emitted DT_HASH with a single bucket, so
every symbol lookup that reached a guest module walked its whole symbol
table. Guest modules come first in the global scope, so each host prx
lookup paid that walk at load and on every lazy PLT call. Build the
standard SysV table from the final symbol names with one bucket per
symbol, as the console's modules ship it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-08 10:20:45 +05:30
Dean Galvin b4029887b4 fix(agc): guard the reported wait-timeout set against concurrent queues
waitMemory's timeout report keeps a function-local static std::set of the
addresses already reported and a static counter. Two queue workers whose
waits time out at the same time insert into the set concurrently, which
is a data race on a std::set and can corrupt the tree. The set and the
counter are now updated under a mutex.
2026-10-08 17:44:31 +13:00
Dean 5850a6cd11 Merge pull request #1374 from gjonn/feat/tts2-unavailable
feat(libSceTextToSpeech2): report the speech engine as unavailable
2026-10-08 17:39:02 +13:00
Dean 2d0c53b637 Merge pull request #1209 from ZekkJJ/codex/reject-leading-zero-param-json
fix(libkernel): reject leading-zero numbers in param.json
2026-10-08 17:30:13 +13:00
Dean cf3823dffe Merge pull request #1354 from gjonn/feat/bluetoothhid-no-devices
feat(libSceBluetoothHid): add Bluetooth HID with no devices attached
2026-10-08 17:30:03 +13:00
Dean 9ba908c202 Merge pull request #1356 from gjonn/feat/pad-open-ext-special
feat(libScePad): report special controllers as not connected in scePadOpenExt
2026-10-08 17:27:00 +13:00
Dean 893af87af0 Merge pull request #1353 from gjonn/feat/mbus-no-devices
feat(libSceMbus): add the device service with no devices attached
2026-10-08 17:26:49 +13:00
Dean 4c380ae382 Merge pull request #1196 from MathiasDevelopes/feat/libc-hypot
feat(libc): implement hypot and hypotf
2026-10-08 17:21:39 +13:00
Gjon Gojcevic 5b10200b1a fix(agc): render 8_8_8_8 color targets with reversed component orders
COMP_SWAP 2 and 3 store a four-component export as ABGR and ARGB from the
lowest bits. Render such targets as RGBA8 and permute the pixel shader's
exports through the existing component mapping (0x1b and 0x93), as the
one-component swaps already do. Blending into them throws: the alpha
factors would read the wrong export component.
2026-10-08 00:18:47 -04:00
popcoder565andClaude Opus 5.5 f8c1e0c64f fix(libkernel): keep sceKernelRaiseException redirects out of NtContinue
A raised exception redirects the target thread to a stub that runs the handler and returns through RtlRestoreContext. On Windows 10 (19045) RtlRestoreContext restores in user mode only when the context flags are exactly CONTEXT_FULL | CONTEXT_SEGMENTS (CONTEXT_XSTATE aside); for the CONTEXT_FULL | CONTEXT_FLOATING_POINT context it was given, it calls NtContinue. When the next raise suspended the thread inside that system call, NtContinue then replaced the redirected context with the one it was restoring, so the handler never ran although sceKernelRaiseException had returned 0. guest_raise_exception lost such a delivery to its busy thread in about one run in five and hung until the ctest timeout.

The context is now read with CONTEXT_SEGMENTS, so the handler returns through the user-mode restore, and a raise that finds the thread inside NtContinue or NtContinueEx (an APC or an exception handler returning) resumes it and suspends it again.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 23:48:16 -04:00
Amirtheshwaran Navaneethakrishnan 2de16aeba8 fix(tools): read and write UTF-8 in check_conventions regardless of the Windows code page 2026-10-07 23:40:48 -04:00
Dean a9ba39c927 Merge pull request #1258 from MathiasDevelopes/feat/audioout2-mastering-setparam
feat(libSceAudioOut): accept sceAudioOut2MasteringSetParam
2026-10-08 16:35:16 +13:00
Scott SchusterandClaude Opus 5.5 831ba5d298 fix(agc): accept RB and primitive-group tuning fields
Accept PA_SC_MODE_CNTL_0.ALTERNATE_RBS_PER_TILE, CB_COLOR_CONTROL.DISABLE_DUAL_QUAD
and VGT_SHADER_STAGES_EN.MAX_PRIMGRP_IN_WAVE on the vertex path. They tune how the
hardware distributes work between render backends and waves and do not change the
rendered result. Mesa sets all three on GFX10.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 22:32:42 -05:00
MGXAeandarena-agent 049539ac3d fix(nid): reject libraries that define symbol versions
The patcher rewrites .dynstr in place and reorders .dynsym for
.gnu.hash, but .gnu.version_d kept pointing at name offsets that the
rewrite had recycled: a library carrying symbol version definitions
came out with renamed or blanked version names while its symbols
still advertised a version.

No library in the build defines symbol versions, so fail on
.gnu.version_d during the section scan and leave the input untouched
instead of carrying version remapping that nothing exercises. The
test covers the rejection and that a library without version
definitions is still patched.

Co-authored-by: arena-agent <[email protected]>
2026-10-08 03:04:07 +00:00
Hashaam ZafarandClaude Opus 5.5 f91e329140 fix(agc): require the widest subgroup for compute programs wider than the device
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 19:37:02 -07:00
hugodearaujoandClaude Opus 5.5 56e4ee3565 fix(voiceqos): return the console's sceVoiceQoSInit argument errors
Measured on a PS5 (firmware 13.60) through dlopen of
libSceVoiceQoS.sprx: a null block, any size other than exactly 0x40000,
and an app type other than 0x20000000 or 0x10000000 all return
0x804E0902 without touching the block, instead of throwing. A second
initialization returns 0x804E0905, as prosper reads from the module.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 23:34:15 -03:00
overlordxrz-source 7ecf00c63b fix(libkernel): return EINVAL for thread stack sizes below 16 KiB 2026-10-07 22:31:44 -04:00
overlordxrz-source cd51d8b1bf refactor(relinker): read the executable's DT_NEEDED entries in one place 2026-10-07 22:31:35 -04:00
Gjon Gojcevic 8d1d430599 feat(libSceTextToSpeech2): report the speech engine as unavailable
sceTextToSpeech2Initialize fails so titles skip narration; the other imported exports throw.
2026-10-08 15:31:10 +13:00
Gjon Gojcevic 54ed8e7f9c feat(libScePad): report special controllers as not connected in scePadOpenExt
Add scePadOpenExt for special ports, which return DEVICE_NOT_CONNECTED because the host has no special controller, and the extended read and report exports, which throw.
2026-10-08 15:31:10 +13:00
Gjon Gojcevic cb00552dd6 feat(libSceBluetoothHid): add Bluetooth HID with no devices attached
Initialization and callback and device registration succeed, no device ever connects, and calls that need a device throw.
2026-10-08 15:30:58 +13:00
Gjon Gojcevic 10e5b0c33a feat(libSceMbus): add the device service with no devices attached
Initialization and termination succeed, no device events are reported and device queries return no entries.
2026-10-08 15:30:58 +13:00
Claude 2a253b376b fix(libc): raise FE_INVALID from hypotf for a signaling NaN with infinity
hypotf now widens both arguments to double and calls the double hypot.
The float-to-double conversion raises FE_INVALID for a signaling NaN and
quiets it, so hypotf(sNaN, inf) returns +inf with the invalid flag set in
either argument order, matching the PS5 libc routine. Before, MinGW UCRT's
hypotf returned +inf without the flag and glibc's returned NaN.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01Scr6DkuJDqiUcJHr9mJv6T
2026-10-08 02:27:31 +00:00
xsvm 2daa034e87 perf(relinker): write in-place --to-intel substitutions directly
Each in-place substitution went through X64InstructionRewriter::Rewrite,
which copies the whole code segment and decodes every instruction in it
to adjust references. The converter only accepts equal-length
replacements, so the adjustment is always zero and the copy and scan are
wasted: conversion time grew by one segment scan per substitution. Copy
the replacement bytes into the segment instead.
2026-10-08 10:19:39 +08:00
Dean 9619edff72 Merge pull request #1375 from gjonn/fix/guest-raise-exception-host-lock-race
test(libkernel): fix host-mutex handshake race in guest_raise_exception
2026-10-08 15:19:00 +13:00