Commit Graph
108 Commits
Author SHA1 Message Date
Dean 6a28efaa27 Merge pull request #12266 from MarcZX10/fix/tools-deeply-nested-json-and-web-test
fix(tools): report deeply nested JSON as invalid input and run the reserved-name archive test
2026-10-29 00:30:16 +13:00
MarcZX10 70cd9c91c2 test(tools): audit imports from registries nested far deeper than the JSON parser allows
A registry and a needed-libraries file of 200000 opening brackets have to end in
an audit error with exit code 2 and the read-error message, not a traceback.
2026-10-28 06:04:59 +00:00
rooklz cc7276f09c fix(tools): report import_audit symbolic link loops as failures 2026-10-28 04:53:06 +00:00
Adrià a3ac94774e Merge pull request #11622 from BunnyFl/fix/import-audit-lazy-branch-variants
fix(tools): read preprocessor branch combinations lazily in import_audit
2026-10-28 03:39:32 +01:00
Dean 951399570d Merge pull request #10942 from mashingaan/fix/import-audit-bare-filenames
fix(tools): reject bare module filename aliases
2026-10-28 13:04:32 +13:00
Dean 985e4e0cb6 Merge pull request #11473 from MarcZX10/marc/fix-windows-prx-name-case
fix(tools): fold Windows PRX suffix case
2026-10-27 18:39:51 +13:00
Dean 6988f67406 Merge pull request #10996 from SandstromPL/fix/progress-exported-nid-no-patch
fix(tools): count functions exported with APS5_EXPORT under a _nid_no_patch name
2026-10-27 18:29:57 +13:00
BunnyFlandClaude Opus 5.5 3d2aebfa03 fix(tools): keep nested preprocessor branches lazy in import_audit
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 01:12:56 +01:00
BunnyFlandClaude Opus 5.5 94d991e03a fix(tools): read preprocessor branch combinations lazily in import_audit
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 23:46:50 +01:00
MarcZX10 d4a9619fdd fix(tools): preserve case-sensitive PE module aliases 2026-10-26 22:02:25 +00:00
MarcZX10 4eb784e5a2 test(tools): cover case-folded Windows PRX suffixes 2026-10-26 22:00:30 +00:00
Dean 0dbed7b5b5 Merge pull request #10560 from Bram910/fix/audit-gnu-hash-chain-walks
fix(tools): avoid repeated GNU hash chain walks
2026-10-27 09:01:01 +13:00
Dean a49a39d09a Merge pull request #10618 from xTRACKGOD/fix/import-audit-empty-pe-exports
fix(tools): accept PE libraries without export tables
2026-10-26 20:33:49 +13:00
Dean e41113fd39 Merge pull request #10352 from Bram910/fix/audit-dynamic-tables
fix(tools): validate ELF import table file ranges
2026-10-26 13:31:43 +13:00
SandstromPLandClaude Opus 5.5 0dc254e83f fix(tools): count functions exported with APS5_EXPORT under a _nid_no_patch name
progress.py skips every definition whose name ends in _nid_no_patch or
_nid_no_patch_cut, which are meant to be internal helpers. Some libraries
export such functions with APS5_EXPORT under an explicit NID or name:
libSceAgcVsh (150), libSceNKWebKit (150) and libSceJson2's inventory
(66), all of them calling NotImplemented_nid_no_patch. None of the 366
was counted, so those three libraries showed 151 of 151 functions where
they declare 517, and import_audit, which takes its stub list from the
same scan, reported imports of them as implemented.

A _nid_no_patch definition is now skipped only when no APS5_EXPORT in its
library exports it. The library totals go from 6104 of 12305 to 6104 of
12671 on main.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 18:37:48 +05:30
thepoppfish 464c48b17b fix(tools): require module suffixes for filename aliases 2026-10-25 14:10:33 +03:00
Adrià FranchandClaude Sonnet 5.5 7b557b5e07 test(tools): pin that the alias scanner receives BOM-free decoded text
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 11:48:44 +01:00
emirplus 1c13cf5a99 fix(tools): decode sources with utf-8-sig and reconfigure streams in import_audit
Specify utf-8-sig encoding when reading library source files in
source_stubs so UTF-8 characters are preserved on Windows and leading
BOMs are tolerated.

