Commit Graph
14017 Commits
Author SHA1 Message Date
Federico Marras b336f0c4dc fix(relinker): validate Windows trampoline section placement and sites 2026-10-19 18:57:12 +02:00
Federico Marras d65c969df8 feat(libSceJpegDec): decode with a down scale of 2, 4 or 8
sceJpegDecParseHeader and sceJpegDecDecode threw for every down scale
other than 1. SharpProspero's JpegDec.cs documents the factors 1, 2, 4
and 8 and output dimensions that account for the down scale.

Decoder::Jpeg gains DecodeScaled, which decodes through libjpeg-turbo's
scaled inverse DCT, and ScaledDimension, its rounded-up output size.
sceJpegDecParseHeader reports the scaled output size; sceJpegDecDecode
checks the pitch and image buffer against it, writes the scaled image
and packs the output size into its result. A down scale of 1 still
decodes as before. Decode modes other than 0, other down scales and a
down-scaled CMYK or YCCK image still throw.
2026-10-19 18:57:12 +02:00
Federico Marras 792fb27631 feat(libc): list each interface's AF_LINK entry in getifaddrs on Linux
getifaddrs listed only the host's IPv4 and IPv6 addresses, so the
per-interface AF_LINK entries FreeBSD's getifaddrs puts first were
missing, and with them the interface index, hardware address, MTU and
counters and every interface without an address.

On Linux each interface now starts with an AF_LINK entry, followed by
its addresses, as FreeBSD 11.4's getifaddrs orders them. Its address is
a sockaddr_dl with the host index, type, name and hardware address
(none for a loopback), sized as FreeBSD's if_attach sizes it. Its
ifa_data is a 152-byte FreeBSD if_data filled as if_data_copy fills it:
type, address and header length, link state, MTU, speed and the host's
packet, byte, error, drop and multicast counters from sysfs, or the
host list's 32-bit counters when sysfs cannot be read. Fields with no
host equivalent are 0 and listed in the debt entry. Windows is
unchanged.
2026-10-19 18:57:12 +02:00
Federico Marras 87bd71d64c feat(libSceNet): reverse-resolve IPv6 addresses in sceNetResolverStartAton6 2026-10-19 18:57:12 +02:00
Federico Marras 323deb832a feat(audioin): implement sceAudioInGetGain and sceAudioInGetRerouteCount
Write the unattenuated linear gain 1.0f into *gain before checking the port handle in sceAudioInGetGain, and return 0 for open ports or SCE_AUDIO_IN_ERROR_INVALID_HANDLE (0x80260101) for closed or out-of-range handles in both sceAudioInGetGain and sceAudioInGetRerouteCount.
2026-10-19 18:57:12 +02:00
Federico Marras 4877716673 test(libSceNet): accept every unusable IPv6 loopback error in guest_sce_net
guest_sce_net skips its IPv6 checks when sending to ::1 fails and
HostIpv6LoopbackUnavailable confirms the host cannot reach it. The host
probe accepts EADDRNOTAVAIL, ENETUNREACH and EHOSTUNREACH, but the guest
check accepted only ENETUNREACH (51). On a Linux host without ::1 the
send can fail with EADDRNOTAVAIL instead, which the guest sees as 49,
and the test aborted in CheckUnspecifiedIpv6 instead of skipping.

