aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/gdbstub.c
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-03-06 23:49:48 +0100
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-03-06 23:49:48 +0100
commita5262c46302b078d4ee5bdc78e702c3c074e1e27 (patch)
tree80c46109160d0a5c4b49e965be189033f347d90d /xen/common/gdbstub.c
parent6dab2f670d4310fcdbadf0f82d502dc125636bff (diff)
downloadxen-a5262c46302b078d4ee5bdc78e702c3c074e1e27.tar.gz
xen-a5262c46302b078d4ee5bdc78e702c3c074e1e27.tar.bz2
xen-a5262c46302b078d4ee5bdc78e702c3c074e1e27.zip
Fix additional gdbstub issues.
- gdbstub.h uses atomic_t and PAGE_SIZE, so include those headers - do not lie about setting breakpoints - fix memory writing Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
Diffstat (limited to 'xen/common/gdbstub.c')
-rw-r--r--xen/common/gdbstub.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/xen/common/gdbstub.c b/xen/common/gdbstub.c
index 5f5beb690a..7ff7524cd2 100644
--- a/xen/common/gdbstub.c
+++ b/xen/common/gdbstub.c
@@ -348,7 +348,10 @@ gdb_cmd_write_mem(unsigned long addr, unsigned long length,
}
}
- gdb_write_to_packet_str((x != length) ? "OK" : "E11", ctx);
+ if (x == length)
+ gdb_write_to_packet_str("OK", ctx);
+ else
+ gdb_write_to_packet_str("E11", ctx);
dbg_printk("Write done.\n");
@@ -397,13 +400,18 @@ process_command(struct cpu_user_regs *regs, struct gdb_context *ctx)
break;
case 'M': /* Write memory */
addr = simple_strtoul(ctx->in_buf + 1, &ptr, 16);
- if ( (ptr == (ctx->in_buf + 1)) || (ptr[0] != ':') )
+ if ( (ptr == (ctx->in_buf + 1)) || (ptr[0] != ',') )
{
gdb_send_reply("E03", ctx);
return 0;
}
length = simple_strtoul(ptr + 1, &ptr, 16);
- gdb_cmd_write_mem(addr, length, ptr, ctx);
+ if ( ptr[0] != ':')
+ {
+ gdb_send_reply("E04", ctx);
+ return 0;
+ }
+ gdb_cmd_write_mem(addr, length, ptr + 1, ctx);
break;
case 'p': /* read register */
addr = simple_strtoul(ctx->in_buf + 1, &ptr, 16);
@@ -419,12 +427,6 @@ process_command(struct cpu_user_regs *regs, struct gdb_context *ctx)
}
gdb_arch_read_reg(addr, regs, ctx);
break;
- case 'Z': /* We need to claim to support these or gdb
- won't let you continue the process. */
- case 'z':
- gdb_send_reply("OK", ctx);
- break;
-
case 'D':
ctx->currently_attached = 0;
gdb_send_reply("OK", ctx);