Commit Graph
14017 Commits
Author SHA1 Message Date
MrMha 857c35eb87 fix: reject invalid collapsed stack sample weights 2026-10-15 18:58:30 +04:00
MrMha 9ab52fefc4 fix: require fresh exact-size output for every oracle dispatch 2026-10-15 18:57:14 +04:00
MrMha 1490e27fd7 fix: require boolean weak flags in import registries 2026-10-15 18:56:27 +04:00
MrMha 911708633e fix: retain enabled CTest registrations across configurations 2026-10-15 18:55:05 +04:00
MrMha a80a81d80c fix: suppress Clang compilation fragments during syntax checks 2026-10-15 18:54:47 +04:00
MrMha c94e015c92 fix: bound expanded library archives before CRC validation 2026-10-15 18:54:23 +04:00
MrMha bca123a7b9 fix: reject aliased release note input and outputs 2026-10-15 18:54:04 +04:00
Scott SchusterandClaude Opus 5.5 2ea25c53f7 fix(recompiler): the shader disk cache carries a result's shader-data user words
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 09:53:53 -05:00
Scott SchusterandClaude Opus 5.5 21b3e60b8b test(agc): a draw whose user-data pointer moved reuses the cached draw
A pixel shader loads its colour through a user-data pointer. Drawn from a third address with the same contents it hits the cached draw; with other contents it does not; the addresses seen before still hit exactly.

AI-assisted (Claude Code).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 09:53:53 -05:00
Scott SchusterandClaude Opus 5.5 9a0e449f6b test(agc): the draw-entry verification compares contents and forwarded user words
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 09:53:53 -05:00
Scott SchusterandClaude Opus 5.5 f9cacfadc9 perf(agc): find cached draws across moved user-data pointers
A draw whose user-data words differ only in pointers the capture read through
looks up an alias key built from the contents behind them, shifts the cached
variant's runs by the pointer delta, validates them by value and patches the
forwarded shader-data words.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 09:53:53 -05:00
David 14fb5709de test(relinker): give an empty PT_TLS without accesses no macOS TLS descriptor 2026-10-15 18:53:46 +04:00
David 404187fd24 test(relinker): keep refusing thread-local data reads with an empty PT_TLS for macOS 2026-10-15 18:53:44 +04:00
David f6a903a8d4 test(relinker): convert stack-guard and thread-pointer reads with an empty PT_TLS for macOS 2026-10-15 18:53:42 +04:00
David 0ae412394e fix(relinker): convert stack-guard and thread-pointer reads with an empty PT_TLS for macOS 2026-10-15 18:53:40 +04:00
Romans Pokrovskis 50748f79f2 test(libc): retain the open-host-write alias regression
Retain the regression originally supplied by Pipodi in closed PR5851 (22091410a), adapted here through e1c6af65b. Current-main-equivalent libc/kernel source returns an alias during the open HostWrite and fails this assertion five times. This test is a reproduction, not a new implementation or an upstream PR.

(cherry picked from commit 312170cd0c461104174d655911de876be341cf6a)
2026-10-15 14:52:30 +00:00
Romans Pokrovskis 45625022e7 fix(libc): defer resident alias demotion during a host write
Retain Pipodi safety guard from closed PR5851 without its resident alias expansion or automatic AGC alias routing. Main still refuses aliases over partial resident runs. Five unmodified-main regression runs fail before this guard; positive validation pending. Fork proposal only; no duplicate upstream PR intended.

(cherry picked from commit 078a5740b40c3b5b6384eec8f92363360c75b758)
2026-10-15 14:52:30 +00:00
jweidenh 73ab57d57e test(relinker): page-align the optional RELA guest fixture 2026-10-15 10:41:30 -04:00
Yunus Shaikh 668ecaeca2 fix(agc): fall back to pixel (0,0)'s sample locations where the device has no 2x2 grid
A draw whose sample locations vary between the pixels of the guest's
2x2 pattern threw "sample locations varying between pixels require a
2x2 sample location grid for the draw's sample count" on a device
whose maxSampleLocationGridSize for that sample count is not a
multiple of 2x2. An RTX 3070 Laptop GPU reports 1x1 for every count,
so Resident Evil Village's 2x checkerboard pattern stopped there
before its title.

