diff options
author | Stefan Hajnoczi | 2008-06-05 16:31:48 +0200 |
---|---|---|
committer | Michael Brown | 2008-06-30 20:19:48 +0200 |
commit | 59b5465b30733dcd457698606b6de7cf31a3882d (patch) | |
tree | b8d901a0eac8eb805cc687d8883d9ee5b81a7195 /src | |
parent | [romprefix] Fix PMM detection start address (diff) | |
download | ipxe-59b5465b30733dcd457698606b6de7cf31a3882d.tar.gz ipxe-59b5465b30733dcd457698606b6de7cf31a3882d.tar.xz ipxe-59b5465b30733dcd457698606b6de7cf31a3882d.zip |
[GDB] Handle kill and detach packets.
This commit also includes a test to ensure that single stepping works,
since continue, kill, detach, and single step all share code.
Diffstat (limited to 'src')
-rw-r--r-- | src/core/gdbstub.c | 13 | ||||
-rw-r--r-- | src/tests/gdbstub_test.S | 4 | ||||
-rwxr-xr-x | src/tests/gdbstub_test.gdb | 7 |
3 files changed, 19 insertions, 5 deletions
diff --git a/src/core/gdbstub.c b/src/core/gdbstub.c index 213887b5..544595e6 100644 --- a/src/core/gdbstub.c +++ b/src/core/gdbstub.c @@ -235,11 +235,14 @@ static void gdbstub_rx_packet ( struct gdbstub *stub ) { case 'M': gdbstub_write_mem ( stub ); break; - case 'c': - gdbstub_continue ( stub, 0 ); - break; - case 's': - gdbstub_continue ( stub, 1 ); + case 'c': /* Continue */ + case 'k': /* Kill */ + case 's': /* Step */ + case 'D': /* Detach */ + gdbstub_continue ( stub, stub->payload [ 0 ] == 's' ); + if ( stub->payload [ 0 ] == 'D' ) { + gdbstub_send_ok ( stub ); + } break; default: stub->len = 0; diff --git a/src/tests/gdbstub_test.S b/src/tests/gdbstub_test.S index ee594ea8..64783089 100644 --- a/src/tests/gdbstub_test.S +++ b/src/tests/gdbstub_test.S @@ -25,5 +25,9 @@ gdbstub_test: int $3 addl $8, %esp + /* 5. Step test */ + int $3 + nop + 1: jmp 1b diff --git a/src/tests/gdbstub_test.gdb b/src/tests/gdbstub_test.gdb index 10db863e..c0c59644 100755 --- a/src/tests/gdbstub_test.gdb +++ b/src/tests/gdbstub_test.gdb @@ -71,6 +71,12 @@ define gpxe_test_mem_write gpxe_assert ({char}($esp)) (char)0x99 "gpxe_test_mem_write char" end +define gpxe_test_step + c + si + gpxe_assert ({char}($eip-1)) (char)0x90 "gpxe_test_step" # nop = 0x90 +end + gpxe_load_symbols gpxe_connect gpxe_start_tests @@ -78,3 +84,4 @@ gpxe_test_regs_read gpxe_test_regs_write gpxe_test_mem_read gpxe_test_mem_write +gpxe_test_step |