diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-03-06 23:49:48 +0100 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-03-06 23:49:48 +0100 |
commit | a5262c46302b078d4ee5bdc78e702c3c074e1e27 (patch) | |
tree | 80c46109160d0a5c4b49e965be189033f347d90d /xen/common/gdbstub.c | |
parent | 6dab2f670d4310fcdbadf0f82d502dc125636bff (diff) | |
download | xen-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.c | 20 |
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); |