Commit Graph
232 Commits
Author SHA1 Message Date
Adrià 566f13bfdf Merge pull request #11671 from StoneDC/fix/check-skips-notrun
fix(ci): reject tests that were not run before skip exemptions
2026-10-28 14:48:46 +01:00
Adrià ce10709d63 Merge pull request #11668 from StoneDC/fix/select-test-graph-closures
fix(tools): reject dangling test graph targets
2026-10-28 14:48:35 +01:00
Adrià 3b979d42a9 Merge pull request #11412 from blawesom/feat/host-test-executable-helper
build: add configure_host_test_executable for host-only test executables
2026-10-28 10:06:08 +01:00
Adrià cc672fdfc6 Merge pull request #11366 from guglia001/test/relinker-conversion-fuzzer
test(relinker): add a libFuzzer target for the whole conversion
2026-10-28 09:56:49 +01:00
Dean 07ac66dad2 Merge pull request #10995 from MarcZX10/marc/pr-overlap-parallel-pages
perf(tools): fetch pr_overlap pull request pages in parallel and cache base exports
2026-10-28 12:57:23 +13:00
Dean bbb11b6974 Merge pull request #11062 from MarcZX10/marc/ci-nightly-sanitizers
ci: run every test under ASan and UBSan nightly
2026-10-28 05:58:34 +13:00
blawesom f7874ba21e build: add configure_host_test_executable for host-only test executables
A test executable that links no guest library and is built for MinGW fails
to link when one of its objects has an exception landing pad: the guest
libc provides __gxx_personality_v0, and host-only links do not see it.

configure_host_test_executable(<target>) centralises the fix already
spelled out by hand in core/libs: native SEH unwind tables and a static
runtime. Migrated the two targets whose blocks matched it exactly
(patched_libraries_tests, guest_kernel_sys_threads_tests); their MinGW
build is unchanged by construction. Documented the rule in CONVENTIONS.

Unblocks none; guards the same class as the CI check in #11343.
2026-10-27 10:51:30 +01:00
guglia001 1bdb8388ed test(relinker): add a libFuzzer target for the whole conversion
ANYPS5_BUILD_FUZZERS builds relinker_conversion_fuzzer with AddressSanitizer
and UndefinedBehaviorSanitizer in relinker-only Clang builds on Linux. The
first input byte selects the target system, --to-intel and the unused-filter
level; the rest is the executable passed to Conversion::Convert, the path the
web converter takes. tools/relinker_fuzz_seeds.py writes the relinker test
fixtures as seeds, and CTest runs a short smoke run.
2026-10-27 10:12:35 +01:00
Dean a636927e5f Merge pull request #8161 from Celegans12/feat/tools-ab-split
feat(tools): split the periodic reports of an APS5_AB run by phase
2026-10-27 21:34:47 +13:00
Dean 808a557ac3 Merge pull request #11343 from MarcZX10/marc/ci-mingw-host-only-tests
ci(windows): link host-only tests on pull requests
2026-10-27 21:23:20 +13: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
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
Adrià cd9e3f0982 Merge pull request #10519 from shurhundo/fix/check-compile-response-files
fix(check-compile): expand response files before syntax checks
2026-10-27 04:52:09 +01:00
StoneDC 29e43ebd5b fix(ci): preserve intentional CTest skips 2026-10-27 11:46:00 +08:00
StoneDC dcb1013c48 fix(tools): reject dangling test graph targets 2026-10-27 09:59:14 +08:00
Dean a120df3486 Merge pull request #11563 from oneandonlydean/ci/ctest-timeouts-windows
test(ci): give public_headers and check_compile_modes longer timeouts
2026-10-27 10:41:27 +13:00
Dean c3fc606849 Merge pull request #11179 from MarcZX10/marc/build-tsan-option
build: add an ANYPS5_ENABLE_TSAN option for ThreadSanitizer builds
2026-10-27 10:39:03 +13:00
Dean 184c6f96fc Merge pull request #11153 from plexerPK/codex/vulkan-validation-gate
feat(tools): compare repeated Vulkan validation runs
2026-10-27 10:37:50 +13:00
Dean 79b20bbf3d Merge pull request #9213 from fma-rc/feat/tools-annotate-module
feat(tools): name a relinked module's imports, stubs and exports in its disassembly
2026-10-27 10:29:33 +13:00
Dean Galvin 758f2392f4 test(ci): give public_headers and check_compile_modes longer timeouts
public_headers takes about 18.7 s and the check_compile_modes cases are
similar, against a 30 s limit, so they time out on a loaded Windows runner.
public_headers now has 90 s and each check_compile_modes case 60 s.
2026-10-27 08:37:29 +13:00
StoneDC d5515327e5 fix(tools): report history output failures as usage errors 2026-10-27 01:49:42 +08:00
Adrià Franch 8423e433f4 fix: drop duplicate jxrlib registration after rebase 2026-10-26 13:35:04 +01:00
Kraken fab3168576 build: isolate JXR dependency registration 2026-10-26 13:34:51 +01:00
Kraken 5aa1f6fd44 feat(libSceJxr): implement pixel format lookup 2026-10-26 13:34:43 +01:00
Celegans12 2801497e0c feat(tools): split the periodic reports of an APS5_AB run by phase
An APS5_AB run interleaves phases A and B, and every periodic report
covers the time since the previous report of its kind, so its numbers
need sorting before A and B can be compared. tools/ab_split.py reads
the [ab] lines and counts a [present], [gputime], [draw] pipelined or
[syncwait] report for a phase only when its whole span lies inside the
phase after its settled line. It prints presents per 10 s and frame
time per phase, GPU busy and idle time per frame, GPU time per present
(also per --program key and --class), committer, drain and hook-wait
times, the A and B means, and each B phase against the mean of its
neighbouring A phases, which cancels a linear drift.

