arm: Account for Thumb instruction widths in IT lookback - #92
Open
zardus wants to merge 1 commit into
Open
Conversation
Walk each possible IT candidate forward using exact Thumb instruction widths before clearing ITSTATE. Continue past expired candidates so halfwords within 32-bit encodings cannot hide an older active IT.
Member
Author
|
THIS MESSAGE WAS GENERATED BY AN AUTOMATED PROCESS Validation record for head
Caveat: the executable regressions live in the dependent PyVEX pull request; this repository's local gate is its native build. |
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 MESSAGE WAS GENERATED BY AN AUTOMATED PROCESS
Thumb block lifting can incorrectly preserve ITSTATE after a mixed-width IT group has ended, because the lookback treats every guarded instruction as four bytes. This produces a synthetic conditional exit for the first instruction after the group.
The ARM decoder now walks each possible IT candidate forward using exact Thumb instruction widths, and continues past expired candidates so a halfword inside a 32-bit instruction cannot hide an older active IT.
The dependent PyVEX change adds regressions from a public newlib
memchrsequence and conservative boundary cases. Validation: #92 (comment).sync: angr/pyvex#568