Fix movable instructions computation in x86-64 detour backend - #53
Open
dnivra wants to merge 7 commits into
Open
Fix movable instructions computation in x86-64 detour backend#53dnivra wants to merge 7 commits into
dnivra wants to merge 7 commits into
Conversation
instructions containing patch address instead of entire basic block
dnivra
marked this pull request as draft
November 23, 2023 00:29
size of movable basic block
dnivra
marked this pull request as ready for review
November 23, 2023 20:33
Contributor
Author
|
I fixed the x86-64 test cases that failed because of changes in this PR. The sole failing test case fails on master as well and so I think this PR can be merged in. |
Contributor
Author
|
I fixed the failing test case as well. It seems the test case was incorrectly updated in 29c1c57a and so was failing. Since the change is pretty trivial, I included it in this PR too. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR fixes the movable instructions computation in the x86-64 detour backend (and thus potentially fix #47). Currently, only the last instruction in the block is check if movable or not. As a result, any unmovable instructions in the middle of the block (eg: instructions with RIP relative addressing) will be treated as movable and trigger a fault if moved. This PR fixes the movable instructions computation to exclude such instructions. Technically, RIP relative instructions can be moved - the argument needs to be modified to ensure the reference is still valid. However, I felt excluding them is easier to implement and so went down that route. If we want to treat RIP relative instructions as movable, I can look into doing that.