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#65Fixes#120Fixes#132
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.
- 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)
* 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
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.
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.