Fix ComputeXdataSize samples for ARM/ARM64 #3068
Merged
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.
The ARM version was logically correct; however, its text was badly broken. The ARM64 version had a number of logical issues:
Xdataparameter was typed incorrectly (the code would not compile).27instead of22) was used to check whether the extension word is present. That contradicted the textual description.0x0finstead of0x1f) was used to extract the 5-bitUnwindWordsfield. That caused losing the most significant bit ofUnwindWordsand returning an incorrect size for .xdata records containing from 61 to 124 unwind byte codes.Ebit was missing.See the implementation of the
RtlpUnwindFunctionFullOS function for the source of truth.