* Implement diffing individual data symbols
* Remove unused code for diffing sections
* Data diff view: Make rows show offset within the symbol, not within the section
* Remove SelectedSymbol enum as it only has a single variant now
* Create fake data section symbols to allow diffing entire sections again
* Fix text sections not having their size zeroed out
* Update test snapshots
* Clean up code for inferring section symbol size
* Fix bug where PPC pool references weren't ignoring section symbols
* Update comment
* Always add unique section symbols for data sections
* Update test snapshots
* Remove unnecessary clone in format! call
* Auto-start mapping for unpaired data symbols
* Fix filtering out symbols from the target side that have a symbol with the same name and a `.NON_MATCHING` suffix.
- Target side: Show all the symbols except the `.NON_MATCHING` ones.
- Base side: Ignore all the `.NON_MATCHING` symbols and also ignore the ones with the same name without the suffix
* fmt
* comment
* tests
* fmt tests
* maybe this could fix wasm?
* Fix wasm?
* fmt
* Move `DiffSide` to `diff` mod
* Update the stuff the advisories CI told me to
This allows explicitly ignoring changes to certain
files or directories, even if the changed file ends
up matching `watch_patterns`. The default value,
`build/**/*` will ensure that changes in the build
directory will not trigger a duplicate rebuild.
Resolves#143Resolves#215
This has been unimplemented since v3.0.0-alpha.1,
and I don't currently have plans to bring it back.
If you need it for something, please open an issue!
* Show reloc diff in func view when data content differs
* Add "Relax shifted data diffs" option
* Display fake pool relocations at end of line
* Diff reloc data by display string instead of raw bytes
This is to handle data symbols that contain multiple values in them at once, such as stringBase. If you compare the target symbol's bytes directly, then any part of the symbol having different bytes will cause *all* relocations to that symbol to show as a diff, even if the specific string being accessed is the same.
* Fix weak stripped symbols showing as a false diff
Fixed this by showing extern symbols correctly instead of skipping them.
* Add "Relax shifted data diffs" option to objdiff-cli
Includes both a command line argument and a keyboard shortcut (S).
* Remove addi string data hack and ... pool name hack
* Clippy fix
* PPC: Clear relocs from GPRs when overwritten
* PPC: Follow branches to improve pool detection accuracy
* PPC: Handle following bctr jump table control flow
* Clippy fixes
* PPC: Fix extern relocations not having their addend copied
* Add option to disable func data value diffing
* PPC: Handle lmw when clearing GPRs
* PPC: Handle moving reloc address with `add` inst
* Combine "relax reloc diffs" with other reloc diff options
* Add v3 config and migrate from v2
---------
Co-authored-by: Luke Street <luke@street.dev>
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
This migrates to using protobuf to
define the "report" and "changes"
formats in objdiff-cli.
The JSON output now uses the Proto3
"JSON Mapping", which is slightly
incompatible with the existing JSON
format. Mainly, 64-bit numbers are
represented as strings, and addresses
are decimal strings instead of hex.
However, the older JSON format is
still accepted by "report changes"
to ease migration.
* 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 8bbfcc6f453c13340764bbae2946025bc41659ae.
* 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>
* cli diff: Resolve object and project if not specified
* Make `symbol` positional
* Short circuit ambiguous matches
* Tighten argument matching
* Speed up function lookup