Luke Street
e7991cb28d
cargo fmt
2024-03-18 22:56:57 -06:00
Luke Street
4dfc28fc68
Diff cleanup & fixes
2024-03-18 22:56:13 -06:00
Luke Street
3c74b89f15
Restructure diffing code & initial 3-way diffing (WIP)
2024-03-18 18:10:18 -06:00
Luke Street
1343f4fd2b
cargo fmt
2024-03-17 12:20:25 -06:00
Luke Street
9df98f263e
Move all architecture-specific code into modules
...
No more scattered relocation handling and
feature checks. Everything will go through
the ObjArch trait, which makes it easier
to add new architectures going forward.
2024-03-17 12:16:47 -06:00
Luke Street
bbe49eb8b4
Initial x86 support
...
Includes a bit of work to make adding new
architectures easier in the future
2024-03-16 23:30:27 -06:00
Luke Street
aecb078b2a
ci: Update sccache-action version
2024-03-13 18:34:28 -06:00
Luke Street
a5668b484b
Update all dependencies
2024-03-13 18:20:46 -06:00
Luke Street
ef41e393d4
Resolve dependency advisories
2024-03-04 18:19:08 -07:00
Luke Street
20e42a499a
Rework .splitmeta, now .note.split
...
Uses actual ELF .note format, which is
more standard and handled better by mwld.
2024-03-04 18:06:21 -07:00
Luke Street
c39795ae2c
Use actual decomp.me host
2024-03-04 18:03:32 -07:00
Luke Street
49ee9b44aa
Remove "Algorithm" menu item
2024-03-04 18:03:20 -07:00
Robin Avery
341c1d4b33
Fix release CI (and add `sccache`) ( #52 )
...
* Fix release CI (and add `sccache`)
* Rename `objdiff-gui` binary to `objdiff`
2024-03-02 22:42:24 -07:00
Robin Avery
9f4a1e86cd
objdiff-cli diff: Reduce duplicate key event code ( #51 )
2024-03-02 18:47:54 -07:00
Robin Avery
ed5d092b11
objdiff-cli diff: Support "Relax relocation diffs" ( #50 )
...
Bound to the `-x` flag or the `x` key.
2024-03-02 18:47:18 -07:00
Robin Avery
023dd7a55b
objdiff-cli diff: Accept any kind of unit path ( #48 )
...
* objdiff-cli diff: Accept any kind of unit path
* Appease clippy
* Call `resolve_paths` in slightly fewer cases
2024-03-01 18:18:27 -07:00
Luke Street
3b1249e1ab
objdiff-cli diff: Add horizontal scrolling
2024-03-01 01:30:47 -07:00
Luke Street
cb13638e07
objdiff-cli: Migrate to ratatui for rendering
2024-03-01 01:03:17 -07:00
Robin Avery
37ddbb7f4a
cli: Log to stderr instead of stdout ( #46 )
...
Fixes pipe issues.
2024-02-29 22:27:10 -07:00
Robin Avery
b80d361e91
cli report: Generate virtual addresses as uppercase ( #45 )
...
Matches dtk symbols.txt and most projects' identifiers.
2024-02-29 22:22:59 -07:00
Robin Avery
fd27f4d0cd
cli diff: Resolve object and project if not specified ( #44 )
...
* cli diff: Resolve object and project if not specified
* Make `symbol` positional
* Short circuit ambiguous matches
* Tighten argument matching
* Speed up function lookup
2024-02-29 22:22:41 -07:00
Robin Avery
5cfd04fd4f
Add `#[serde(default)]` to `ReportFunction::address` ( #43 )
2024-02-29 11:21:30 -07:00
Luke Street
5b9ac93c08
ci: Build both objdiff-cli and objdiff-gui
2024-02-28 21:52:35 -07:00
Luke Street
39a13f4d36
objdiff-cli diff & report changes, support .splitmeta object section
...
- Add `objdiff-cli report changes` for diffing two reports
- Unify some click-to-highlight logic between CLI and GUI
- Load .splitmeta section for extra object metadata (original virtual addr, etc)
- More work on objdiff-cli diff
2024-02-28 21:44:53 -07:00
Ryan Burns
28348606bf
Handle ^F, ^B, ^U and ^D readline shortcuts in pager ( #42 )
2024-02-28 19:33:15 -07:00
Luke Street
fb24063c54
objdiff-cli diff: Click-to-highlight & build fixes
2024-02-27 22:52:18 -07:00
Luke Street
cff6a230a3
Remove alternate diff algorithms, only keep Patience
2024-02-27 21:18:42 -07:00
Luke Street
9a7d2bcebf
Experimental objdiff-cli (WIP)
2024-02-27 18:47:51 -07:00
Luke Street
4eba5f71b0
Split into objdiff-core / objdiff-gui; update egui to 0.26.2
2024-02-26 18:48:48 -07:00
Luke Street
0a85c498c5
Version 1.0.0
2024-01-22 00:32:54 -07:00
Luke Street
c2fcf2797b
Export function to decomp.me scratch (beta)
2024-01-22 00:31:43 -07:00
Luke Street
e88a58ba39
Option to relax relocation diffs
...
Ignores differences in relocation targets. (Address, name, etc)
Resolves #34
2024-01-22 00:14:03 -07:00
Luke Street
02f521a528
Disable more options when project config is loaded
2024-01-21 23:58:10 -07:00
Luke Street
197d1247a8
Highlight: Consider uimm/simm/offset all equivalent
...
Fixes #33
2024-01-21 23:48:12 -07:00
Luke Street
eef9598e76
Add DWARF 2+ line info support
...
Resolves #37
2024-01-21 23:38:52 -07:00
Luke Street
405a2a82db
Upgrade all dependencies (+ egui/eframe 0.25.0)
2024-01-20 23:41:48 -07:00
Luke Street
4cdad8a519
Re-enable wgpu and wsl features; rework WSL config
...
Improve build failure log view & add copy buttons
2024-01-20 23:29:05 -07:00
Luke Street
b74a49ed0c
Upgrade to egui/eframe 0.24.1
2023-12-11 13:36:00 -05:00
Luke Street
e1079db93a
Add font loading & configuration
2023-11-28 23:13:51 -05:00
Luke Street
879e03eed5
All one line (thanks PowerShell)
2023-11-27 19:55:17 -05:00
Luke Street
53e6e0c7c4
Build macOS with wgpu enabled
2023-11-27 19:52:12 -05:00
Luke Street
67cea2a8d9
Update README.md
2023-11-24 23:17:35 -05:00
Luke Street
e4f97adbdd
Version 0.6.1
2023-11-22 00:11:33 -05:00
Luke Street
0ec7bf078b
Highlight: Consider reg offsets and signed immediates equivalent
...
Fixes #32
2023-11-22 00:07:21 -05:00
Luke Street
74e89130a8
Repaint rework: more responsive, less energy
...
Previously, we repainted every frame on Windows at full refresh rate.
This is an enormous waste, as the UI will be static most of the time.
This was to work around a bug with `rfd` + `eframe`.
On other platforms, we only repainted every frame when a job was running,
which was better, but still not ideal. We also had a 100ms deadline, so
we'd repaint at ~10fps minimum to catch new events (file watcher, jobs).
This removes all repaint logic from the main loop and moves it into the
individual places where we change state from another thread.
For example, the file watcher thread will now immediately notify egui
to repaint, rather than relying on the 100ms deadline we had previously.
Jobs, when updating their status, also notify egui to repaint.
For `rfd` file dialogs, this migrates to using the async API built on top of
a polling thread + `pollster`. This interacts better with `eframe` on Windows.
Overall, this should reduce repaints and improve responsiveness to
file changes and background tasks.
2023-11-21 14:34:26 -05:00
Luke Street
236e4d8d26
CI updates, update deny.toml, clippy fix
2023-11-21 12:16:15 -05:00
Luke Street
b900ae5a00
Disable WSL integration
...
With WSL, objdiff is unable to get filesystem notifications.
It's recommended to run objdiff natively on Windows, so having this option
is more confusing than useful.
2023-11-21 12:15:41 -05:00
Luke Street
261e1b8e07
Upgrade all dependencies
2023-11-21 11:57:02 -05:00
Luke Street
a29e913b45
Add "Incomplete" filter to object tree
...
Allows filtering out objects marked as "complete".
2023-11-21 11:50:11 -05:00
Luke Street
49257dc73c
Better logic to reload previous file on app start
...
Before, if "Rebuild on changes" was disabled, the last file
wouldn't be properly loaded when starting.
2023-11-21 11:49:26 -05:00