Commit Graph
98 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 68a017c9fe fix(tools): report a deeply nested registry as an audit error in import_audit
read_registry and read_needed_registry catch OSError, UnicodeDecodeError and
JSONDecodeError, but a registry nested a few hundred thousand levels deep raises
RecursionError. main returns 2 for an AuditError and 1 for missing imports, so
the traceback ended with exit code 1 and a corrupt registry looked like a failed
import audit. RecursionError is now caught with the other read errors and
reported as an AuditError, so the exit code is 2.
2026-10-28 06:04:43 +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
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 edfca59cce fix(tools): fold Windows PRX suffix case 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
thepoppfish 464c48b17b fix(tools): require module suffixes for filename aliases 2026-10-25 14:10:33 +03: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 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 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
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
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
joedeangelis533-bot 00666a51eb fix(tools): ignore case in Windows host library lookup 2026-10-19 10:27:58 -04:00
Josip Parlov 9dd208fb9a fix(tools): strip the NID disambiguation suffix from declared names
The NID patcher and check_conventions resolve
fstat_nid_disambig1_nid_postfix to fstat. import_audit hashed it as
fstat_nid_disambig1, so a throwing stub with the suffix was keyed under
the wrong NID, and nid_names reported fstat and pwrite as rename-ready
instead of already-implemented.
2026-10-19 11:37:06 +02:00
Dean 7b3d5b4a48 Merge pull request #7159 from MarcZX10/codex/import-audit-pe-modules-6378
fix(tools): audit converted PE guest modules
2026-10-19 16:52:17 +13:00
Dean f5c0fab105 Merge pull request #7161 from MrMha/fix/audit-utf8-diagnostics-20261017
fix: preserve Unicode paths in import audit errors
2026-10-19 16:52:08 +13:00
MrMha 71de464e18 feat: optionally fail import audits on referenced throwing stubs 2026-10-18 10:19:56 +04:00
Dean a8581d3331 Merge pull request #6769 from MrMha/fix/audit-test-aliases-20261016
fix: exclude test export aliases from import audit classification
2026-10-18 12:57:36 +13:00
Dean 97c37af020 Merge pull request #6239 from ArjenS-LA/fix/audit-named-homebrew-imports
fix(tools): audit ordinary homebrew import names
2026-10-18 12:57:29 +13:00
Dean 91bc3cc03b Merge pull request #6778 from MrMha/fix/audit-multiple-aliases-20261016
fix: classify every explicit export alias in import audits
2026-10-18 12:57:17 +13:00