Commit Graph

73 Commits

Author SHA1 Message Date
Amber Brault 26f52f65b7
Automatically check for invalid extab relocations (#75)
* Begin work on extab reloc analysis code

* Refactoring

* Make format happy

* Address feedback + improvements
2024-10-03 01:13:23 -06:00
Luke Street c106123877 Use mimalloc when targeting musl
Also removes the armv7 linux build.
If you were using this, let me know!

Updates all dependencies
2024-09-29 12:20:28 -06:00
Luke Street 8b793b5616 Update CI workflow & all dependencies 2024-09-09 20:36:18 -06:00
Luke Street 9dfdbb9301 Fix v1-2 REL alignment regression
Alignment after section data and
before relocations / import table
is exclusive to REL v3.
2024-09-05 00:26:14 -06:00
Luke Street c403931f0f Update nod for TGC disc support 2024-09-04 20:09:56 -06:00
Luke Street b6a29fa910 Add split `order` attribute for manual reordering
Example in splits.txt:
```
file1.cpp: order:0
  ...

file2.cpp: order:1
  ...

file3.cpp: order:2
  ...
```

This ensures that file2.cpp is always
anchored in between 1 and 3 when resolving
the final link order.
2024-08-11 20:38:11 -06:00
Luke Street c484952912 Support generating RELs with non-sequential module IDs
Uses the module ID from the configuration, if present,
falling back to the standard behavior of sequential
module IDs.
2024-06-24 17:43:33 -06:00
Luke Street 4d039140f2 Version 0.9.2 2024-06-10 17:41:05 -06:00
Luke Street 9c12efa64e Update orthrus-ncompress 2024-06-10 17:40:46 -06:00
Luke Street 8813a2c9e4 Version 0.9.1 2024-06-10 00:43:44 -06:00
Luke Street 46cf0be183 Add U8 (newer .arc) support
Supports the U8 .arc format, just
like the older RARC format.

`u8 list`, `u8 extract` and support
for U8 archive paths in config.yml
2024-06-03 20:34:35 -06:00
Luke Street 255123796e Instruction disassembly in `dol diff`
When a function diff is detected in
`dol diff`, objdiff-core is used to
print a detailed view highlighting
any differences.

Resolves #28
2024-06-03 20:31:06 -06:00
Luke Street d9770c48b2 Version 0.8.3 2024-05-19 23:09:16 -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
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 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 989293a477 Add Yay0/Yaz0 compression & decompression
Uses orthrus-ncompress

Fixes #6
2024-04-30 18:03:00 -06:00
Luke Street 3497d38ea3 Version 0.7.6 2024-04-03 00:13: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 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
Luke Street a41745fb97 Version 0.7.4 2024-02-28 19:39:13 -07:00
Luke Street 9a6cb70ff8 Add `ar extract` command 2024-02-09 15:00:09 -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 968f50ebed Add `auto_force_active` option (disable to support `-code_merging`)
Fixes #13
2024-01-13 21:54:10 -07:00
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