Commit Graph
20967 Commits
Author SHA1 Message Date
MarcZX10 f533409117 test(tools): cover ctest's not-run tests in the sanitizer summary
Use the shapes ctest writes: a not-run test with SKIP_RETURN_CODE=77 or SKIP_REGULAR_EXPRESSION_MATCHED is a skip, while a not-run test whose executable is missing ('Unable to find executable') or whose skipped element has no message is a failure that fails the run. The test fails with the previous classification.
2026-10-27 06:34:54 +00:00
MarcZX10 c48bc565ba fix(tools): count a test that ctest could not start as failed
ctest writes a test whose executable is missing, for example because it failed to link, as status="notrun" with <skipped message="Unable to find executable">, the same shape as a test that skipped itself. sanitizer_report counted both as skipped, which hid a test that did not build. A skipped element now means a skip only when its message is a ctest skip status (SKIP_RETURN_CODE=<n> or SKIP_REGULAR_EXPRESSION_MATCHED, as tools/check_skips.py reads it) or when the status is not a failing one; any other not-run test counts as failed. On a local ASan and UBSan run of main this moves atrac9_gradient, whose executable does not link, from the 721 skipped tests to the failed ones.
2026-10-27 06:34:54 +00:00
MarcZX10 7af80c966e test(agc): run the converted guest memory lifetime test under ASan
agc_driver_guest_memory_lifetime_converted runs a relinked fixture that loads the ASan builds of libkernel, libc and libSceAgcDriver, so the ASan runtime is not the first library and ASan stops with 'ASan runtime does not come first in initial library list'. Set verify_asan_link_order=0 for it, as loadexec_arguments already does for its converted host. With it the test passes in an ANYPS5_ENABLE_ASAN build on Linux; other builds are unaffected.
2026-10-27 06:34:54 +00:00
MarcZX10 1c9757015b test(tools): cover the first sanitizer report of failed tests
Check that the SUMMARY line wins over the ERROR line, that LSan and TSan lines and a UBSan runtime error with its source location are found, that output without a sanitizer line gives nothing, that long lines are shortened, and that the failed test table gains the report column only when a failure has a report.
2026-10-27 06:34:54 +00:00
MarcZX10 59df5f3bb6 feat(tools): quote the first sanitizer report of each failed test
Read the system-out and system-err of each testcase and keep the first sanitizer line: the SUMMARY line of ASan, LSan or TSan, else their ERROR or WARNING line, else a UBSan runtime error line with its source location. When any unexpected failure has one, the failed test table gains a First sanitizer report column, shortened to 200 characters and escaped for Markdown.
2026-10-27 06:34:54 +00:00
MarcZX10 851d4498e1 test(tools): cover known sanitizer failures that pass or did not run
Check that a listed test that passed appears in the passed table with its reason, that a listed test missing from the run appears in the not-run table, that a skipped listed test appears in neither, and that a run whose known failures all still fail has neither table.
2026-10-27 06:34:54 +00:00
MarcZX10 9685e5786e feat(tools): report known sanitizer failures that pass or did not run
List the known failures of the selected sanitizers whose test passed, so a fixed test can leave the list, and those that are not in the run at all, such as a renamed test. Neither affects the exit code.
2026-10-27 06:34:54 +00:00
MarcZX10 b8eab90620 test(tools): cover known sanitizer failures
Check that known failures apply only to the sanitizers they name and that blank lines are skipped, that a listed failure moves to the Known failure table with its reason escaped for Markdown and stops failing the run while an unlisted one still fails it, that --known without --sanitizer is a usage error, and that malformed lines are rejected with exit code 2 and their line number.
2026-10-27 06:34:54 +00:00
MarcZX10 4fa6238a7c feat(tools): accept known sanitizer failures with their reasons
sanitizer_report.py --known reads a text file with one known failure per line: the test name, the comma-separated sanitizers it fails under and the reason. With --sanitizer naming the sanitizers of the build, a failure of a listed test moves to a Known failure table with its reason and no longer fails the run. Blank lines are ignored; a line without a reason, an unknown sanitizer and a duplicate test and sanitizer pair are errors that name the line.
2026-10-27 06:34:53 +00:00
MarcZX10 aab9334b9e build: register the sanitizer report test with ctest
Run tools/tests/test_sanitizer_report.py as the sanitizer_report test next to check_skips, so check_test_registration --scripts finds a runner for it.
2026-10-27 06:34:53 +00:00
MarcZX10 a2ab196682 test(tools): cover the sanitizer run summary
Check how sanitizer_report classifies passed, failed, skipped, not run and disabled tests, the counts and sorted table of the summary, the exit code for runs with and without failures, the exit code 2 for unreadable or malformed reports, and that --summary appends to an existing file.
2026-10-27 06:34:53 +00:00
MarcZX10 fd42fb30cc feat(tools): summarize the failing tests of a sanitizer run
Add tools/sanitizer_report.py, which reads the JUnit file that ctest --output-junit writes, counts passed, skipped and failed tests, lists the failed ones in a Markdown summary and exits with 1 when any test failed. A test that ctest did not run counts as failed, and a disabled test as skipped.
2026-10-27 06:34:53 +00:00
milescovielloandClaude Opus 5.5 4912e4c7a9 test(libkernel): cover the APR ForEach resolves with and without a prefix
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 06:33:48 +00:00
Dean Galvin 623f4a4ce9 merge: main into salvage/jsc-9438 2026-10-27 19:32:15 +13:00
Dean Galvin 357c9483b2 merge: main into salvage/freetypeol-9453 2026-10-27 19:32:15 +13:00
milescovielloandClaude Opus 5.5 603a540fa7 docs(libSceAudioOut): scope the port state reads to the inspected instructions
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 06:29:16 +00:00
milescovielloandClaude Opus 5.5 63c5b74806 docs(libSceNpGameIntent): note the info size and intent data offset six titles use
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 06:28:09 +00:00
Daniel Castrillon 0ff75b7a50 chore(shader): sync formatted stores with upstream main 2026-10-27 01:26:42 -05:00
Emanuele 03f7c1134f fix(shader): keep the position read of barycentric built-ins on MoltenVK
The I/J reads take the BaryCoordSmooth input, but gl_FragCoord was declared
only for the offset kinds, so its w was read as the constant 0 and the
fragment function never read [[position]]; Apple GPUs then return the
weights unnormalized. Declare it with the built-in, and select on
gl_FragCoord.w > 0, which a compiler cannot fold as it can
min(b, b + |w|).
2026-10-27 07:25:48 +01:00
Adrià FranchandClaude Sonnet 5.5 661be6f367 fix(shader): strip the barycentric flag in the version 43 request fixtures
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 07:25:48 +01:00
Emanueleandyripper a95ced504c feat(recompiler): read I/J from barycentric built-ins on MoltenVK
MoltenVK exposes VK_KHR_fragment_shader_barycentric but its MSL step
rejects PerVertexKHR, so the extension is disabled there and a pixel
shader whose I/J VGPRs outlive their v_interp_p1/p2 pairs takes the
generated barycentric stages, which accept only triangle lists without
primitive restart on a device without geometry shaders.