Reconfigure stdout and stderr streams to UTF-8 with backslashreplace
at the beginning of main, and specify UTF-8 encoding when writing test
fixtures.
2026-10-25 11:47:31 +01:00
memob 1ee2fe9ff9 test(tools): count the partial class in the module suffix audit tests 2026-10-24 19:49:55 -04:00
memob df1a204a4f fix(tools): count a throw inside a plain block as unconditional
A compound statement that is not a conditional, loop or lambda always runs, so its calls are collected like the body's own and its exits stop the scan. An export whose only throw sits in such a block stays a stub and fails a strict audit.
2026-10-24 19:49:14 -04:00
memob d606317bca test(tools): match the stub heading from main in the partial class test 2026-10-24 19:49:14 -04:00
memob 1e123e64ff fix(tools): call an export partial when a conditional exit precedes its throw
A conditional return, co_return or goto before the throwing call leaves a path that succeeds, so the audit stops collecting calls at it and the export, or a helper it calls, is partial. A guard that throws still leaves every path throwing, so it stays a stub.
2026-10-24 19:49:14 -04:00
memob bf358a9486 fix(tools): call an export partial only when some preprocessor branch does not throw
The previous check called any stub call inside an #if block partial,
so an export that throws in every #if, #elif and #else alternative was
reported as partial. Each combination of preprocessor branches is now
expanded into its own body, an #if without #else gets an empty
alternative, and the export is a stub when every combination reaches
the throw. More than 256 combinations in one function, or unbalanced
directives, are reported as errors.
2026-10-24 19:49:14 -04:00
memob a88acf15de fix(tools): count a stub call under a preprocessor branch as partial
A NotImplemented_nid_no_patch call inside an #if, #ifdef or #ifndef block
opened in the export's own body runs only on some hosts, so the export
is partial, not a stub. An export wrapped in a preprocessor block from
outside its body keeps its class.
2026-10-24 19:49:13 -04:00
memob 41739f0174 feat(tools): split guarded exports into a partial import_audit class
An export whose body reaches NotImplemented_nid_no_patch on every path,
directly or through a helper that always reaches it, stays a stub. One
that reaches it only under a condition (if, else, loop, switch, ternary,
short-circuit or lambda) is now classified as partial, so implemented
exports with guards for unknown behaviour are no longer counted as stubs.
progress.py and the progress page are unchanged.
2026-10-24 19:49:13 -04:00
Bram910 93fe401062 test(tools): clarify GNU hash chain coverage 2026-10-24 20:07:38 +02:00
xTRACKGOD 5d6bc58bd0 fix(tools): accept PE libraries without export tables 2026-10-24 18:33:15 +05:30
Dean 99ad843970 Merge pull request #10311 from MarrasFederico/fix/import-audit-unterminated-dynamic
fix(tools): reject dynamic tables without DT_NULL in import_audit
2026-10-24 23:40:54 +13:00
Bram910 ae32db8df4 fix(tools): avoid repeated GNU hash chain walks 2026-10-24 12:04:38 +02:00
Dean f7b1b3d694 Merge pull request #8876 from Ninot1Quyi/codex/protect-audit-cmake-inputs
fix(tools): protect CMake inputs from audit JSON output
2026-10-24 22:11:35 +13:00
Federico Marras 1723ade7ba fix(tools): reject dynamic tables without DT_NULL in import_audit 2026-10-24 10:26:43 +02:00
Dean 5540852c54 Merge pull request #9241 from veosett/codex/audit-sdk-symbol-names
fix(tools): flag qualified imports exported only under a NID
2026-10-24 14:21:32 +13:00
Dean 4936511ad5 Merge pull request #9226 from AMRYB/fix/audit-windows-module-extension-case
fix(tools): normalize Windows module suffix case before matching
2026-10-24 11:53:15 +13:00
Dean b9a8704095 Merge pull request #8718 from ArjenS-LA/fix/audit-module-weak-imports
fix(tools): preserve weak guest module imports in audits
2026-10-24 10:09:05 +13:00
Bram910 5bf97cce6b fix(tools): validate ELF import table file ranges 2026-10-23 20:48:28 +02:00
Dean b27138800c Merge pull request #8719 from ArjenS-LA/fix/audit-windows-system-suffixes
fix(tools): resolve Windows system library suffixes in audits
2026-10-23 21:09:12 +13:00
Kovalev Vladislav b7a6e9d245 fix(tools): decouple symbol mismatches from stub classification 2026-10-23 12:23:51 +06:00
Kovalev Vladislav 46ff145113 fix(tools): flag qualified imports exported only under a NID 2026-10-23 12:18:57 +06:00
Amr Yasser e3110be3a3 fix(tools): normalize Windows module suffix case before matching 2026-10-21 18:36:39 +03:00
Qu Yi ebce9ce6c0 fix(tools): protect CMake inputs from audit JSON output 2026-10-21 11:53:59 +08:00
MarcZX10 037ad5dd96 fix(tools): resolve Windows providers case-insensitively 2026-10-20 22:42:36 +00:00
ArjenS-LA cf17f05730 fix(tools): resolve Windows system library suffixes in audits 2026-10-20 15:04:20 -07:00
ArjenS-LA 700be18694 fix(tools): preserve weak guest module imports in audits 2026-10-20 15:03:51 -07:00
MarcZX10 6736aa663d test(tools): resolve temp paths in missing library hint 2026-10-20 22:55:30 +02:00
xXPBSXxandClaude Sonnet 5.5 1e969c1c80 feat(tools): point import_audit at a missing library's module directory
A needed library with no file in --libs or --modules is reported, but when the
file sits elsewhere in the converted title's folder the report gave no way to
find it. import_audit now looks for it, case-insensitively, up to four levels
below each registry's folder and names the directory to pass with --modules.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 22:44:23 +02:00
Dean ebb5f6fcb4 Merge pull request #7440 from MrMha/feat/audit-strict-stubs-20261018
feat: optionally fail import audits on referenced throwing stubs
2026-10-21 09:14:03 +13:00
Adrià 4e860a5ed5 Merge pull request #7834 from parl0v/fix/import-audit-disambig-nid
fix(tools): strip the NID disambiguation suffix from declared names
2026-10-20 15:59:04 +02:00
Dean 275490311d Merge pull request #8124 from xXPBSXx/fix/import-audit-module-names
fix(tools): match import_audit module names like the relinker
2026-10-20 18:34:10 +13:00
xXPBSXxandClaude Sonnet 5.5 8609309863 fix(tools): match import_audit module names like the relinker
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 00:27:22 +02:00
eliasbruno124-dev 7991f0130e fix(tools): resolve unscoped registry imports from guest modules 2026-10-19 23:05:59 +02:00