Fix movable instructions computation in x86-64 detour backend #53
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.