A new target flag, fragmentBarycentricBuiltins, enables the extension
for its built-ins only. The host interpolation check then keeps the
leftover I/J reads (all perspective or all linear, at the fragment's
default position) and reads them from BaryCoordKHR or
BaryCoordNoPerspKHR, while the interpolated attributes stay hardware
varyings. Raw vertex parameters and I/J at an offset or a sample
position still take the generated stages. Apple GPUs return
unnormalized perspective weights unless the fragment function reads
[[position]], so each perspective read keeps a neutral use of
gl_FragCoord.w, loaded as a float. Devices with the full extension are
unaffected; the request serialization moves to version 45.

Co-authored-by: yripper <[email protected]>
2026-10-27 07:25:48 +01:00
milescovielloandClaude Opus 5.5 8f2f7b8971 docs(libSceAudioOut): note which port state fields five titles read
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 06:25:19 +00:00
milescovielloandClaude Opus 5.5 d97cdbbb7f docs(libkernel): note the sceKernelVirtualQuery fields seven titles read
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 06:22:00 +00:00
xXPBSXxandClaude Sonnet 5.5 19a8d9ee9a test(libc): pin asinh bits to FreeBSD msun's results
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 07:10:31 +01:00
xXPBSXxandClaude Sonnet 5.5 b265a0d8c1 fix(libc): compute asinh with FreeBSD msun's algorithm
asinh_nid_postfix called the host libm's asinh. It now follows the branches and
thresholds of FreeBSD msun's s_asinh.c (release/11.4.0): below 2^-28 it returns x,
up to |x| = 2 it uses log1p, up to 2^28 log(2|x| + 1/(sqrt(x*x+1)+|x|)) and above
that log(|x|) + ln2. Up to |x| = 2 the results are bit-identical to msun; above 2
they depend on the host log this file still uses.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-27 07:10:31 +01:00
Dean b7105f7285 Merge pull request #11590 from oneandonlydean/astro/unary-special-rows-v2
test(shader): check the unary special results on 32 more rows
2026-10-27 19:09:10 +13:00
Dean 5283d89b95 Merge pull request #11569 from olegon85/test-net-byte-order
test(libSceNet): cover the sceNetHton and sceNetNtoh byte-order conversions
2026-10-27 19:08:55 +13:00
Dean 7556e38a6a Merge pull request #11548 from milescoviello/test/npcommon-rtc
test(libSceNpCommon): cover the NP RTC conversion to POSIX time and RFC 3339 formatting
2026-10-27 19:08:17 +13:00
Dean c2bbbce814 Merge pull request #11545 from milescoviello/test/https-ca-list
test(libSceHttp): cover sceHttpsGetCaList and sceHttpsFreeCaList with a null and a filled list
2026-10-27 19:07:21 +13:00
Dean 1f2c139a8b Merge pull request #11544 from milescoviello/test/nputility-bandwidth-abort-status
test(libSceNpUtility): cover sceNpBandwidthTestAbort and sceNpBandwidthTestGetStatus before a test starts
2026-10-27 19:07:06 +13:00
Dean 4807400cc1 Merge pull request #11541 from milescoviello/test/npsessionsignaling-activate-user-connection-info
test(libSceNpSessionSignaling): cover sceNpSessionSignalingActivateUser and sceNpSessionSignalingGetConnectionInfo without a session
2026-10-27 19:06:30 +13:00
Dean 3c36c5a6ba Merge pull request #11539 from milescoviello/test/npmanager-signed-out-state
test(libSceNpManager): cover the signed-out answers of the NP state, sign-up, reachability and premium queries
2026-10-27 19:06:12 +13:00
Dean 182a74381c Merge pull request #11537 from milescoviello/test/pthread-rename
test(libkernel): cover scePthreadRename's rename and its null checks
2026-10-27 19:05:56 +13:00
iAbdulrrahman 9f77f256a9 feat(libc): implement 64-bit atomic fetch helpers 2026-10-27 09:05:24 +03:00
Dean a428de6911 Merge pull request #11535 from milescoviello/test/npsessionsignaling-activate-session
test(libSceNpSessionSignaling): cover sceNpSessionSignalingActivateSession's argument, context and mode checks
2026-10-27 19:05:19 +13:00
Dean 783b391bca Merge pull request #11534 from milescoviello/test/kernel-gettimeofday
test(libkernel): cover sceKernelGettimeofday's null check and the time it reads
2026-10-27 19:05:03 +13:00
Dean ad29cabe9e Merge pull request #11533 from milescoviello/test/playgo-progress-and-install-chunks
test(libScePlayGo): cover scePlayGoGetProgress's checks and scePlayGoGetInstallChunkId on a chunk table
2026-10-27 19:04:44 +13:00
Dean 4291b04daf Merge pull request #11528 from pushkarreddyy/test/gamecustomdatadialog-uninitialized-null-argument-coverage
test(libSceGameCustomDataDialog): cover null argument handling before initialization
2026-10-27 19:04:27 +13:00
Dean 31a50b73d6 Merge pull request #11527 from StoneDC/fix/history-report-output-errors
fix(tools): report history output failures as usage errors
2026-10-27 19:04:07 +13:00
Dean 3067e92814 Merge pull request #11526 from StoneDC/fix/nid-download-content
fix(tools): validate downloaded NID data before caching
2026-10-27 19:03:52 +13:00
Dean debf629cfd Merge pull request #11524 from StoneDC/fix/input-mapper-invalid-url
fix(input-mapper): keep serving after malformed request URLs
2026-10-27 19:03:30 +13:00
Dean f30d46345e Merge pull request #11523 from StoneDC/fix/progress-counter-validation
fix(tools): validate library counters before progress comparisons
2026-10-27 19:03:13 +13:00
Dean 8001b11043 Merge pull request #11517 from milescoviello/test/npmanager-get-account-id-a
test(libSceNpManager): cover sceNpGetAccountIdA's signed-out answer
2026-10-27 19:02:37 +13:00
Dean e6c793fcd0 Merge pull request #11515 from milescoviello/test/systemservice-launch-player-dialog
test(libSceSystemService): cover sceSystemServiceLaunchPlayerDialog with a null and an initialized param
2026-10-27 19:02:22 +13:00
Dean c8e7e1fdb4 Merge pull request #11514 from milescoviello/test/playgo-set-install-speed
test(libScePlayGo): cover scePlayGoSetInstallSpeed's handle check and the speed it stores
2026-10-27 19:02:06 +13:00
Dean 6dca6acab4 Merge pull request #11512 from pushkarreddyy/fix/prepare-release-notes-json-shapes
fix(tools): handle unexpected JSON response shapes in prepare_release_notes
2026-10-27 19:01:50 +13:00
Dean d37a8d0e24 Merge pull request #11501 from pushkarreddyy/test/npsnsfacebookdialog-uninitialized-null-argument-coverage
test(libSceNpSnsFacebookDialog): cover null argument handling before initialization
2026-10-27 19:01:32 +13:00
Dean 9e2e90dc00 Merge pull request #11498 from pushkarreddyy/test/npfriendlistdialog-uninitialized-null-argument-coverage
test(libSceNpFriendListDialog): cover null argument handling before initialization
2026-10-27 19:00:53 +13:00
Dean eccb92d9bb Merge pull request #11497 from pushkarreddyy/test/hmdsetupdialog-uninitialized-null-argument-coverage
test(libSceHmdSetupDialog): cover null argument handling before initialization
2026-10-27 19:00:38 +13:00
Dean 32906a0659 Merge pull request #11494 from iAbdulrrahman/feat/libc-bit-search-functions
feat(libc): implement ffs, ffsl, ffsll, fls and flsll bit search functions
2026-10-27 19:00:19 +13:00