AI-assisted: yes
2026-10-26 12:26:29 +01:00
Adrià 2ba343e731 Merge pull request #9650 from JJenkx/windows/audit-dump-tool
feat(tools): audit an extracted title's imports in one step
2026-10-26 11:21:49 +01:00
shurhundo d935d073e1 Merge remote-tracking branch 'origin/main' into fix/check-compile-response-files-rebased
# Conflicts:
#	CMakeLists.txt
#	tools/check_compile.py
#	tools/tests/test_check_compile.py
#	tools/tests/test_check_compile_preprocessor.py
2026-10-26 17:55:05 +08:00
MarcZX10 a059a925cb fix(ci): avoid CMake test registration overlap 2026-10-26 07:57:14 +00:00
MarcZX10 1dc7ca79af fix(ci): register selector test with Python tests 2026-10-26 07:57:14 +00:00
MarcZX10 7bf29ea91b ci(windows): link host-only tests on pull requests 2026-10-26 07:57:14 +00:00
Adrià ef1ddae699 Merge pull request #9739 from veosett/codex/check-compile-save-temps
fix(tools): strip save-temps flags from syntax checks
2026-10-26 01:32:56 +01:00
Adrià 1f68b1f776 Merge pull request #9605 from harisibrar1/test/shard-shader-cache-runtime-sources
test(recompiler): shard shader_cache_runtime_sources to stay under 30 s
2026-10-25 22:13:35 +01:00
MarcZX10 8dfbab6fcd build: compile and link with -fsanitize=thread under ANYPS5_ENABLE_TSAN
Add the ThreadSanitizer compile and link options, keep frame pointers for usable report stacks, and define ANYPS5_ENABLE_TSAN=1 so sources and tests can tell a ThreadSanitizer build apart. The guest arena keeps its default range: it starts below ThreadSanitizer's application memory limit, and the arena already records host mappings such as the runtime's protected gaps as used ranges.
2026-10-25 20:38:12 +00:00
MarcZX10 fbe1a9b0f3 build: keep ThreadSanitizer executables dynamically linked
GCC rejects -fsanitize=thread together with -static ("cannot specify -static with -fsanitize=thread"), and the ThreadSanitizer runtime has to come up before libc. Leave the -static -static-libgcc -static-libstdc++ executable flags out when ANYPS5_ENABLE_TSAN is on, as the ASan branch already does.
2026-10-25 20:38:12 +00:00
MarcZX10 4da863bf56 build: add the ANYPS5_ENABLE_TSAN option for Linux GCC and Clang builds
Declare a ThreadSanitizer switch next to ANYPS5_ENABLE_ASAN and reject it on other systems and compilers, as ASan does. The two sanitizers cannot share one process, so configuring both is a fatal error.
2026-10-25 20:38:12 +00:00
plexerPK 34368b9e54 feat(tools): gate repeated Vulkan validation comparisons 2026-10-25 20:41:19 +01:00
Adrià 1a7a3dfd4f Merge pull request #9572 from JJenkx/windows/symbolize-sampler-stacks
feat(tools): symbolize the Windows samplers' stacks
2026-10-25 20:18:58 +01:00
Kovalev Vladislav 9fc0a99dac test(tools): split syntax check suites within CI time limit 2026-10-25 20:18:35 +01:00
Jamie 18ee716d53 fix(tools): strip forwarded dependency flags from syntax checks 2026-10-25 14:18:39 +00:00
MarcZX10 389ff88dff build: register the pr_overlap export cache test 2026-10-25 13:06:41 +00:00
MarcZX10 400f728794 build: register the pr_overlap pages test 2026-10-25 13:06:40 +00:00
MarcZX10 17aac28ca1 build: register the pr_overlap progress test
Run tools/tests/test_pr_overlap_progress.py as pr_overlap_progress next to pr_overlap_branch_scan, so check_test_registration --scripts finds a runner for it.
2026-10-25 13:06:40 +00:00
David a9f1ade5d6 test(tools): register the pr_overlap branch scan test
test_script_registration fails for a test script that no add_test or workflow runs, which stopped the relinker matrix on the previous commit.
2026-10-25 13:06:40 +00:00
JJenkxandClaude Opus 5.5 aeaa3b58f0 feat(tools): audit an extracted title's imports in one step
Auditing a title before its first run takes several manual steps from
GAME_TESTING: unwrap eboot.bin and every module the title ships with
unwrap_self.py, convert them with relinker --registry (with
--module-dir for Unity's Media/Modules and Media/Plugins, and for
modules beside eboot.bin), and pass every registry and module folder
to import_audit.py. Missing one module folder turns its imports into
false "absent" entries.

tools/audit_dump.py <app0> --relinker <path> --libs <dir> does those
steps into a temporary directory (or --work <dir>), reading the dump
only. A module that is already a plain ELF is copied; one that is
neither a SELF nor an ELF fails the run. It returns import_audit's exit
code, or 2 when unwrapping or conversion fails.

audit_dump covers the module folders and the module-dir list, a
refused module, the relinker command line, the arguments passed to
import_audit, a relinker failure and the argument errors.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 23:45:09 -04:00
Queuze 8a6f7843a2 test(check-compile): split missing operand cases 2026-10-24 21:31:23 -03:00
Queuze 699337abfd fix(check-compile): keep one syntax action 2026-10-24 21:31:23 -03:00
Queuze e5fcbb775d fix(check-compile): enforce syntax mode 2026-10-24 21:31:23 -03:00
Queuze 19256fdcf1 test(check-compile): split missing operand cases 2026-10-24 21:26:30 -03:00
Queuze 5d73837bfa fix(tests): keep syntax scripts discoverable 2026-10-24 21:21:51 -03:00
Queuze 348c6fd80b test(check-compile): combine syntax fixes 2026-10-24 21:18:08 -03:00