]> Git Repo - qemu.git/commitdiff
accel/tcg: Handle gdb singlestep in cpu_tb_exec
authorRichard Henderson <[email protected]>
Mon, 19 Jul 2021 01:12:12 +0000 (15:12 -1000)
committerRichard Henderson <[email protected]>
Fri, 15 Oct 2021 23:39:14 +0000 (16:39 -0700)
Currently the change in cpu_tb_exec is masked by the debug exception
being raised by the translators.  But this allows us to remove that code.

Signed-off-by: Richard Henderson <[email protected]>
accel/tcg/cpu-exec.c

index 5fd1ed34222fa8ab5d56576480d4b9f844a775e2..c9764c1325f65f3f41606c951931a2d654d9f87a 100644 (file)
@@ -383,6 +383,17 @@ cpu_tb_exec(CPUState *cpu, TranslationBlock *itb, int *tb_exit)
             cc->set_pc(cpu, last_tb->pc);
         }
     }
+
+    /*
+     * If gdb single-step, and we haven't raised another exception,
+     * raise a debug exception.  Single-step with another exception
+     * is handled in cpu_handle_exception.
+     */
+    if (unlikely(cpu->singlestep_enabled) && cpu->exception_index == -1) {
+        cpu->exception_index = EXCP_DEBUG;
+        cpu_loop_exit(cpu);
+    }
+
     return last_tb;
 }
 
This page took 0.027237 seconds and 4 git commands to generate.