x86: fix JO/JNO operand size in 64-bit mode - #3067
Open
raaller wants to merge 1 commit into
Open
Conversation
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.
Your checklist for this pull request
Detailed description
0F 80 (JO) and 0F 81 (JNO) were missing from that switch, this caused JO/JNO to end after five bytes and left the remaining bytes to be decoded as subsequent instructions.
This change adds 0x80 and 0x81 to the existing 64-bit near-Jcc handling so the full 32-bit displacement is consumed
Test plan
Added regression tests for both affected instructions in tests/issues/issues.yaml:
66 0f 80 ce fa a5 d8 decodes as a single jo instruction with a 32-bit relative displacement in 64-bit mode
66 0f 81 ce fa a5 d8 decodes as a single jno instruction with a 32-bit relative displacement in 64-bit mode
All testes passed
Closing issues
Closes #3037