Commit Graph

44 Commits

Author SHA1 Message Date
Luke Street 58b6d7c7d5 Avoid duplicate unit names when auto-splitting
Fixes #20
2024-01-06 21:57:42 -07:00
Luke Street d470f7aec6 Version 0.6.5 2023-12-20 20:30:48 -07:00
Luke Street 227153193e Sanitize auto-function-split names
Fixes #16
2023-12-20 20:28:30 -07:00
Luke Street 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
Luke Street 5128ff67b2 bin2c: Honor symbol alignment 2023-11-26 01:12:34 -05:00
Luke Street 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
Luke Street 038354a37e Version 0.6.1 2023-11-22 13:01:42 -05:00
Luke Street 7168d2632f Version 0.6.0 2023-11-18 23:38:43 -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 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 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 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 db506fb927 Update dependencies & macros.inc for ppc750cl 2023-10-06 01:20:04 -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 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 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 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 347889773d Version 0.3.7 2023-08-15 23:18:15 -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 8200ee7649 Version 0.3.5 2023-08-10 00:06:42 -04:00
Luke Street 457ee10a42 Emit FORCEACTIVE in LCF & various fixes 2023-08-09 01:24:23 -04:00
Luke Street bf0dd310e6 Bump version 2023-08-07 20:07:13 -04:00
Luke Street a046bf9a66 Updates for build system integration
- Use a config file as input to `dol split`
- Add depfile output
- Adjust splits config writing
2023-08-06 15:46:51 -04:00
Luke Street 4b6e317d0b Adjustments for use with ninja build 2023-08-05 20:27:05 -04:00
Luke Street bd0422e92a Migrate argh to argp, topological-sort to petgraph 2023-08-03 18:57:08 -04:00
Luke Street 0fa0aafaea 6 months of occasional work I guess 2023-07-21 17:59:07 -04:00
Luke Street 830f7b172f Reorganize files; start RSO support; config & split updates 2023-01-27 23:15:52 -05:00
Luke Street 827e0806be gerge branch 'main' into experimental 2023-01-19 12:54:52 -05:00
Luke Street d864b0e395 Very experimental analyzer, DOL & REL support, function signatures 2023-01-18 12:52:38 -08:00
Luke Street 947874adfd Version 0.2.3
- Fix `ar create` on Windows
- Clippy fixes
2023-01-05 08:51:44 -05:00
Luke Street 828766b22b Version 0.2.2
- Add `ar create` command for static libraries
- Update `elf fixup` to add an "(asm)" suffix
  to object file symbols, for use with progress
  tracking.
2022-12-14 20:39:59 -05:00
Luke Street 21c386d1a6 Version 0.2.1
- Build static Linux binaries
- Use cargo-zigbuild for cross compilation
2022-12-14 13:20:22 -05:00
Luke Street 141339fcb0 Version 0.2.0
- Add `elf disasm` (disassemble an ELF)
- Add `elf fixup` (for GNU assembler)
- Add `map order` (link order deduction)
- Add `map slices` (ppcdis slices.yml, WIP)
- Add `map symbols` (ppcdis symbols.yml, WIP)
- Big speed improvement for map processing
- Minor `elf2dol` cleanup
2022-12-10 01:51:42 -05:00
Luke Street f6dbe94bac Add -o option to shasum 2022-11-27 23:43:46 -05:00
Luke Street 636cbea59c Initial commit 2022-11-27 17:02:32 -05:00