Commit Graph
34 Commits
Author SHA1 Message Date
Adrià f6a2091b65 Merge pull request #6113 from ArjenS-LA/fix/import-audit-export-suffix
fix(tools): normalize qualified ELF module exports
2026-10-17 01:30:12 +02:00
Adrià d106eefb8a Merge pull request #5713 from Ondra97/codex/fix-audit-partial-source-stamp
fix(tools): retain source commit when Git status fails
2026-10-15 14:12:10 +02:00
Adrià beb723a18a Merge pull request #5571 from Dripl1x/codex/fix-tools-out-of-file-section-tables
fix(tools): audit ELF modules with out-of-file section tables
2026-10-15 13:22:48 +02:00
ArjenS-LA fcd477faf8 fix(tools): normalize qualified ELF module exports 2026-10-14 15:35:59 -07:00
Adrià 153d5d469d Merge pull request #5519 from Zinebyte/fix/import-audit-module-sidecars
fix(tools): ignore non-module sidecars in import audit
2026-10-14 23:39:08 +02:00
Kang, Harry Zixuan b2c9e91102 fix(relinker): audit dependencies without imported functions 2026-10-14 20:57:16 +02:00
Adrià 9d48178c55 Merge pull request #5310 from Ondra97/codex/fix-audit-elf-versions
fix(tools): reject unsupported ELF versions in import audits
2026-10-14 20:56:41 +02:00
Adrià 06ae8eebed Merge pull request #5308 from Ondra97/codex/fix-audit-hash-load-bounds
fix(tools): keep ELF hash metadata inside load mappings
2026-10-14 20:55:54 +02:00
Adrià 6117ba743e Merge pull request #5283 from Ondra97/codex/fix-audit-dynamic-terminator
fix(tools): stop ELF dependency audits at DT_NULL
2026-10-14 20:53:44 +02:00
Adrià 918565b662 Merge pull request #5273 from Ondra97/codex/fix-import-audit-module-collisions
fix(tools): reject ambiguous guest modules in import audit
2026-10-14 20:52:47 +02:00
Adrià a1b6be7ef0 Merge pull request #5269 from Nixitov/feat/relinker-weak-imports
fix(tools): do not report weak imports as a title's current stop
2026-10-14 20:52:19 +02:00
Adrià 97eab6e63b Merge pull request #5430 from Prophet069/codex/pr-strict-provider-audit-20261013
feat(tools): fail import audits on strict provider mismatches
2026-10-14 14:08:31 +02:00
Ondra97 fd3c679604 fix(tools): retain source commit when Git status fails 2026-10-14 09:44:33 +02:00
Evgeniy Kazarin 7ff22e76dc fix(tools): audit ELF modules with out-of-file section tables
Use program headers when the section table starts at or beyond EOF. Keep rejecting tables that start inside the file but are truncated.

Cover imports, exports, full module audits, and extended section counts.
2026-10-14 07:59:12 +03:00
Dean 60ad9ad47c Merge pull request #4951 from Ondra97/codex/fix-shared-library-import-audit
fix(tools): audit stubs from shared library sources
2026-10-14 15:54:35 +13:00
Dean cdea950b7e Merge pull request #4825 from StefanBuc/prepare/elf-import-audit-20261012
fix(tools): validate empty ELF dynamic symbol table bounds
2026-10-14 15:37:26 +13:00
Nixitov b9acf34801 fix(tools): do not report weak imports as a title's current stop
A weak import is optional: the entry stub leaves it unresolved and the loader sees null, so the title runs. The relinker now records the symbol binding in the call registry and import_audit skips weak imports when computing the current stop. regie5 (PPSA99520) weak-links sceLncUtilLaunchApp and was reported as stopping there while it runs past it.
2026-10-14 04:27:55 +02:00
Zinebyte 3b2601daa3 fix(tools): ignore non-module sidecars in import audit 2026-10-13 18:24:56 -04:00
Prophet069 dbbe54eebe feat(tools): fail import audits on strict provider mismatches 2026-10-13 21:33:51 +02:00
lorkydey d45fee9b69 fix(import-audit): preserve JSON reports when writing fails 2026-10-13 21:20:45 +02:00
Stefan Bucataru 89a8ec58b1 fix(tools): validate empty ELF dynamic symbol table bounds 2026-10-13 21:07:36 +02:00
Ondra97 1666ab4bd0 fix(tools): reject unsupported ELF versions in import audits 2026-10-13 18:58:10 +02:00
Ondra97 b309086b1a fix(tools): keep ELF hash metadata inside load mappings 2026-10-13 18:58:04 +02:00
Ondra97 d327a7e23d fix(tools): stop ELF dependency audits at DT_NULL 2026-10-13 18:57:32 +02:00
Ondra97 27e5a6d75d fix(tools): reject ambiguous guest modules in import audit 2026-10-13 18:12:46 +02:00
Nixitov a3a3f3a9ce feat(tools): report each converted title's current stop in import_audit
The stop is the first unresolved import in the registry order, the line the loader fails on. Print it per registry and add it to the --json result.
2026-10-13 16:50:51 +02:00
Ondra97 66edc7463f fix(tools): audit stubs from shared library sources 2026-10-13 07:59:10 +02:00
MarcZX100 acd821f7ce fix(tools): audit sectionless guest modules 2026-10-12 18:46:25 +00:00
Leandro Soares 6054923cd5 fix(tools): audit the imports of --modules files
(cherry picked from commit 2d0d707802c190f4d8ed93d01427576accbc08b1)
2026-10-12 18:46:25 +00:00
Lorkyandlorkydey 44e9050a58 fix(import-audit): parse export aliases as C++ tokens (#4196)
Co-authored-by: lorkydey <lorky.contact@gmail.com>
2026-10-12 20:30:54 +13:00
MrMha d6bc502765 fix(import-audit): validate ELF and PE exports before reporting 2026-10-11 18:20:18 +04:00
GalaxyGamingFRandClaude Fable 5.1 50c288810e fix(tools): key import audit stubs by library
source_stubs pooled done NIDs across all libraries, so a throwing stub
in libSceShare.native counted as implemented when libSceShare had the
same function. Stubs are now keyed by (library.prx, nid) and audit marks
an import stub only when every provider of it is a stub.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9UU71SP1UKGR51Sowbgmq
2026-10-11 02:42:36 -07:00
JohnMandClaude Opus 5.5 c1b4eb2001 fix(tools): exit 2 when import_audit cannot read an input or write --json
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 21:35:49 +08:00
abderahmane-ai 9e6a6004a5 feat(tools): add an import audit for converted games
A converted game fails at launch on the first system function that no
built library exports, one function per run. tools/import_audit.py reads
the registry written by relinker --registry and classifies every imported
NID in one pass:

- implemented: a built library exports it
- stub: exported, but the whole function calls NotImplemented_nid_no_patch
- absent: no built library exports it, so the loader fails
- module: the import names a file the title ships itself

Exports are read from the built .prx files (ELF dynsym and PE export
table), the same view the loader has. Stubs come from the source tree
through tools/progress.py, and NIDs through tools/nid_names.py. The report
also lists needed libraries without a file and imports found only in a
different library than the one they name. --names adds names from an
aerolib.csv file and never downloads one; --json writes the full result
stamped with the repository commit.

The test builds ELF and PE libraries byte by byte, checks that every
reference lands in exactly one class, and pins the NID of
sceMsgDialogProgressBarSetValue (wTpfglkmv34) as an external anchor.
Registered in CTest as import_audit.
2026-10-08 15:47:46 +02:00