Hooks: Add warning about ARM IT blocks with UC_HOOK_CODE#2269
Hooks: Add warning about ARM IT blocks with UC_HOOK_CODE#2269wuetj wants to merge 1 commit intounicorn-engine:devfrom
Conversation
The root cause is that if we stop within an IT block, we can no longer restart emulation because the conditon flags are lost, though I agree that jumping to elsewhere by modifying PC counter is fairly safe. See #853
That's also possible but much harder to do. |
|
Wouldn't this currently also cause issues for the |
Not exactly because |
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.