The pipeline now decides the grid when it is created: such a pattern
is drawn through a 1x1 grid with pixel (0,0)'s locations, the first
registers of the pattern and the pixel the guest's grid is anchored
at, and the first such pipeline of each sample count logs it. The
render pass begin takes the pipeline's grid, so a sample-location-
compatible depth image is begun with the locations it is drawn with.
Devices with the grid keep it, and uniform patterns are unchanged.
2026-10-15 14:36:22 +00:00
jweidenh f40d22067e fix(relinker): accept executables without a RELA table 2026-10-15 10:35:35 -04:00
Bruce Blake 873fbe99aa fix(libkernel): cap getdtablesize at the host descriptor table size
On macOS the RLIMIT_NOFILE soft limit is not a bound on the descriptor table: setrlimit accepts soft limits above kern.maxfilesperproc, RLIM_INFINITY included, and getrlimit reports what was set, so returning the guest soft limit alone could report up to INT_MAX for a table of about 122880 descriptors, and a closefrom-style loop up to that value would run billions of iterations instead of about 122k. Return the smaller of the guest soft limit and the host's ::getdtablesize(), which is the FreeBSD sys_getdtablesize result. The guest test derives its expectation from the host call instead of the implementation's formula, and the debt entry no longer claims the limit is raised when libkernel loads outside Linux. Reported by jotitadev in review of the getdtablesize implementation.
2026-10-15 10:35:04 -04:00
JJenkx c2f375fb63 feat(libkernel): convert guest POSIX error values 2026-10-15 10:34:39 -04:00
Adrià ff23657f34 Merge pull request #2852 from alfalfa-star/feat/np-user-id-by-account-id
feat(npmanager): implement sceNpGetUserIdByAccountId
2026-10-15 16:34:37 +02:00
Adrià f7bc3732e0 Merge pull request #5712 from ErenYeager1836/fix/msgdialog-native-error-codes
fix(libSceMsgDialog.native): return error codes instead of throwing in initialize and terminate
2026-10-15 16:34:28 +02:00
Kraken d971ed011a fix(shader): plan image tables through invariant descriptor phis
Equivalent descriptor reloads in loops must retain runtime table planning. Reuse the existing invariant proof and cover accepted and varying descriptor cases.
2026-10-15 15:32:57 +01:00
capmare 2be7b0769a feat(libSceFontFt): implement the font format support exports 2026-10-15 16:30:32 +02:00
MarcZX100 99d4d230a9 docs(dev): sync trace switches with current code 2026-10-15 14:29:57 +00:00
MarcZX100 6603a9d096 docs(dev): list tracing environment switches 2026-10-15 14:29:10 +00:00
Scott SchusterandClaude Opus 5.5 553690c0d3 perf(recompiler): report which user-data words a resource capture only reads through
The SRT evaluator records every raw read with the user-data word its address is
based on, and marks a word used as a plain value. The result also names the
user-data word behind each shader-data dword.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 09:26:58 -05:00
Itamar Medyoni 402a1d0556 test(agc): delete mapped shader cache entries with POSIX semantics on Windows
The disk cache keeps loaded and persisted entries mapped for the life of
the process. On Windows 10 DeleteFileW refuses a file that still has a
mapped view with ERROR_ACCESS_DENIED, so agc_shader_disk_cache failed in
its final remove_all after every check had passed and left its directory
in the temp folder.

Delete each file with FILE_DISPOSITION_FLAG_POSIX_SEMANTICS before
removing the directories, as WriteFileAtomically already renames with
POSIX semantics. The mapped views stay valid, and the test still fails
when a file or the directory cannot be removed. Linux is unchanged.
2026-10-15 17:24:26 +03:00
AlxcBTW e37e5f0aba fix(agc): merge with the cache file unless this object's live cache holds it; test the unseeded double save 2026-10-15 16:19:42 +02:00
billythemenace2andClaude Opus 5.5 01d3594c20 fix(agc): treat a TYPE 1 T# in a read-only static image slot as null
A static, read-only image slot whose T# has TYPE 1 is now bound as a null
image, like TYPE 0 since #5473 and #4779. On gfx1010, image_sample_lz,
image_sample_b, image_load and image_get_resinfo through a format-22
TYPE 1 T# return zeros without a fault, and gfx1035 reads it as zeros
too. Written, atomic and table slots still throw, and the reserved
types 2-7 stay refused.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-15 15:16:56 +01:00
MarcZX100 c7ef905927 fix(tools): hide labels that do not fit treemap slivers 2026-10-15 14:14:25 +00:00
MarcZX100 ad64fa844b fix(tools): keep duplicate export paths unquoted 2026-10-15 14:13:26 +00:00
fdfawef324andClaude Opus 5.5 a2f497a05c fix(shader): give a selection a merge when one arm returns through nested branches
mergeBesideReturns ignores the edges into blocks that only lead to a return
when it looks for the merge of a selection whose arms do not meet. It only
recognized a straight run of single-predecessor blocks ending in a return,
so an arm whose return path branches again (an early return inside a
nested if/else) still counted as a block of its own, the arms had no
common post-dominator, and the whole program fell back to flag
structurization ("conditional block 0 has no structured merge").

