MIEngine: Fix Disassembly fail on GPU if startAddress is offset #1420
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.
Fix Disassembly failure on GPU if startAddress is offset
Issue description & fix:
When opening Disassembly View, VS requests disassembly for a certain amount of instructions.
In some of those requests, start address calculation results in an address in the middle of the instruction.
GDB is unable to execute the command if the start address of the disassembly range is the middle of the instruction - returns "unknown error -1", and thus MIEngine does not have any data for the VS to populate the entries - as a result, nulls are returned to VS, represented by "??".
The fix is to loop the disassembly request if it fails while decrementing the start address - this way at some point it will align with the beginning of the instruction. The loop will perform at most Process.MaxInstructionSize-times (assuming worst-case initial address at the end of the instruction).
It does happen that the end address is offset as well, but it does not affect the disassembly process.
Signed-off-by: intel-rganesh rakesh.ganesh@intel.com