diff options
author | Stefan Hajnoczi <stefanha@gmail.com> | 2008-06-05 15:31:48 +0100 |
---|---|---|
committer | Michael Brown <mcb30@etherboot.org> | 2008-06-30 19:19:48 +0100 |
commit | 59b5465b30733dcd457698606b6de7cf31a3882d (patch) | |
tree | b8d901a0eac8eb805cc687d8883d9ee5b81a7195 | |
parent | 27731d975ebac0bb70d7a9a4dd3f98698bfd5765 (diff) | |
download | ipxe-59b5465b30733dcd457698606b6de7cf31a3882d.tar.gz |
[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.
-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 213887b55..544595e65 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 ee594ea85..647830898 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 10db863e1..c0c596441 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 |