Hooks: Add warning about ARM IT blocks with UC_HOOK_CODE #2269
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
Hooks.mdcurrently mentions this aboutUC_HOOK_CODE:unicorn/docs/Hooks.md
Line 35 in c24c9eb
So in my application, which emulates a Cortex M7, I ended up using this hook to modify the program counter during execution.
For some reason the changes to the program counter were sometimes ignored. After a lot of debugging I stumbled across this piece of code:
unicorn/uc.c
Lines 2153 to 2160 in c24c9eb
This was the reason for the ignored PC changes in my case. I created a simple test case to reproduce this:
Expand test case
In order to avoid anyone from running into the same issue this PR adds a warning to the hooks documentation.
Some potential "fixes" I could think of:
I don't know enough about qemu/unicorn to know what is preventing it from doing that in the first place.