dc7e307c44
Rework section alignment handling
...
- Honor splits.txt alignment values when writing ldscript.lcf
- Add alignment values to ldscript_partial.lcf, remove hacky code from rel make
- Guess alignment values in DOL loader
Fixes #27
2024-04-30 18:04:17 -06:00
dac2dcfc9e
Explicitly check split end >= start
...
Fixes #48
2024-04-30 18:03:59 -06:00
fdafe59e13
Adds data:int
and data:short
for asm output
...
Fixes #41
2024-04-30 18:03:45 -06:00
bfa926ebbf
Write object address and size in asm comments
...
Fixes #37
2024-04-30 18:03:31 -06:00
989293a477
Add Yay0/Yaz0 compression & decompression
...
Uses orthrus-ncompress
Fixes #6
2024-04-30 18:03:00 -06:00
a156c3697f
Appease clippy
2024-04-03 00:18:16 -06:00
d0f39f1d82
Support global labels in REL creation (_savegpr, etc)
2024-04-03 00:13:15 -06:00
ccfbfd1a5a
Fix for jumptable naming in RELs
2024-04-03 00:12:46 -06:00
e9a9ed0453
Fixes for switch analysis
...
- When finalizing a block, restart analysis at
the first block
- Check for default case in jump table entries
2024-04-03 00:11:58 -06:00
7fd039722d
Format & use syntect regex-fancy
...
The onig crate no longer builds
in CI with cargo-zigbuild.
2024-03-13 18:30:15 -06:00
d727110262
Update all dependencies & support new demangle flag
...
- Support `--mw-extensions` flag for demangle
- Fix relocation handling for object crate upgrade
2024-03-13 18:23:09 -06:00
b829e15438
Rework .splitmeta, now .note.split
...
Uses actual ELF .note format, which is
more standard and handled better by mwld.
2024-03-04 18:12:20 -07:00
96b13be11d
Allow overriding jump table size analysis
...
When the analyzer detects a jump table,
it will now check for an existing object
symbol at that address, using that size
if present.
2024-03-04 18:11:31 -07:00
4f8a9e6fab
Write .splitmeta section in split objects
...
This enables showing the original address of
symbols in objdiff, as well as `elf disasm`
on split objects retaining the original
addresses.
2024-02-28 22:27:38 -07:00
Robin Avery
a94edb573f
Emit an error code when dol diff
does not match ( #43 )
...
* Emit an error code when `dol diff` does not match
* `exit(1)` instead of `bail`
2024-02-28 19:18:58 -07:00
Chippy
807dc6a440
Rename and output GCC extensions ( #40 )
...
Outputs GCC Source Info extensions
Add asm language to support DWARF emitted by MWCC MIPS assembler
Update MwOverlayBranch handling
2024-02-20 20:56:49 -07:00
1superchip
2784859c4f
Handle more CompileUnit attributes in DWARF ( #38 )
...
* Handle more DWARF CompileUnit attributes
Handle comp_dir and add two unknown attributes
* Remove comment about unknown attributes
2024-02-19 16:13:35 -07:00
9a6cb70ff8
Add ar extract
command
2024-02-09 15:00:09 -07:00
4a84975648
dol apply: Don't apply gap symbols
...
Also don't overwrite "unknown" scope
with global.
Fixes #30
2024-01-24 23:23:05 -07:00
26cc6a13b4
shasum: Support -o
in hash mode
...
Fixes #32
2024-01-24 23:21:55 -07:00
f71931838c
Sanitize '$' in split filenames
...
Fixes #29
2024-01-24 23:08:45 -07:00
7b7c8ce251
Add noexport
attr to symbols.txt
...
Rename `auto_force_active` to `export_all`.
This is a better solution to code_merging, as
individual functions can be marked `noexport`.
2024-01-14 13:58:18 -07:00
968f50ebed
Add auto_force_active
option (disable to support -code_merging
)
...
Fixes #13
2024-01-13 21:54:10 -07:00
Benjamin Moir
5a3256b2b6
Infer anonymous unions from type layout ( #26 )
...
* Infer anonymous unions from type layout
* Add comments to signify inferred types
* Improve union detection
* Fix some output weirdness
* Handle some more anonymous union edge cases
* Change union offset validation
* Skip anonymous unions with less than 2 members.
2024-01-13 21:42:39 -07:00
Benjamin Moir
9f8c55efe9
Support anonymous type names as seen in PS2 DWARF ( #25 )
2024-01-07 08:36:34 -07:00
Benjamin Moir
6b59c677d4
Add support for MwOverlayBranch ( #24 )
...
* Add support for MwOverlayBranch
* Make clippy happy
* cargo fmt
2024-01-07 08:02:01 -07:00
59fe8069f8
Analyzer fix for fallthrough switch cases
...
Fixes #23
2024-01-06 22:57:41 -07:00
58b6d7c7d5
Avoid duplicate unit names when auto-splitting
...
Fixes #20
2024-01-06 21:57:42 -07:00
85e044463e
Support matching multiple symbols with signatures
...
Half of #20
2024-01-06 18:31:33 -07:00
458d0599f5
dwarf dump: Emit address range for compile units and functions
2024-01-06 17:51:09 -07:00
d9612cc9b7
Analyzer improvements for ProDG (WIP)
...
Fixes #19
2024-01-06 16:05:04 -07:00
c44846d73f
Allow absolute relocations to linker generated symbols
...
Fixes #15
2024-01-06 11:47:17 -07:00
8e7de9588f
cargo fmt
2024-01-06 10:29:51 -07:00
3bcfaef4fe
Zero out relocations before disassembling
...
Fixes an issue where an addi with relocation
can be disassembled as subi
2024-01-06 10:28:01 -07:00
Benjamin Moir
dd23fef4f7
Support some more MetroWerkz DWARF extensions ( #22 )
...
* Support FT_MW_int128
* Support OP_MW_FPREG
* Support AT_MW_mangled on local variables
* cargo fmt
---------
Co-authored-by: Luke Street <luke@street.dev>
2024-01-02 10:33:07 -07:00
d470f7aec6
Version 0.6.5
2023-12-20 20:30:48 -07:00
227153193e
Sanitize auto-function-split names
...
Fixes #16
2023-12-20 20:28:30 -07:00
2681e51443
Don't double remove obj path extension
...
Don't remember why I had it like this
Fixes #17
2023-12-20 20:22:00 -07:00
6f2bb62082
Downgrade vis_flags/active_flags error to warn
...
Fixes #18
2023-12-20 19:11:23 -07:00
Sewer
d43b95a0e4
Added: Support for Little Endian DWARF, Inline Arrays & Additional MetroWerks Extensions ( #14 )
...
* Added: Minimal Required Changes to Dump Sonic Heroes (PS2)
* Added: Switch for Little Endian DWARF Dump
* Added: Support for Array Ordering
* Added: Big/Little Endian Variants of u32_from_bytes
* Changed: Detect bitness from .elf header.
* Changed: Use Proper MetroWerks Names
* Changed: Use Endianness from File API
* Refactor DWARF endian handling & some fixes
* Undo accidental formatting changes
---------
Co-authored-by: Luke Street <luke@street.dev>
2023-12-11 13:07:29 -05:00
0cfc5df20b
Overhauled common BSS support & more
...
- With a map, attempts to detect and handle common BSS automatically
- With a map, attempts to detect and correct inflated common BSS bug (< GC 2.7 linker)
- Support for "stripped" symbols, sometimes required to match inflated common BSS sizes
- Warns on duplicated TUs in a map (other than common BSS)
- Automatically adds `comment:0` to `.s` TUs from a map (avoids linker crash)
2023-11-29 18:31:35 -05:00
5c22c8850e
Support .BINARY
section
...
Resolves #12
2023-11-29 18:14:48 -05:00
4cb6f4f85d
dwarf dump: Better support for GCC/ProDG & various fixes
...
- Displays subroutine "static" and "inline" if present
- Displays subroutine labels, blocks and inlines if present
- Displays struct member visibility if present
- Skips tags that can't be processed rather than bailing
2023-11-27 16:35:12 -05:00
5128ff67b2
bin2c: Honor symbol alignment
2023-11-26 01:12:34 -05:00
dd60128ba0
Extract embedded assets to binary and C header
...
Adds an "extract" list to project configuration:
```
extract:
- symbol: SomeData
binary: Lib/SomeData.bin
header: Lib/SomeData.inc
```
This example extracts the data of symbol
`SomeData` to `out_dir/bin/Lib/SomeData.bin`,
and a C array representation to
`out_dir/include/Lib/SomeData.inc`.
Resolves #11
2023-11-26 00:35:05 -05:00
e3d6ef8492
dwarf dump: Fix padding handling within tag children
...
Fixes #9
2023-11-22 12:59:03 -05:00
c8a2d4896a
dwarf dump: Fix reversed struct/class in def
...
Fixes #10
2023-11-22 12:21:24 -05:00
ebff47924f
Add links
field to config for overriding REL linkage
...
By default, every REL is linked with every other REL. Some games, like Mario Party, link RELs individually, so the module IDs are not unique. To support this, the `links` field can be used to override which _other_ modules are included in a module's analysis.
2023-11-18 23:37:50 -05:00
28af4872ab
rel make: Add --quiet
/-q
, --names
/-n
args
...
`-n` is a somewhat ugly hack to only select certain modules from `config.yml`, for games with overlapping module IDs
2023-11-18 23:34:44 -05:00
38c692650f
write_rel: Skip setting reloc/imp offset with empty relocations
2023-11-18 23:33:18 -05:00