Accept the guest numbers of the same three errors (49, 51 and 65).
2026-10-19 18:57:12 +02:00
mpratsakiandClaude Opus 5.5 c9731df4c9 fix(relinker): compare Windows file identities by handle
MinGW's std::filesystem::equivalent returns false for hard links whose
names give different permissions, such as .elf and .exe. The temporary
hard-link probe that worked around it failed on read-only files and on
directories that refuse the link. Compare the volume serial number and
file index from GetFileInformationByHandle instead.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 19:54:53 +03:00
Dean 7a015c0946 Merge pull request #7904 from mopga/fix/relinker-sort-guest-module-loads
fix(relinker): sort PT_LOAD entries of Linux guest modules by address
2026-10-20 05:54:46 +13:00
davidamsellemandClaude Opus 5.5 3440a1756f test(agc): skip vouched lookups where host imports report GPU reads as writes
On RADV, importing host memory and reading it from the GPU marks the
pages as written in the write watch. The test forces
APS5_WRITE_WATCH_IMPORTS=watch, so the vouch refuses the table and
supplyWords is never called. Probe host-import write protection on
Linux, as the Windows path already does, and skip when a GPU read
reports writes or the probe fails.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 18:54:37 +02:00
Dean f250687e23 Merge pull request #7903 from mopga/fix/relinker-unused-filter-non-got-imports
fix(relinker): keep non-GOT imports in unused-filter=1
2026-10-20 05:54:32 +13:00
Dean 245733e9ee Merge pull request #7847 from MarrasFederico/fix/datagram-receive-ipv6-unavailable
test(libSceNet): skip IPv6 datagram receive cases without an IPv6 loopback
2026-10-20 05:54:18 +13:00
Dean 738d884102 Merge pull request #7878 from xxLnolan/fix/libc-paf-mspace-memalign
fix(libc): implement PAF mspace memalign
2026-10-20 05:54:04 +13:00
Dean c66a207ddd Merge pull request #7842 from ionut27001/fix/libkernel-umtx-op1-eopnotsupp
fix(libkernel): fail _umtx_op operation 1 with EOPNOTSUPP as measured on a PS5
2026-10-20 05:53:50 +13:00
Dean c96dd980fd Merge pull request #7887 from thuanquang/test/file-lock-child-wait
test(libkernel): wait up to 30 s for the file lock test's child process
2026-10-20 05:53:28 +13:00
Dean 240255fcf8 Merge pull request #7924 from realshinmalphur/feat/net-process-time
feat(net): implement process-relative system time
2026-10-20 05:53:14 +13:00
Dean a4c04c75d6 Merge pull request #7921 from ntamas94/fix/sce-net-inet-pton-whitespace
fix(libSceNet): end IPv4 sceNetInetPton text at whitespace as the PS4 does
2026-10-20 05:52:50 +13:00
Dean a39411c67a Merge pull request #7906 from Rajkamalcode/fix/libc-bessel-zero
fix(libc): return -inf from y0f, y1f and ynf at zero
2026-10-20 05:52:35 +13:00
Dean b00edd174e Merge pull request #7892 from valenciana-nc/test/getdirentries-readonly-fresh-descriptor
test(libkernel): exercise read-only getdirentries buffers before EOF
2026-10-20 05:52:20 +13:00
Dean 0b6486704b Merge pull request #7915 from root-over/fix/libkernel-open-flags-before-path-v2
fix(libkernel): check open flags before the path in open, _open and openat
2026-10-20 05:52:06 +13:00
emirplus e229e3bd47 fix(libc): validate time ranges and null-terminate in asctime_s and ctime_s 2026-10-19 19:52:03 +03:00
Dean d891db991f Merge pull request #7874 from ErenYeager1836/feat/libc-export-nextafter
feat(libc): export nextafter double math function
2026-10-20 05:52:01 +13:00
MarcZX10 28cc5a6e5e test(libScePngDec): size padded output for both rows 2026-10-19 16:49:09 +00:00
Nicolas Abosch 4bc91c9fbb Merge remote-tracking branch 'origin/main' into perf/gpu-wake-sleeps 2026-10-19 13:47:53 -03:00
Adrià Franch 8706cd8a7d docs(agc): keep the title name out of the scan-resistant admission debt entry 2026-10-19 18:44:04 +02:00
Alex ColliniandClaude Sonnet 5.5 c026550122 perf(agc): refuse uncached textures while the sampled cache's least recently used entry is still in use
Over budget but within a quarter over it, the sampled texture cache refused no use of a texture it does not hold, so a cyclic scan over a working set larger than the budget rotated the whole cache and hit almost never. The first use of a key in a present is now refused (used for its draw, never cached) when the least recently used entry was used in this or the previous present. A later use of the key is refused only when that entry was used in this present, so a texture used several times per present is still admitted on a later use. The refusal does not apply past the quarter-over ceiling, so a budget that falls still evicts.

The test lowers the budget through OverrideCacheBudgetForTest instead of the environment. The debt entry records the unmeasured present window, that a texture used more than once still rotates the cache, and the one A-B-A measurement.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-19 18:43:53 +02:00
Nithishvelan M 33b17f60b5 fix(libSceNpAuth): move wrapper definitions below V3 functions 2026-10-19 22:09:29 +05:30
Adrià Franch c84149b0c1 docs: record unverified null-argument results of libSceAmpr command buffer exports 2026-10-19 18:39:25 +02:00
lakhantheboss 2873e9c361 fix(ampr): validate null command buffer arguments 2026-10-19 18:39:10 +02:00
Nithishvelan M 76c0882646 test(libSceSysmodule): use kAgcDriverModuleId in unload internal with arg test 2026-10-19 22:06:36 +05:30
emirplus 9058744285 fix(tools): recognize tilde code block fences in pr_labels 2026-10-19 19:36:08 +03:00
emirplus 11e11a1d1c fix(tools): avoid invoking ctest when no tests are selected in plan 2026-10-19 19:34:33 +03:00
David 758e22d4f4 docs(debt): record file mappings on macOS 2026-10-19 20:30:21 +04:00
David cd0e8efb07 test(libkernel): run code from an executable mapping of a shared memory object 2026-10-19 20:30:21 +04:00
David f69f9da2a0 feat(libkernel): map files through the guest's mmap on macOS, adding execute after mapping 2026-10-19 20:30:20 +04:00
David c9c6fc7a95 feat(libkernel): check file and shared memory descriptors for the guest's mmap on macOS 2026-10-19 20:30:20 +04:00
Longziip ae67e2b7f9 fix(agc): write the reread indirect register list when skipping its invalid entries
When the list read at submission is invalid, the worker now always
executes the copy read again where the packet runs. With
APS5_SKIP_INVALID_INDIRECT_REGISTERS=1 only that copy's invalid entries
are skipped, so the valid entries of a partly updated list are written
instead of the stale ones from submission.