A block now returns when it has one predecessor, is dominated by the
header and every successor returns. Flag structurization turns every
original block into a guarded region, and the register phis at the region
joins carry values from paths that never reach a later use: in Resident
Evil 4 (PPSA07411) pixel program 0x20762add00 the T# of an image_load
became Phi(0, load through Phi(user data, compare mask)) and resource
analysis refused it. Structured, the T# is the load through the user-data
pointer and the program prepares, captures and materializes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 10:11:54 -04:00
Tomás Ortellado 95410ad9e6 refactor(relinker): read ELF header once during validation 2026-10-15 11:11:11 -03:00
Tomás Ortellado e28dbf7666 fix(relinker): reject core and untyped ELF conversion inputs 2026-10-15 11:11:11 -03:00
Adrià 940eba9a26 Merge pull request #6398 from fma-rc/fix/pr-overlap-no-backlinks
fix(tools): link overlapping pull requests without cross-referencing them
2026-10-15 16:10:02 +02:00
MarcZX100 2a65acd86c fix(relinker): guard TLS instruction byte access at EOF 2026-10-15 14:05:06 +00:00
Nixitov 443df0551b feat(libkernel_sys): implement fchown
Morrowind imports fchown and stops at it once rtprio_thread and the pthread concurrency controls are in. Accept the guest's own owner and group (0) or unchanged (-1), fail an invalid descriptor with EBADF, and throw for another owner or group, since ownership is not modelled.
2026-10-15 16:02:36 +02:00
Jan ŠléglandClaude Opus 5.5 5532d51fb8 perf(agc): stores beside a range in its 64 KiB block leave the range unchanged
UnchangedSince and UnchangedSinceAll answered by the stamps of the 64 KiB blocks a range
touches, so a CPU or driver store anywhere in a shared block failed every unchanged proof
over it. When a block's stamp is newer, they now look at what wrote the block: the CPU page
stamps over the range and the block's driver-store pieces, as StoredOver does.

For that answer to see every driver stamp, the walk after an own store stamps the pages it
finds dirty in a page map of their own. The unchanged proofs count those pages, so a guest
store beside the stored bytes in the same page is not hidden. StoredOver counts them only in
a block without driver pieces: where pieces exist it answers as before. They take no
driver-piece slot and do not count for the complete coverage StoredAllSince proves. On
Windows, a private mapping made over a block that has driver pieces marks them as
forgotten instead of dropping them.

StoredOver no longer answers stored over for a block whose newer stamp comes only from CPU
stores to other pages.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 16:02:27 +02:00
fma-rc bc2211ac85 fix(tools): link overlapping pull requests without cross-referencing them 2026-10-15 16:00:40 +02:00
MarcZX100 345fca11db fix(tools): recognize markdown fences with CRLF endings 2026-10-15 13:59:17 +00:00
Adrià 0dab493f5b Merge pull request #5816 from Nawasfadili/feat/libc-wide-and-unlocked-stream-io
feat(libc): implement wide and unlocked stream I/O
2026-10-15 15:58:44 +02:00
Adrià 4c6fcdbadf Merge pull request #5764 from GalaxyGamingFR/fix/area-labels-all-open-prs
fix(ci): label all open PRs, not only the newest 200
2026-10-15 15:58:39 +02:00
Adrià 636b1b93cf Merge pull request #5759 from YossiYad/fix/sparse-import-test-backings
test(agc): drop a shared range's backing when the range goes away
2026-10-15 15:58:31 +02:00
Adrià 56f5a6eef7 Merge pull request #5757 from hypermoist/perf/vector-window-unindexed-slots
perf(recompiler): keep the vector window's unindexed slots out of the array
2026-10-15 15:58:23 +02:00
Adrià 5c0cc1bba4 Merge pull request #5755 from AlexOfTheForest/fix/decoder-rip-far-indirect
fix(relinker): report RIP-relative operands of far indirect CALL and JMP
2026-10-15 15:58:16 +02:00
Adrià 281336041a Merge pull request #5754 from fogydes/fix/libkernel-eventflag-clear-pattern-and-attr-validation
fix(libkernel): reject unknown event flag creation attributes
2026-10-15 15:58:10 +02:00
Ondra97 cbb6ddc885 test(libkernel): scope overlapping vector I/O checks to Windows 2026-10-15 15:54:29 +02:00