Commit Graph
20967 Commits
Author SHA1 Message Date
p3nicillinandClaude Opus 5.5 f685ee8720 fix(http2): trust the system CA list for HTTPS requests
Every libSceSsl context started without trust anchors, so a libSceHttp2
request without a verify callback failed the known-CA check. RetroArch's
updater, PS5LM and Porpoise all use version-3 templates over https://
without one. libSceSsl now parses /<sandbox word>/common/cert/CA_LIST.cer,
served by libkernel from the host trust store, once per process into its
own pool, and SslTrustSystemRoots_nid_no_patch links those roots after
the context's own authorities for one connection. The HTTP/2 transport
calls it after creating each connection.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 23:02:48 +00:00
dantdmdarealguy f8ddd30ce1 test(check-compile): keep slow syntax check cases within the CI time limit
test_library_directory_values_can_look_like_modes passed -L -E as mode
flags, so check_modes took the -E for a preprocessing mode and dropped -c.
Its control commands linked an executable with each compiler, which on
the Windows runner goes through link.exe; the case took about twice as
long as its -I -E counterpart and timed out in 6 Windows CI jobs. The
-L -E pair now goes through configure like the include directory case,
so the control only compiles. The command check_compile checks is the
same, since it drops -c.

test_response_options_compile_without_changing_build_outputs ran 30
check_compile invocations in one case. Its six response files are now
checked by three cases of two.
2026-10-27 16:45:03 -05:00
Adrià f759e165d9 Merge pull request #12116 from adriadam10/fix/main-posix-spawn-waiter
fix(main): keep the stopped spawn child alive until its continued status is read
2026-10-27 22:42:29 +01:00
AdriàandClaude Sonnet 5.5 db6d1c5dd2 fix(main): keep the stopped spawn child alive until its continued status is read
Run 40579197008 (main 771d8b5bf7) failed guest_posix_spawn. Under load the child
of CheckStoppedChild exits right after SIGCONT, so waitpid(WCONTINUED) reports the
exit instead of 0x13 (reproduced with 24 CPU spinners via ctest --repeat). The
child now sleeps 2 s after the stop.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 22:42:08 +01:00
Adrià f5fefb982c Merge pull request #11305 from joedeangelis533-bot/review/tessellation-depth-upstream-20261025
feat(agc): remap unsupported tessellation viewport depth ranges
2026-10-27 22:27:35 +01:00
Adrià e274546099 Merge pull request #11302 from Danigamer05/feat/libc-signed-max64
feat(libc): implement signed 64-bit maximum
2026-10-27 22:26:29 +01:00
Adrià 6d99bf4ccb Merge pull request #11300 from Danigamer05/feat/libc-signed-min64
feat(libc): implement signed 64-bit minimum
2026-10-27 22:16:40 +01:00
Adrià b9623a5c26 Merge pull request #11297 from mrfelek/perf/probe-f32-flush-nvidia
perf(agc): use the NVIDIA driver's f32 denormal flush when the startup probe matches
2026-10-27 22:09:23 +01:00
Adrià 46fe6f2437 Merge pull request #11358 from krishalivaibhav/fix/macos-posix-spawn-environ
fix(libSceLibcInternal): declare environ for the spawn test on macOS
2026-10-27 22:01:08 +01:00
Mohamed Malek Aifa 3ef5fc044b fix(tools): report deeply nested release notes JSON 2026-10-27 21:56:36 +01:00
Mohamed Malek Aifa f25c397e16 fix(tools): report sanitizer summary write failures 2026-10-27 21:44:08 +01:00
Mohamed Malek Aifa eca9bedd37 fix(tools): protect symbolizer module inputs 2026-10-27 21:43:11 +01:00
Adrià 4a6005955f Merge pull request #10898 from imellag/feat/libkernel-memory-protection-macos
feat(libkernel): guest memory protection and VirtualQuery on macOS hosts
2026-10-27 21:42:24 +01:00
Adrià 771d8b5bf7 Merge pull request #11340 from harisibrar1/feat/libressl-ex-data-indices
feat(libSceLibreSsl): implement the SSL and SSL_CTX ex_data index registry as LibreSSL 2.5.4 does
2026-10-27 21:34:00 +01:00
Adrià 2a46260a5a Merge pull request #11303 from iamthehimansh/split/macos-pooled-tail
fix(agc): clear a reused pooled buffer's unused tail on macOS
2026-10-27 21:29:52 +01:00
dantdmdarealguy 967203758e test(libc): name guest_heap_report_for_game's capture files after the process id
Both capture files were named with an unseeded std::rand(), which returns the same value in every process, so two concurrent runs sharing a temporary directory truncated and removed each other's stderr and stdout captures.
2026-10-27 15:28:45 -05:00
dantdmdarealguy 068455a2d5 test(agc): skip submit progress and pipelined metadata pass without a Vulkan device
agc_driver_pipelined_metadata_pass went straight to the driver, so a
missing Vulkan driver failed it with vkCreateInstance result -9 instead
of returning 77. It now probes the device with OpenVulkanTestDevice()
first, as the other pipelined tests do.

