aboutsummaryrefslogtreecommitdiff
path: root/gdbstub.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2003-07-29 20:50:33 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2003-07-29 20:50:33 +0000
commitc33a346edff5910dddeea84792b73cb117518911 (patch)
treefc171ac6837d43fbb8ee9b984f2bebf907e45f0e /gdbstub.c
parent61a2ad53cb6337eb2c535984f65f1cb531ccc452 (diff)
first part of single stepping support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@342 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'gdbstub.c')
-rw-r--r--gdbstub.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gdbstub.c b/gdbstub.c
index d255eab6d5..61cb6b1ab5 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -324,6 +324,24 @@ int cpu_gdbstub(void *opaque, int (*main_loop)(void *opaque), int port)
snprintf(buf, sizeof(buf), "S%02x", ret);
put_packet(buf);
break;
+ case 's':
+ env = cpu_gdbstub_get_env(opaque);
+ if (*p != '\0') {
+ addr = strtoul(p, (char **)&p, 16);
+#if defined(TARGET_I386)
+ env->eip = addr;
+#endif
+ }
+ cpu_single_step(env, 1);
+ ret = main_loop(opaque);
+ cpu_single_step(env, 0);
+ if (ret == EXCP_DEBUG)
+ ret = SIGTRAP;
+ else
+ ret = 0;
+ snprintf(buf, sizeof(buf), "S%02x", ret);
+ put_packet(buf);
+ break;
case 'g':
env = cpu_gdbstub_get_env(opaque);
registers = (void *)mem_buf;