Commit Graph

101 Commits

Author SHA1 Message Date
Luke Street 7168d2632f Version 0.6.0 2023-11-18 23:38:43 -05:00
Luke Street 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
Luke Street 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
Luke Street 38c692650f write_rel: Skip setting reloc/imp offset with empty relocations 2023-11-18 23:33:18 -05:00
Luke Street 8659b56da4 Skip writing objects and ldscripts if unchanged
Avoids unnecessary rebuilds with build systems like ninja & make that track mtime
2023-11-18 17:21:08 -05:00
Luke Street 363fa2ac72 Use custom syntect packs to reduce binary size
- Custom syntax set containing only C/C++
- Custom themeset containing only Solarized (Dark)
- Disable default syntect features
2023-11-18 16:12:03 -05:00
Luke Street d7a3fd53c7 Fix CI artifact upload 2023-11-18 15:07:44 -05:00
Luke Street 8f559c8921 Update dependencies & CI changes
- Use separate release-lto profile for CI
- A couple of clippy fixes
2023-11-18 15:03:24 -05:00
Luke Street 5e13998e93 Major `dwarf dump` rework
- Supports games with C++ DWARF info
- Syntax highlighting when printing to console (disable with `--no-color`)
- Overall improvements to parsing and output
2023-11-18 13:56:58 -05:00
Luke Street 4935708b61 Fix REL v2 creation (and v1, hopefully)
- Adjusts `write_rel` to use the proper ordering for relocations and imports based on the REL version.
- Adds `-r`/`--relocations` switch to `rel info` that prints (very) verbose relocation information.
2023-11-09 01:16:37 -05:00
Luke Street 456f4eebd4 Update deny.toml 2023-11-07 23:25:24 -05:00
Luke Street 65b04024d5 Update README.md
The previous commit also fixed the `map` commands, because why bother splitting anything out?
2023-11-07 23:24:03 -05:00
Luke Street ec4caf5000 Smarter configuration updates
- Avoid overwriting `symbols.txt` or `splits.txt` if the file was modified since it was read or if the file's contents didn't change.
- Remove `binrw` and `byteorder` dependencies, moving to `FromReader`/`ToWriter` traits.
- Migrate generic bounds to `where` clauses.
- Remove unused `build.rs` logic.
2023-11-07 23:21:59 -05:00
Luke Street c452b74666 Version 0.5.7 2023-10-10 12:33:27 -04:00
Luke Street 41a69441da Support section 241 (extabindex) in RSOs 2023-10-10 12:32:56 -04:00
Luke Street 95c779b105 Better terminal color support
- Enables ANSI on Windows 10
- Disables colors if unsupported
- Supports `--no-color` and env `NO_COLOR` to disable
- Supports env `FORCE_COLOR` and `CLICOLOR_FORCE` to enable
2023-10-10 12:32:05 -04:00
Luke Street a164852a15 Write gap symbols as hidden 2023-10-07 14:50:01 -04:00
Luke Street dfb569b883 Add alf support (NVIDIA Shield TV binaries)
- Supports .alf files in all places .dol files are accepted.
- Adds `hash` and `dhash` to symbols config.
2023-10-07 02:03:09 -04:00
Luke Street db506fb927 Update dependencies & macros.inc for ppc750cl 2023-10-06 01:20:04 -04:00
Luke Street 62c5e3acf9 Update README.md with dtk-template & more commands 2023-10-04 23:38:43 -04:00
Luke Street 36bb5ddcc6 Zero out section data for relocations in relocatable ELFs
Fixes issues with Wii versions of mwld.
2023-10-01 12:50:21 -04:00
Luke Street c354c6da4b REL section alignment fixes
- Honor section alignment from splits.txt when writing RELs
- Better heuristic for determining REL section alignment on initial analysis
2023-09-26 13:06:57 -04:00
Luke Street 610a2e56b9 Add `ldscript_template` option to project config 2023-09-23 07:56:49 -04:00
Luke Street 400fb7fa7f Add `code_size`, `data_size` to generated `config.json`
Also simplify project config generation by skipping default fields
2023-09-14 17:24:00 -04:00
Luke Street 59a4eb33d0 Write `version` in generated `config.json` 2023-09-13 17:07:06 -04:00
Luke Street 42217a339e Update cargo deny.toml 2023-09-13 02:10:47 -04:00
Luke Street d4ef1ce16a Analyzer fixes galore
- Transparent NLZSS decompression (add `:nlzss` to path)
- Overhaul portions of the analyzer to support more games
- Reject some invalid data relocations automatically
- Jump table analysis fixes
2023-09-13 02:08:51 -04:00
Luke Street 50f913c4eb clippy fixes 2023-09-10 02:20:54 -04:00
Luke Street 18170a96a2 Don't use map in `dol diff` and `dol apply`; remove common BSS hack 2023-09-10 02:20:08 -04:00
Luke Street 788ffb9e17 Fix empty .lcf FORCEACTIVE with symbols_known 2023-09-09 19:24:13 -04:00
Luke Street 6abe6cc277 clippy fix 2023-09-05 17:31:19 -04:00
Luke Street 21c80537ac cargo-deny: Allow ISC license 2023-09-05 17:24:03 -04:00
Luke Street e3857d3212 Improvements to REL & map support
- Fix symbols.txt align attribute
- Fully support nested RARC files & transparent Yaz0 decompression
- Guess symbol visibility for maps without link map
- Add module name config
- Add manual force_active config
- Quiet option for shasum
- `symbols_known` and `fill_gaps` config
- Allow disabling .comment generation per-unit (`comment:0`)
- Various minor fixes
- Add `rarc` and `yaz0` commands
2023-09-05 17:22:22 -04:00
Luke Street f9f7fb2e1e Working `rel make` & more
- Added `elf info`
- Improved `rel info`
- Colored output for `shasum`
- Fix section `rename` in RELs
- Added padding symbols to avoid linker issues
- Automatically set symbols to "active" in .comment output
2023-08-23 23:13:12 -04:00
Luke Street a2374e4fa0 Semi-working REL analysis & splitting 2023-08-23 23:13:12 -04:00
Luke Street 3f63f1ef47 A lot more section-address-aware refactoring 2023-08-23 23:13:12 -04:00
Luke Street 5843ee021e Begin REL analysis & rework lots of code to be section-address aware 2023-08-17 22:09:45 -04:00
Luke Street 347889773d Version 0.3.7 2023-08-15 23:18:15 -04:00
Luke Street 933edcfb19 Clippy fixes 2023-08-15 22:47:35 -04:00
Luke Street 23a156a6d5 Add selfile option & load in `dol split` 2023-08-15 22:45:23 -04:00
Luke Street 908e3bb037 Check functions at start of code sections in detect_functions 2023-08-15 22:44:48 -04:00
Luke Street a394dfc88c Improved sanity checks in asm write_data 2023-08-15 22:44:06 -04:00
Luke Street 2c2ee8bf08 Validate splits don't overlap symbols (or each other)
Use DoubleEndedIterator::next_back instead of Iterator::last to avoid unnecessary iteration.
2023-08-15 09:47:00 -04:00
Luke Street d272b5dce8 Write common symbol align in asm 2023-08-15 09:36:45 -04:00
Luke Street 8200ee7649 Version 0.3.5 2023-08-10 00:06:42 -04:00
Luke Street 522909907c Add quick_analysis option & disable auto_force_files by default 2023-08-10 00:05:33 -04:00
Luke Street 33a026d0c7 Support module hash in config.yml 2023-08-10 00:04:35 -04:00
Luke Street 5272f90991 Read symbol alignment from .comment 2023-08-10 00:03:44 -04:00
Luke Street 265e26ee40 Guess section alignment & write __ArenaHi in .lcf 2023-08-10 00:03:14 -04:00
Luke Street 98ab89a1de Don't relocate against linker symbols for certain relocations 2023-08-10 00:02:28 -04:00