The Ghidra delinker plugin emits functions with type STT_OBJECT,
rather than STT_FUNC. The current logic was preventing these from
being compared based on their symbol type. Relax this condition
for now.
* Reduce dependencies for no features
* Add missing deps to every feature
* Add missing `dep:`s
* Gate even more deps behind features
Removes dependency on tsify-next / wasm-bindgen unless
compiling with the wasm feature by using `#[cfg_attr]`
* Fix wasm
---------
Co-authored-by: Luke Street <luke@street.dev>
* Fix panic when parsing DWARF 2 line info for empty section
* Fix panic when parsing DWARF 2 line info for empty section
May as well remove both unwraps :p
* Fix data tooltip panic
Prevents panicing when attempting to display the data tooltip for a symbol that is too large by just using as many bytes as needed from the begging of the symbol.
* Don't attempt to interpret wrongly sized data
* Reference data display improvment issue
* Log failure to display a symbol's value
This allows users to "map" (or "link") symbols with different names so that they can be compared without having to update either the target or base objects. Symbol mappings are persisted in objdiff.json, so generators will need to ensure that they're preserved when updating. (Example: d1334bb79e)
Resolves#117
* Guess reloc data type based on the instruction.
Adds an entry to the reloc tooltip to show the inferred data type
and value.
* Fix clippy warning
* Match on Opcode rather than mnemonic string
With filter option to display them,
if desired. decomp-toolkit will
start writing auto-generated objects
in objdiff.json for reporting
purposes, so this maintains the
existing behavior.
This re-implements the older algorithm
used for data and BSS section match
percentages. We perform both and
choose the highest match percent
between the two options.
Resolves#84, #85
* Support R_MIPS_GPREL16 relocations correctly
symbols defined in the same file require adding a
special ri_gp_value from the .reginfo section to
their relocation calculations.
* Run nightly rustfmt
* Prevent potential panic when slicing .reginfo
* Basic integration
* Implement basic right click option
Needs lotsa work
* nothing to worry about
* Convert extab diff to separate view
* Make clippy and fmt shut up
* Make clippy fmt shut up for real this time
* Print extab/extabindex symbol names in extab view
* I hate fmt
* Basic integration
* Implement basic right click option
Needs lotsa work
* nothing to worry about
* Convert extab diff to separate view
* Make clippy and fmt shut up
* Make clippy fmt shut up for real this time
* Print extab/extabindex symbol names in extab view
* I hate fmt
* Fix scroll position not being maintained from extab view
* Silly me
* Add rlwinm decoder window
* Remove extra files
* Create Cargo.lock
* Show extab symbol names in hover window
* Appease fmt
* Update symbol_diff.rs
* Update symbol_diff.rs
* Get extab symbol from extabindex relocations instead
* Update Cargo.lock
* Update Cargo.lock
* Initial ARM support
* Disassemble const pool reloc
* Disasm ARM/Thumb/data based on mapping symbols
* Fallback to mapping symbol `$a`
* Support multiple DWARF sequences
* Update line info
* Rework DWARF line info parsing
- Properly handles multiple sections
in DWARF 1
- line_info moved into ObjSection
- DWARF 2 parser no longer errors with
no .text section
- Both parsers properly skip empty
sections
* Simplify line_info (no Option)
* Get line info from section; output formatted ins string
* Unwrap code section in `arm.rs`
* Handle reloc `R_ARM_SBREL32`
* Update ARM disassembler
* Update README.md
* Format
* Revert "Update README.md"
This reverts commit 8bbfcc6f45.
* Update README.md
* Detect ARM version; support ARMv4T and v6K
* Combobox to force ARM version
* Clear LSB in ARM symbol addresses
* Support big-endian ARM ELF files
* Bump `unarm`, `arm-attr`
* Handle ARM implicit addends
* Update README.md
* Explicitly handle all ARM argument types
* Format
* Display more ARM relocs
* Mask LSB on ARM code symbols only
* Read ARM implicit addends
* Format
---------
Co-authored-by: Luke Street <luke.street@encounterpc.com>
* Fix read error on objects with no .text section
* Fix read error on DWARF 1.1 objects
* Revert DWARF 1 changes
---------
Co-authored-by: Luke Street <luke@street.dev>
* Initial ARM support
* Disassemble const pool reloc
* Disasm ARM/Thumb/data based on mapping symbols
* Fallback to mapping symbol `$a`
* Support multiple DWARF sequences
* Update line info
* Rework DWARF line info parsing
- Properly handles multiple sections
in DWARF 1
- line_info moved into ObjSection
- DWARF 2 parser no longer errors with
no .text section
- Both parsers properly skip empty
sections
* Simplify line_info (no Option)
* Get line info from section; output formatted ins string
* Unwrap code section in `arm.rs`
* Handle reloc `R_ARM_SBREL32`
* Update ARM disassembler
* Update README.md
* Format
* Revert "Update README.md"
This reverts commit 8bbfcc6f45.
* Update README.md
---------
Co-authored-by: Luke Street <luke.street@encounterpc.com>