agc_submit_progress and agc_submit_progress_no_timeline set
ANYPS5_REQUIRE_VULKAN=1 in their own ctest environment, which turned
the test's own skip into a failure on every host. CI sets the variable
for the whole Linux job, so a missing device still fails there.

OpenVulkanTestDevice() skipped on any exception from the VulkanDevice
constructor, so a construction failure on a host that has a device was
reported as a skip. The constructor now throws VulkanUnavailable when
the loader cannot be loaded, vkCreateInstance returns
VK_ERROR_INCOMPATIBLE_DRIVER, or no Vulkan 1.1 graphics and compute
device exists, and the helper skips only on that. Any other failure,
including ANYPS5_GPU naming no device, fails the test.
agc_driver_vulkan_test_device covers the healthy device, the required
device and a construction failure with a device present;
agc_driver_vulkan_test_device_no_driver hides the ICD and covers the
skip and the ANYPS5_REQUIRE_VULKAN=1 failure.
2026-10-27 15:28:42 -05:00
MarcZX10 1eb3a8cf3f docs: list the APS5_TRACE_UDS switch
libSceNpUniversalDataSystem and libSceNpTrophy2 read it and print [uds]
lines to stderr, but the tracing guide did not list it.
2026-10-27 20:26:06 +00:00
MarcZX10 b04ac8eca0 docs: list every runtime DLL the hardware oracle loads
oracle_hip.py tries amdhip64_7, amdhip64_6 and amdhip64, and amd_comgr_3,
amd_comgr_2 and amd_comgr, newest first; the guide named only the older
ones.
2026-10-27 20:26:06 +00:00
MarcZX10 7e5831fcce docs: say APS5_DRAW_PIPELINE is tested for being set
ShaderMemory.cpp and Draw.cpp enable the draw pipeline whenever the
variable exists, unlike APS5_PIPELINE_DISPATCH, which treats an empty
value and 0 as off.
2026-10-27 20:23:26 +00:00
MarcZX10 953c3a798f docs: give the real size of the prebuild thread pool
RegistrationPreparePool::Prebuild uses APS5_PREBUILD_THREADS (at least 1)
when set and otherwise max(2, hardware_concurrency() / 2) threads, not
one.
2026-10-27 20:23:25 +00:00
MarcZX10 dfe6db8b58 docs: spell out the APS5_DISPATCH_CACHE_ENTRIES default
dispatchCacheEntries picks 8192 only for more than two variants, 16384
for one or two and 4096 when stamp validation is on.
2026-10-27 20:22:48 +00:00
MarcZX10 009be80e18 docs: point APS5_EBOOT at the code that reads it
libSceSystemService reads the variable when it prepares a launch, and an
empty value counts as unset; GuestSystemExit.cpp only checks that it is
not defined.
2026-10-27 20:22:48 +00:00
MarcZX10 8592867658 docs: correct the default of APS5_FRAME_CAPTURE_AT_FLIP
FrameRecorder reads the variable with a fallback of 0 and raises it to 1
when it picks the boundary, so the effect of the default is the same as
1 but the default is 0; a value that is not a number throws.
2026-10-27 20:22:48 +00:00
MarcZX10 f281b02025 docs: document APS5_LOG_STATS as a string
AsyncLog.hpp compares the value with 0, so the value is interpreted and the variable is not a
presence switch.
2026-10-27 20:22:48 +00:00
MarcZX10 bd8a7b9315 docs: document APS5_LABEL_TRUST_LATE as a string
Recorder.cpp compares the value with 0, so the value is interpreted and the variable is not a
presence switch.
2026-10-27 20:22:48 +00:00
MarcZX10 4da9369e17 docs: document APS5_KEYS_FILL_CLEAR as a string
Texture.cpp acts only on the value 1, so the value is interpreted and the variable is not a
presence switch.
2026-10-27 20:22:48 +00:00
MarcZX10 13a973de6f docs: document APS5_HOOK_FLUSH_CPU_BLOCKS as a string
Recorder.cpp acts only on a value that starts with 0, so the value is interpreted and the variable is not a
presence switch.
2026-10-27 20:22:48 +00:00
MarcZX10 8cf29166bd docs: document APS5_EXACT_DRAW_WRITES as a string
WrittenBuffers.cpp compares the value with 0, so the value is interpreted and the variable is not a
presence switch.
2026-10-27 20:22:48 +00:00
MarcZX10 c4239be970 docs: document APS5_COPY_READ_TRACKING as a string
Recorder.cpp compares the value with 0, so the value is interpreted and the variable is not a
presence switch.
2026-10-27 20:22:48 +00:00
MarcZX10 71e4a80c7e docs: document APS5_STRICT_DESCRIPTOR_WEBS as a string
ResourceTracker.cpp compares the value with 0, so the value is interpreted and the variable is not a
presence switch.
2026-10-27 20:22:48 +00:00
MarcZX10 017847c3bb docs: document APS5_IMAGE_TABLE_STRICT as a string
ResourceMaterializer.cpp compares the value with 0, so the value is interpreted and the variable is not a
presence switch.
2026-10-27 20:22:48 +00:00
MarcZX10 89e8dbee00 docs: document ANYPS5_NO_SHADER_CACHE as a string
ShaderDiskCache.cpp ignores an empty value and 0, so the value is interpreted and the variable is not a
presence switch.
2026-10-27 20:22:48 +00:00
MarcZX10 2fe21dbd99 docs: document APS5_SKIP_TIMING_TESTS as a string
PreciseWait.cpp tests the first character for 0, so the value is interpreted and the variable is not a
presence switch.
2026-10-27 20:22:48 +00:00
Adrià 80b209d984 Merge pull request #11295 from Danigamer05/feat/libc-unsigned-min32
feat(libc): implement unsigned 32-bit minimum
2026-10-27 21:20:30 +01:00
MarcZX10 13da724480 docs: say import_audit accepts converted guest.prx modules
module_files yields a PE file whose name ends in .guest.prx and reads its
exports; every other MZ file still raises an AuditError.
2026-10-27 20:18:12 +00:00
MarcZX10 13019ed1f6 docs: state the thread limit of the Windows crash report
ReportAllThreads captures at most 128 other threads and prints how many
further threads were left out; the report did not list every thread of a
larger process.
2026-10-27 20:18:12 +00:00
MarcZX10 91730a4f1e docs: say where --macos puts the bundled modules
GuestModuleBuilder keeps each module's directory relative to the module
parent under app0, as the Linux and Windows outputs do, so modules from
sce_modules, prx or a --module-dir do not land in app0/sce_module.
2026-10-27 20:18:12 +00:00
Adrià 225ebc5eee Merge pull request #11264 from Gruzzberry/fix/sysctl-faults
fix(libkernel): fail sysctl and sysctlbyname with EFAULT on an unreadable or unwritable pointer
2026-10-27 21:16:21 +01:00
MarcZX10 c95f8f80e0 docs: say the APS5_SAVEDATA_TRACE limit is per logging site
SAVEDATA_TRACE keeps a static counter in each use, so the default limit
of three applies to every site separately.
2026-10-27 20:15:57 +00:00
MarcZX10 c688fede63 docs: give the range and default of APS5_TRACE_EVENTS
TraceThread::ParseCapacity rejects 0 and anything above 4,194,304, and
DefaultCapacity is 262,144.
2026-10-27 20:15:57 +00:00
MarcZX10 1aac7817b5 docs: keep the host read-only state in the USB passthrough row
HostVolumes records ReadOnly from the mount options (or the Windows
read-only volume flag) and the export reports it, so passthrough is not
always writable.
2026-10-27 20:15:57 +00:00
MarcZX10 e6410e8daa docs: mark the Windows-only debug variables
The timer selftest, the job worker pinning and the page query trace are
compiled only under _WIN32; elsewhere the variables are ignored.
2026-10-27 20:15:57 +00:00
MarcZX10 8ff8758c37 docs: document APS5_TIME_SCALE as a number string
The value is parsed with strtod, so fractional factors work, as the row
already says; the integer kind contradicted it.
2026-10-27 20:15:57 +00:00
MarcZX10 11a036fa09 docs: state the interval limit of APS5_TRACE_BENCH
TraceBench::Keep retains MaximumIntervals = 240 and counts the rest as
dropped.
2026-10-27 20:15:57 +00:00
MarcZX10 29b1aaa480 docs: say what APS5_TRACE_SKIPS adds
reportSkip already writes each distinct skip once; the variable only
enables the 'again' lines for repeats.
2026-10-27 20:15:57 +00:00
MarcZX10 fb7b465ad7 docs: point APS5_SPIRV_OPT at its production reader
The SPIR-V backend reads the variable; the test only repeats the read.
2026-10-27 20:15:57 +00:00
MarcZX10 d035b7afe3 docs: describe the perf pair switches as recompiler switches
APS5_NO_PERF_FRONTEND_PAIR and APS5_NO_PERF_LAYOUT_PAIR are read by the
shader recompiler itself, which the shader disk cache lists among its
output-neutral switches, not only by the shader-memory test the rows
pointed at.
2026-10-27 20:15:57 +00:00
MarcZX10 b47d7e50d3 docs: document APS5_SRGB_SHADER_DECODE as a string
TextureFormat.cpp compares the value with "1" and "copy" and ignores
anything else, so setting it to an arbitrary value does not behave like
a presence switch.
2026-10-27 20:15:20 +00:00
MarcZX10 534f5acdc8 docs: document APS5_STORE_AT_LABEL as a string that accepts only 1
StoreAtLabelRequested returns true for "1" and throws for any other
value (expected 1), like its sibling APS5_STORE_AT_FLIP, so it is not a
presence switch.
2026-10-27 20:15:20 +00:00