Luke Street
eb7c3e9d9f
Detect _savevr/_restvr + check in RELs
...
Some games include a copy of MW
runtime.c in RELs. Easy to check.
Some games also include _savevr/
_restvr for AltiVec. This is weird
but we can handle it as well.
2024-06-10 00:43:00 -06:00
Luke Street
3289b2a3aa
Ignore invalid instructions
...
This could be a bad idea, but
it's unclear how to properly
handle these cases.
Resolves #55
2024-06-10 00:40:37 -06:00
Luke Street
b44aa78c49
Fix REL alignment after section data
2024-06-10 00:38:06 -06:00
Luke Street
4ea4ec86d0
Partially revert "Rework section alignment handling"
...
It turns out we can't actually
trust mwld to put our alignment
values in the PLF. Sad.
2024-06-10 00:37:17 -06:00
Luke Street
4dd2ebf85a
Rename ObjSections::count -> len
2024-06-09 16:10:34 -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
d63111466b
SN GCC DWARF improvements
...
Now emits all DWARF tags for
Spongebob Squarepants: Creature
from the Krusty Krab properly.
Resolves #46
2024-06-03 18:48:28 -06:00
Luke Street
61cd72cd11
Support address in config symbol references
...
Example: `symbol_name!.data:0x1234`
Allows disambiguating local symbols
with the same name.
Supported in `extract` and
`add_relocations` in config.yml
Resolves #58
2024-06-03 18:08:06 -06:00
Luke Street
4701de32f6
Check for existing function with `bl`
...
Ensures that the analyzer won't
create a function when the target
is already contained within a
function. Useful with manual asm
that would otherwise trip up the
analyzer.
Partial work for #56
2024-06-03 18:06:10 -06:00
Luke Street
6b60c13834
Change REL "invalid relocation" to warning
...
Also ensures that `block_relocations`
works to remove the warning
Resolves #53
2024-06-03 18:03:39 -06:00
Luke Street
53c6d74a6b
Fix addic/addic. handling in relocation tracker
...
Resolves #57
2024-06-03 18:01:55 -06:00
Luke Street
d9770c48b2
Version 0.8.3
2024-05-19 23:09:16 -06:00
Luke Street
c3f3ea58e8
Support `block_relocations` and `add_relocations` in `config.yml`
...
This allows more granular control over generated relocations.
Also optimizes relocation address validity checks,
leading to ~20% faster relocation analysis.
Config example:
```
block_relocations:
# Block any relocation pointing to this address.
- target: .data:0x80130140
# Block any relocation originating from this address.
- source: .text:0x80047160
# (optional) End address to make it a range.
end: .text:0x800471A8
add_relocations:
# Inserts or overwrites a relocation.
# From: `subi r3, r3, 0x7657`
# To: `li r3, mesWInsert-0x1@sda21`
- source: .text:0x800473F4
type: sda21
target: mesWInsert
addend: -1
```
Resolves #33
Resolves #52
2024-05-19 22:49:40 -06:00
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