Return the appropriate type prefix (r, a, none) when reporting watchpoint hits to the gdb front-end. Signed-off-by: Jan Kiszka --- gdbstub.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) Index: b/gdbstub.c =================================================================== --- a/gdbstub.c +++ b/gdbstub.c @@ -1495,6 +1495,7 @@ static void gdb_vm_stopped(void *opaque, { GDBState *s = opaque; char buf[256]; + const char *type; int ret; if (s->state == RS_SYSCALL) @@ -1505,8 +1506,20 @@ static void gdb_vm_stopped(void *opaque, if (reason == EXCP_DEBUG) { if (s->env->watchpoint_hit) { - snprintf(buf, sizeof(buf), "T%02xwatch:" TARGET_FMT_lx ";", - SIGTRAP, + switch (s->env->watchpoint[s->env->watchpoint_hit - 1].flags & + (PAGE_READ | PAGE_WRITE)) { + case PAGE_READ: + type = "r"; + break; + case PAGE_READ | PAGE_WRITE: + type = "a"; + break; + default: + type = ""; + break; + } + snprintf(buf, sizeof(buf), "T%02x%swatch:" TARGET_FMT_lx ";", + SIGTRAP, type, s->env->watchpoint[s->env->watchpoint_hit - 1].vaddr); put_packet(s, buf); s->env->watchpoint_hit = 0;