exec: fix check_watchpoint exiting cpu_loop
In case of BP_STOP_BEFORE_ACCESS watchpoint check_watchpoint intends to signal EXCP_DEBUG exception on exit from cpu loop, but later overwrites exception code by the cpu_resume_from_signal call. Use cpu_loop_exit with BP_STOP_BEFORE_ACCESS watchpoints. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
6736415047
commit
488d65772c
3
exec.c
3
exec.c
@ -3257,11 +3257,12 @@ static void check_watchpoint(int offset, int len_mask, int flags)
|
||||
tb_phys_invalidate(tb, -1);
|
||||
if (wp->flags & BP_STOP_BEFORE_ACCESS) {
|
||||
env->exception_index = EXCP_DEBUG;
|
||||
cpu_loop_exit(env);
|
||||
} else {
|
||||
cpu_get_tb_cpu_state(env, &pc, &cs_base, &cpu_flags);
|
||||
tb_gen_code(env, pc, cs_base, cpu_flags, 1);
|
||||
cpu_resume_from_signal(env, NULL);
|
||||
}
|
||||
cpu_resume_from_signal(env, NULL);
|
||||
}
|
||||
} else {
|
||||
wp->flags &= ~BP_WATCHPOINT_HIT;
|
||||
|
Loading…
x
Reference in New Issue
Block a user