david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[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.
This commit is contained in:
Stefan Hajnoczi 2008-06-05 15:31:48 +01:00 committed by Michael Brown
parent 27731d975e
commit 59b5465b30
3 changed files with 19 additions and 5 deletions

View File

@ -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;

View File

@ -25,5 +25,9 @@ gdbstub_test:
int $3
addl $8, %esp
/* 5. Step test */
int $3
nop
1:
jmp 1b

View File

@ -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