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
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