313 Commits

Author SHA1 Message Date
Luke Street e4219e7644 Version 1.8.3 v1.8.3 2026-03-01 22:36:44 -07:00
Luke Street 6bef60c26a I should add a precommit hook 2026-03-01 22:35:32 -07:00
Luke Street 43d602b278 Warn and continue on missing REL relocation target
Allows Epic Mickey's broken REL to analyze without failing.

Fixes #124
2026-03-01 22:33:56 -07:00
Luke Street af8595ed98 Improve extab handling with interleaved extabindex
Fixes #108
2026-03-01 21:58:21 -07:00
Luke Street 2b39879d43 fmt & clippy v1.8.2 2026-03-01 21:28:15 -07:00
Luke Street 6baa8a0e0e Version 1.8.2 2026-03-01 21:24:17 -07:00
Luke Street 89106d0a19 Clamp inferred jump table sizes to section size
Fixes #121
2026-03-01 21:21:36 -07:00
Luke Street 46e60524fe Fix extab splitting with -inline deferred
With `-inline deferred`, functions within a TU may be emitted in reverse order
in `.text`, while extab data remains in source (forward) order. This means
consecutive extabindex entries can reference decreasing extab addresses.
To avoid contradictory ordering constraints (which cause cyclic dependency errors
in link order resolution), we group such reversed entries and assign them a single
TU name, creating one covering split per section type.

Fixes #65
Fixes #120
Fixes #132
2026-03-01 21:00:12 -07:00
Luke Street c4de1b467b Version 1.8.1 v1.8.1 2026-03-01 16:11:37 -07:00
Luke Street 06749b8a4f Reformat for edition 2024 2026-03-01 16:00:51 -07:00
Luke Street 02b343f793 Fix advisories 2026-03-01 15:59:20 -07:00
Luke Street 65fdf9be70 Fix nightly clippy warnings
- Use sort_by_key with Reverse instead of sort_by
- Remove unnecessary let binding in create_auto_symbol_name
2026-03-01 15:57:42 -07:00
Luke Street 8c77e4982f Add vaddr support for REL section headers in splits.txt
Allow REL modules to specify fixed virtual addresses per section in the
splits.txt header (e.g. vaddr:0x805A1234). Split and symbol addresses
are normalized to section-relative internally, and denormalized back to
absolute when writing splits.txt and symbols.txt. This enables
communities like MKW to use fixed addresses for RELs that load at known
locations. Virtual addresses flow into .note.split for objdiff support.
2026-03-01 15:57:13 -07:00
Luke Street 0e8ea40221 Update to Rust edition 2024
- Bump edition to 2024 and rust-version to 1.85
- Fix match ergonomics for implicitly-borrowing patterns
- Wrap env::set_var in unsafe block (required in edition 2024)
2026-03-01 15:57:03 -07:00
bluisblu aa635e1992 Analysis: Use stricter function terminator checks in prologue detection (#135) 2026-02-22 22:35:55 -07:00
Dávid Balatoni fdf1ed0a49 Split out dwarf printing code to a separate file (#134) 2026-02-06 09:00:34 -07:00
Dávid Balatoni 7324649f48 Revert my own change that completely messes up typedefs in the dwarfdump (#133)
* Revert my own change that completely messes up array typedefs

* Fix formatting
2026-01-31 16:12:14 -07:00
Dávid Balatoni c15423bf36 Demangle variable names in the dwarf dump (#131)
* Demangle variable names

* Fix small issue
2026-01-31 16:12:02 -07:00
Luke Street af19c92383 Version 1.8.0 v1.8.0 2025-12-30 19:13:06 -07:00
Dávid Balatoni 367deae7ca Big dwarf dump improvements (#129)
* Support type definitions inside functions in dwarf dump
Detect subroutine parent class and constness
Support nested typedefs

* Omit unnecessary/duplicate dwarf info

* Move total size to before struct so that clangd picks it up

* Subroutine typedefs and subroutine block inner types

* Handle override, const, volatile, virtual, static function logic

* Omit return type of ctors and dtors

* Add back the nested template thing because it's actually useful

* Return type omitting bug fix

* Add static struct members

* Fix formatting

* Handle typedef specification attribute

* Avoid adding duplicate inline params

* Handle non-overriden GCC constructors and destructors

* clippy

* Cargo fmt

* Apply clippy's suggestion

* Extract producer and correctly handle MWCC static members

* Enable static member function detection only for GCC

* Fix bug where function parameter wasn't applied if both names were None

* Fix gcc boolean logic and omit __in_chrg

* Add parent fallback for PS2 MW

* Demangle mangled function names

* Have inlines and blocks in the same vec to keep their correct order

* Change comment

* List member functions inside struct

* Remove Inline comment and add a new line before blocks

* Fix fmt and check

* Support appending static member functions to struct on GCC

* Reverse enum members in GCC
2025-12-30 19:12:47 -07:00
Luke Street d766ff50ca Add skip_cfa_ranges option to config.yml
This allows configuring the function analyzer to skip certain
problematic ranges in the program. Only for exceptional cases
that prevents analysis from finishing.

When using this feature, ensure that no `function` symbols
exist for the affected range in symbols.txt, otherwise CFA
will run for the defined functions, regardless of this setting.
2025-12-30 19:02:26 -07:00
Luke Street 3434c06736 Version 1.7.6 v1.7.6 2025-12-09 10:00:27 -07:00
robojumper 49b21788a7 Fix WindowedFile::read (#128) 2025-12-09 09:53:44 -07:00
Luke Street c30965c9ed Version 1.7.5 v1.7.5 2025-12-03 18:05:32 -07:00
Max 329936be00 Fix .ctors splitting for RELs (#126)
The ProDG hack in split_ctors_dtors caused the
automated splitting of .ctors to be incorrect
for RELs, by stripping relocatable function pointers
out of the object. This patch checks for relocations,
resolving both of the build failures observed in #125.
2025-12-01 10:18:25 -07:00