testPartlyUpdatedRegisterListSkipsOnlyItsInvalidEntries submits a list
that is invalid at submission, updates it to a valid entry plus an
invalid one before its packet runs, and reads the register back with
COPY_DATA.
2026-10-19 17:29:53 +01:00
Longziip 557ae22bd1 fix(agc): reread an invalid indirect register list where its packet executes
SET_*_REG_INDIRECT lists are read when the command buffer is submitted.
When that copy holds an offset dword that is no register offset, the
queue worker now reads the list again where the packet executes (as the
console PFP does) and uses that copy if it is valid.

PPSA23566 (UFC 6) intermittently submits a SET_CONTEXT_REG_INDIRECT
whose first entry is 0x038f038f or 0x03900390 in both copies, followed by
180 valid pairs, and the title stopped with "extended register semantics
are not implemented". With APS5_SKIP_INVALID_INDIRECT_REGISTERS=1 the
invalid entries are skipped and the other registers are written; without
it the packet throws as before.
2026-10-19 17:29:53 +01:00
011010 6d72ebe47c feat(libSceNgs2.native): keep a registry of report handlers
sceNgs2ReportRegisterHandler and sceNgs2ReportUnregisterHandler stop
being throwing stubs: they keep a registry of report handlers, so a
title that imports them can register and later drop its handler.

Register rejects a null handler with an invalid argument and returns
INVALID_OUT_ADDRESS for a null out handle, then stores the report
type, handler and user data under a freshly allocated opaque handle.
Unregister removes and frees the matching record and throws for a
handle that is not registered.

The signatures follow SharpProspero and shadPS4's ngs2_report.h, and
the 24-byte Ngs2ReportDataHeader passed to a handler is its
OrbisNgs2ReportDataHeader. No report is produced yet, so no registered
handler is ever invoked.
2026-10-19 10:29:06 -06:00
andreamattandClaude Opus 5.5 13fa14e7dd fix(progress_history): take history days in UTC
daily_commits grouped commits by %cs, the committer date in the
committer's own offset. With merges from +13:00 and +02:00 interleaved
on main, the newest commit labelled with the later date can be older
than the newest commit labelled with the earlier one, so the chart
ended on an older tree and showed a drop that did not happen.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 18:25:48 +02:00
Dean dbac9fa15b Merge pull request #7909 from parl0v/feat/pad-accessibility-controller-state
feat(libScePad): implement scePadGetAccessibilityControllerState (zBsgF0q8DIM)
2026-10-20 05:24:48 +13:00
Dean 4c7c06edf7 Merge pull request #7905 from Rajkamalcode/fix/guest-err-llp64-arg
fix(libc): keep the guest %ld argument 64-bit in the err test
2026-10-20 05:24:32 +13:00
Dean 1126abbfac Merge pull request #7928 from joedeangelis533-bot/fix/audit-windows-host-library-case
fix(tools): ignore case in Windows host library lookup
2026-10-20 05:24:09 +13:00
Dean 610c8776c7 Merge pull request #7899 from mopga/fix/pr-overlap-empty-depends
fix(tools): read a Depends on declaration after an empty one in pr_overlap
2026-10-20 05:23:55 +13:00
Dean 526adffbe5 Merge pull request #7901 from mopga/fix/debt-split-resolve-anchor
fix(tools): place resolved debt entries after their predecessor in the same file
2026-10-20 05:23:31 +13:00
Dean db0ef09e58 Merge pull request #7931 from joedeangelis533-bot/fix/trace-waits-capture-window
fix(tools): clip longest trace waits to the capture window
2026-10-20 05:23:16 +13:00
Dean b84d4e6a2f Merge pull request #7900 from mopga/fix/trace-digest-identity-changes
fix(tools): report trace identity changes between consecutive intervals
2026-10-20 05:23:00 +13:00
billythemenace2andClaude Opus 5.5 d2657b9750 fix(libkernel): classify the raise target's code without loader calls while it is suspended
GetModuleHandleExW and GetModuleFileNameW take loader locks the suspended
target may hold. While the target is suspended only VirtualQuery and a
lock-free cache of image bases are consulted; an image not yet cached is
classified after the target is resumed, and the target is sampled again.
The statics the checks use are initialized before the first suspend. The
host-code wait is recorded in the libkernel debt file, and the test raises
100 times so it fails on every run without the change.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 17:22:50 +01:00
Dean 78f7af3fc8 Merge pull request #7908 from parl0v/fix/pad-n3kSX62fgNo-after-open
fix(libScePad): return 0 from n3kSX62fgNo after scePadInit, with a pad open or not
2026-10-20 05:22:46 +13:00
Dean 7a3ef1dced Merge pull request #7929 from NumberGuan/codex/windows-vouched-import-skip
test(agc): skip unsupported Windows vouched-import probe
2026-10-20 05:22:31 +13:00
Dean 74c9ef6640 Merge pull request #7885 from xXPBSXx/fix/unwrap-self-utf8-stdout
fix(tools): print unwrap_self reports as UTF-8 on every console
2026-10-20 05:22:17 +13:00