2 # Test suite for GDB remote debugging
7 # (gdb) target remote :TCPPORT
9 # (gdb) target remote udp:IP:UDPPORT
10 # (gdb) source tests/gdbstub_test.gdb
12 define gpxe_load_symbols
24 define gpxe_start_tests
28 define gpxe_test_regs_read
29 gpxe_assert $eax 0xea010203 "gpxe_test_regs_read eax"
30 gpxe_assert $ebx 0xeb040506 "gpxe_test_regs_read ebx"
31 gpxe_assert $ecx 0xec070809 "gpxe_test_regs_read ecx"
32 gpxe_assert $edx 0xed0a0b0c "gpxe_test_regs_read edx"
33 gpxe_assert $esi 0x510d0e0f "gpxe_test_regs_read esi"
34 gpxe_assert $edi 0xd1102030 "gpxe_test_regs_read edi"
37 define gpxe_test_regs_write
45 gpxe_assert $eax 0xea112233 "gpxe_test_regs_write eax"
46 gpxe_assert $ebx 0xeb445566 "gpxe_test_regs_write ebx"
47 gpxe_assert $ecx 0xec778899 "gpxe_test_regs_write ecx"
48 gpxe_assert $edx 0xedaabbcc "gpxe_test_regs_write edx"
49 gpxe_assert $esi 0x51ddeeff "gpxe_test_regs_write esi"
50 gpxe_assert $edi 0xd1010203 "gpxe_test_regs_write edi"
52 # This assumes segment selectors are always 0x10 or 0x8 (for code).
53 gpxe_assert $cs 0x08 "gpxe_test_regs_write cs"
54 gpxe_assert $ds 0x10 "gpxe_test_regs_write ds"
57 define gpxe_test_mem_read
59 gpxe_assert ({int}($esp+4)) 0x11223344 "gpxe_test_mem_read int"
60 gpxe_assert ({short}($esp+2)) 0x5566 "gpxe_test_mem_read short"
61 gpxe_assert ({char}($esp)) 0x77 "gpxe_test_mem_read char"
64 define gpxe_test_mem_write
65 set ({int}($esp+4)) = 0xaabbccdd
66 set ({short}($esp+2)) = 0xeeff
67 set ({char}($esp)) = 0x99
69 gpxe_assert ({int}($esp+4)) 0xaabbccdd "gpxe_test_mem_write int"
70 gpxe_assert ({short}($esp+2)) (short)0xeeff "gpxe_test_mem_write short"
71 gpxe_assert ({char}($esp)) (char)0x99 "gpxe_test_mem_write char"
77 gpxe_assert ({char}($eip-1)) (char)0x90 "gpxe_test_step" # nop = 0x90
80 define gpxe_test_awatch
84 gpxe_assert $ecx 0x600d0000 "gpxe_test_awatch read"
90 gpxe_assert $ecx 0x600d0001 "gpxe_test_awatch write"
98 define gpxe_test_watch
101 gpxe_assert $ecx 0x600d0002 "gpxe_test_watch"
102 if $ecx == 0x600d0002