-
Notifications
You must be signed in to change notification settings - Fork 566
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
i#731,i#3271: Keep IR cti+copied bits valid and re-relativized #4018
Conversation
Adds rip-relative information tracking at IR levels 1-3 for instruction references on x86, extending the existing tracking for data references. Adds decode_sizeof_ex() and instr_get_rel_data_or_instr_target() to support rip-relative displacement and target handling. Changes decode_from_copy() to preserve raw bits for all instructions, eliminating problems where untracked encoding features are lost such as in #4017. Documents the changes and describes how to avoid the new behavior. Does just that for intra-sequence cti's in the rseq native code copy. Adds test cases to api.ir. Implementing the same thing for AArchXX is left unimplemented, tracked by i#4016. Issue: #731, #3271, #3339, #4016, #4017 Fixes #731 Fixes #3271 Fixes #4017
(Making sure the CI is green before requesting review since this has potential to break things.) |
Expand comment on instr-vs-data.
All issues resolved. PTAL. See #4017 (comment) for logic behind tackling the full #731. |
PTAL. Sorry, I pre-emptively merged in upstream to deal w/ a conflict, so the "changes since last review" button may not be a good view: but selecting just the final commit from the commit selection dropdown on the diff page will show the review changes. |
Adds rip-relative information tracking at IR levels 1-3 for
instruction references on x86, extending the existing tracking for
data references.
Adds decode_sizeof_ex() and instr_get_rel_data_or_instr_target() to
support rip-relative displacement and target handling.
Changes decode_from_copy() to preserve raw bits for all instructions,
eliminating problems where untracked encoding features are lost such
as in #4017.
Documents the changes and describes how to avoid the new behavior.
Does just that for intra-sequence cti's in the rseq native code copy.
Adds test cases to api.ir.
Implementing the same thing for AArchXX is left unimplemented, tracked
by i#4016.
Issue: #731, #3271, #3339, #4016, #4017
Fixes #731
Fixes #3271
Fixes #4017