Commit Graph

169 Commits

Author SHA1 Message Date
Luke Street e1c80655b7 Fix lcf generation for empty RELs
Also, handle alignment of 0 in rel make
2024-05-19 22:28:14 -06:00
Luke Street bf0d1a823f Version 0.8.2: Fix asm output 2024-05-17 07:12:05 -06:00
Luke Street 0bcc539d36 Version 0.8.1: Fix .note.split generation 2024-05-16 18:31:27 -06:00
Luke Street cb1a765041 Version 0.8.0 2024-05-15 23:16:26 -06:00
cadmic 876b78bfa6
Reconstruct "erased" tags from DWARF debugging info (#51)
* Read erased tags

* cargo +nightly fmt

* .filter(...).next() -> find(...)

* Plumb both data and address endians through

* Rename has_erased_parent -> is_erased_root and comment
2024-05-15 23:06:30 -06:00
Luke Street d3c2e8192c ci: Bump cargo-zigbuild version 2024-05-01 09:37:09 -06:00
Luke Street 4dacf2f39a Add disc commands: info, extract, convert, verify
Utilizing https://github.com/encounter/nod-rs
2024-05-01 00:12:20 -06:00
Luke Street 9452ca8b8c Pass ppc750cl::Ins by value 2024-04-30 22:53:32 -06:00
Luke Street 963425793d Remove unused deps 2024-04-30 20:48:53 -06:00
Luke Street c45f37eb10 Update ppc750cl (10x faster!) & upgrade deps 2024-04-30 20:40:14 -06:00
Luke Street c1c4373e53 Prefer references to `_savegpr_14` over `__savegpr`
Same for `__restore_gpr`, `__save_fpr` and `__restore_fpr`.
A common issue that can be solved with a little bit
of special-casing.
2024-04-30 18:04:50 -06:00
Luke Street 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
Luke Street dac2dcfc9e Explicitly check split end >= start
Fixes #48
2024-04-30 18:03:59 -06:00
Luke Street fdafe59e13 Adds `data:int` and `data:short` for asm output
Fixes #41
2024-04-30 18:03:45 -06:00
Luke Street bfa926ebbf Write object address and size in asm comments
Fixes #37
2024-04-30 18:03:31 -06:00
Luke Street 989293a477 Add Yay0/Yaz0 compression & decompression
Uses orthrus-ncompress

Fixes #6
2024-04-30 18:03:00 -06:00
Luke Street e46c6a72bc Split up README a bit 2024-04-22 23:17:09 -06:00
Luke Street a156c3697f Appease clippy 2024-04-03 00:18:16 -06:00
Luke Street 3497d38ea3 Version 0.7.6 2024-04-03 00:13:42 -06:00
Luke Street d0f39f1d82 Support global labels in REL creation (_savegpr, etc) 2024-04-03 00:13:15 -06:00
Luke Street ccfbfd1a5a Fix for jumptable naming in RELs 2024-04-03 00:12:46 -06:00
Luke Street 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
Luke Street 9249fa67b8 ci: Update actions versions 2024-03-13 18:31:42 -06:00
Luke Street 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
Luke Street 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
Luke Street 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
Luke Street 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
Luke Street 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 a2cae4f82a
Check if git tag matches Cargo version when releasing (#44)
* Check if git tag matches Cargo version when releasing

* Specify `bash` explicitly
2024-02-28 21:15:04 -07:00
Luke Street a41745fb97 Version 0.7.4 2024-02-28 19:39:13 -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
Luke Street 9a6cb70ff8 Add `ar extract` command 2024-02-09 15:00:09 -07:00
Luke Street 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
Luke Street 26cc6a13b4 shasum: Support `-o` in hash mode
Fixes #32
2024-01-24 23:21:55 -07:00
Luke Street f71931838c Sanitize '$' in split filenames
Fixes #29
2024-01-24 23:08:45 -07:00
Luke Street 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
Luke Street 1614997108 ci: Fix linux-i686 artifact name (previously linux-x86) 2024-01-13 22:02:52 -07:00
Luke Street 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
Luke Street 59fe8069f8 Analyzer fix for fallthrough switch cases
Fixes #23
2024-01-06 22:57:41 -07:00
Luke Street ee3b297f76 Add bug report issue form 2024-01-06 22:34:00 -07:00
Luke Street 58b6d7c7d5 Avoid duplicate unit names when auto-splitting
Fixes #20
2024-01-06 21:57:42 -07:00
Luke Street 85e044463e Support matching multiple symbols with signatures
Half of #20
2024-01-06 18:31:33 -07:00
Luke Street 458d0599f5 dwarf dump: Emit address range for compile units and functions 2024-01-06 17:51:09 -07:00
Luke Street d9612cc9b7 Analyzer improvements for ProDG (WIP)
Fixes #19
2024-01-06 16:05:04 -07:00
Luke Street c44846d73f Allow absolute relocations to linker generated symbols
Fixes #15
2024-01-06 11:47:17 -07:00