Skip to content

Check relocation addends when diffing functions #158

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 10, 2025

Conversation

LagoLunatic
Copy link
Contributor

This is probably pretty rare and not that important, but I ran into a case where the (fake) relocation shown by objdiff had the correct symbol name but wrong addend, and objdiff wasn't highlighting it as a diff like it should be, so I implemented that. This also makes the func reloc diffing logic more similar to the data reloc diffing logic (which already checks addends).

Before:
image
After:
image

Also the second commit is to make the addend be visually colored along with the symbol:
image

@encounter
Copy link
Owner

I somehow did not see this PR until now. Looks good, thanks!

@encounter encounter merged commit 3e6efb7 into encounter:main Feb 10, 2025
18 checks passed
LagoLunatic added a commit to LagoLunatic/objdiff that referenced this pull request Mar 5, 2025
…addend

This is a regression that was introduced by encounter#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.
encounter pushed a commit that referenced this pull request Mar 5, 2025
* 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants