objdiff/objdiff-core
LagoLunatic cf5fc54cfa
PPC: Reimplement pooled data reference calculation (#167)
* PPC: Calculate pooled relocations

Reimplements #140

The relocations are now generated when the object is first read in `parse`, right after the real relocations are read.

`resolve_relocation` was changed to take `obj.symbols` instead of `obj` as an argument, because `obj` itself doesn't exist yet at the time the relocations are being read.

* Improve readability of PPC pool relocs code

* Fix regression causing extern pool relocs to be ignored

* Fix showing incorrect diff when diffing weak stripped symbol with an addend

This is a regression that was introduced by #158 diffing addends in addition to symbol names. But it's not really a bug in that PR, rather it seems like I simply never added the offset into the addend when creating a fake pool relocation for an extern symbol. So this commit fixes that root issue instead.

* Add PPC "Calculate pooled data references" option

* Fix objdiff-wasm compilation errors

* Update PPC test snapshots
2025-03-04 20:40:34 -07:00
..
2025-02-26 22:09:39 -07:00
2025-02-26 22:09:39 -07:00
2025-03-02 16:13:12 -07:00
2024-10-31 17:39:12 -06:00

objdiff-core

objdiff-core contains the core functionality of objdiff, a tool for comparing object files in decompilation projects. See the main repository for more information.

Crate feature flags

  • all: Enables all main features.
  • config: Enables objdiff configuration file support.
  • dwarf: Enables extraction of line number information from DWARF debug sections.
  • mips: Enables the MIPS backend powered by rabbitizer. (Note: C library with Rust bindings)
  • ppc: Enables the PowerPC backend powered by ppc750cl.
  • x86: Enables the x86 backend powered by iced-x86.
  • arm: Enables the ARM backend powered by unarm.
  • arm64: Enables the ARM64 backend powered by yaxpeax-arm.
  • bindings: Enables serialization and deserialization of objdiff data structures.