209 Commits

Author SHA1 Message Date
Luke Street bb18a4b253 Auto-split and padding symbol fixes
A few issues were causing linker errors:
- Auto-splits could contain symbols that have a
higher alignment than the split itself. Detect
this and create a new auto-split at these symbols.
- The analyzer can miss objects in between other
objects if there are no direct relocations to them.
In these cases, non-zero data could just get totally
lost. Detect and create symbols for these.
2025-02-04 23:45:07 -07:00
Luke Street 51a7fbd85b Add WAD support to object_base
This allows WAD projects to use the auto-extraction
feature: decomp-toolkit will extract all `object`s
from a disc file or WAD file that exists in the
configured `object_base`.
2025-01-27 19:33:44 -07:00
Luke Street a6c7001a52 Remove elf split command
This command was an early experiment and only worked
correctly on one game. The project system has long
superseded it. ELFs are better supported by
generating a project config via `elf config` and
using the DOL as the object target.

Closes #1
Closes #4
Closes #21
2025-01-27 19:11:40 -07:00
Luke Street f270e9c53d clippy fix 2025-01-27 19:09:19 -07:00
Luke Street b9642321a1 dol diff: Conditionally warn on symbol size mismatch
When a symbol's data matches but the size differs
due to padding bytes, print a warning and continue.

Resolves #35
2025-01-27 18:56:24 -07:00
Luke Street e55ade10ec Ignore globalized symbols in dol diff
Resolves #61
2025-01-27 18:36:19 -07:00
Luke Street 6c3887c7e6 Improve split cyclic dependency errors
When a link order is unresolvable, decomp-toolkit
now prints out all of the TUs in a cycle, easing
debugging.

Example:
```
Cyclic dependency encountered while resolving link order: Dolphin/os/__start.c -> Dolphin/os/__ppc_eabi_init.cpp -> Dolphin/pad/PadClamp.c -> Dolphin/pad/pad.c
```

Thanks @simonlindholm for the toposort impl.
2025-01-27 18:06:25 -07:00
Luke Street 9a6348ec49 Set alignment for floats/doubles in analyzer
Resolves #60
2025-01-27 18:06:25 -07:00
Luke Street 589e59a620 Warn rather than fail on .note.split/.comment reading 2025-01-27 18:06:25 -07:00
Luke Street 6819a8bd5f Improve logic for generating padding symbols 2025-01-27 17:54:06 -07:00
Luke Street a22e878258 Treat a branch to the start of a func as a tail call
Resolves #74
2025-01-27 17:54:06 -07:00
Luke Street 93000b28bd Check for conflicting splits with different file extensions
Resolves #81
2025-01-27 17:54:06 -07:00
Luke Street 0c6eff42cf Don't emit split alignment warnings for auto-splits
Resolves #84
2025-01-27 17:54:06 -07:00
Luke Street 04b60d319c vfs ls: Fix column sizing with Unicode chars 2025-01-27 17:54:06 -07:00
Luke Street d1b35c4d18 clippy & cargo-deny fixes 2025-01-27 17:03:12 -07:00
NWPlayer123 8fb56c2fa4 Update Errors (#87)
Co-authored-by: NWPlayer123 <NWPlayer123@users.noreply.github.com>
2025-01-24 23:07:20 -07:00
Luke Street 91aa36c120 Clean up VFS error handling 2024-11-07 09:00:52 -07:00
Luke Street 9fc56d847f Add rename field to extract configuration
Allows renaming, for example, local statics from `test$1234`
to `test` for inclusion in the source function.
2024-11-07 08:44:24 -07:00
Luke Street 1cc38ad621 Add WAD support to VFS & wad commands 2024-11-07 08:43:20 -07:00
Luke Street 146c4d2f8c Add header_type and custom_type to extract config
Extract configuration is now emitted in the output config, so
tooling can load and perform their own tasks on extracted assets
without having to parse YAML.

`header_type`:
- `symbol` (default): Emit a full symbol declaration.
- `raw`: Emit raw array data (for wrapping in your own declaration)
- `none`: Don't emit a header at all. (For custom processing)

`custom_type`/`custom_data`: Passed through to the output config
as-is for custom tasks.
2024-10-28 17:44:07 -06:00
Luke Street f984bc3fb2 Cleanup find_object_base & better error handling 2024-10-18 00:41:17 -06:00
cadmic 8823c2225e Follow symlinks when looking for disc images (#78) 2024-10-18 00:37:54 -06:00
Luke Street fa5068fd6d Fix ELF relocation processing
Another bug caused by object removing ELF null section / symbol
from their iterators.
2024-10-18 00:24:34 -06:00
Luke Street 5c7560bcea Fix address analysis with negative add operands
Resolves #76
2024-10-14 09:40:46 -06:00
Luke Street 8d8d801b2f A couple process_elf fixes 2024-10-13 14:15:13 -06:00