-
Notifications
You must be signed in to change notification settings - Fork 23
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
Exception table diff view #82
Conversation
Needs lotsa work
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this! Looks great overall, just a few nits
/* Get the function symbol and extab symbol from the extabindex relocations array. Each extabindex | ||
entry has two relocations (the first for the function, the second for the extab entry) */ | ||
let extab_func = extabindex_section.relocations[i * 2].target.clone(); | ||
let extab = &extabindex_section.relocations[(i * 2) + 1].target; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems dangerous to assume the index of relocations. Can we fetch these by either source address or target symbol?
let mut dtors: Vec<ObjSymbol> = vec![]; | ||
|
||
while extab_reloc_index < extab_reloc_count { | ||
let extab_reloc = &extab_section.relocations[extab_reloc_index]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we also sanity check that these are Absolute relocations? In case something else sneaks in... not sure how though
One lingering issue is that this will break builds without feature |
This adds a new view which shows the decoded exception tables (extab) for functions which have them, accessible via an option in the right click context menu. The decoded data is listed out as plain text on both sides for both objects, much like the other diff views. No form of diffing is implemented yet, but to start out with we could use text diffing for now, and maybe later on transition to displaying the data in a fancier way that could more easily be diffed.