diff options
Diffstat (limited to 'contrib/syslinux-4.02/gpxe/src/tests/gdbstub_test.gdb')
-rwxr-xr-x | contrib/syslinux-4.02/gpxe/src/tests/gdbstub_test.gdb | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/gpxe/src/tests/gdbstub_test.gdb b/contrib/syslinux-4.02/gpxe/src/tests/gdbstub_test.gdb new file mode 100755 index 0000000..52aa693 --- /dev/null +++ b/contrib/syslinux-4.02/gpxe/src/tests/gdbstub_test.gdb @@ -0,0 +1,116 @@ +#!/usr/bin/gdb -x +# Test suite for GDB remote debugging +# Run: +# make bin/gpxe.hd.tmp +# make +# gdb +# (gdb) target remote :TCPPORT +# OR +# (gdb) target remote udp:IP:UDPPORT +# (gdb) source tests/gdbstub_test.gdb + +define gpxe_load_symbols + file bin/gpxe.hd.tmp +end + +define gpxe_assert + if $arg0 != $arg1 + echo FAIL $arg2\n + else + echo PASS $arg2\n + end +end + +define gpxe_start_tests + jump gdbstub_test +end + +define gpxe_test_regs_read + gpxe_assert $eax 0xea010203 "gpxe_test_regs_read eax" + gpxe_assert $ebx 0xeb040506 "gpxe_test_regs_read ebx" + gpxe_assert $ecx 0xec070809 "gpxe_test_regs_read ecx" + gpxe_assert $edx 0xed0a0b0c "gpxe_test_regs_read edx" + gpxe_assert $esi 0x510d0e0f "gpxe_test_regs_read esi" + gpxe_assert $edi 0xd1102030 "gpxe_test_regs_read edi" +end + +define gpxe_test_regs_write + set $eax = 0xea112233 + set $ebx = 0xeb445566 + set $ecx = 0xec778899 + set $edx = 0xedaabbcc + set $esi = 0x51ddeeff + set $edi = 0xd1010203 + c + gpxe_assert $eax 0xea112233 "gpxe_test_regs_write eax" + gpxe_assert $ebx 0xeb445566 "gpxe_test_regs_write ebx" + gpxe_assert $ecx 0xec778899 "gpxe_test_regs_write ecx" + gpxe_assert $edx 0xedaabbcc "gpxe_test_regs_write edx" + gpxe_assert $esi 0x51ddeeff "gpxe_test_regs_write esi" + gpxe_assert $edi 0xd1010203 "gpxe_test_regs_write edi" + + # This assumes segment selectors are always 0x10 or 0x8 (for code). + gpxe_assert $cs 0x08 "gpxe_test_regs_write cs" + gpxe_assert $ds 0x10 "gpxe_test_regs_write ds" +end + +define gpxe_test_mem_read + c + gpxe_assert ({int}($esp+4)) 0x11223344 "gpxe_test_mem_read int" + gpxe_assert ({short}($esp+2)) 0x5566 "gpxe_test_mem_read short" + gpxe_assert ({char}($esp)) 0x77 "gpxe_test_mem_read char" +end + +define gpxe_test_mem_write + set ({int}($esp+4)) = 0xaabbccdd + set ({short}($esp+2)) = 0xeeff + set ({char}($esp)) = 0x99 + c + gpxe_assert ({int}($esp+4)) 0xaabbccdd "gpxe_test_mem_write int" + gpxe_assert ({short}($esp+2)) (short)0xeeff "gpxe_test_mem_write short" + 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 + +define gpxe_test_awatch + awatch watch_me + + c + gpxe_assert $ecx 0x600d0000 "gpxe_test_awatch read" + if $ecx == 0x600d0000 + c + end + + c + gpxe_assert $ecx 0x600d0001 "gpxe_test_awatch write" + if $ecx == 0x600d0001 + c + end + + delete +end + +define gpxe_test_watch + watch watch_me + c + gpxe_assert $ecx 0x600d0002 "gpxe_test_watch" + if $ecx == 0x600d0002 + c + end + delete +end + +gpxe_load_symbols +gpxe_start_tests +gpxe_test_regs_read +gpxe_test_regs_write +gpxe_test_mem_read +gpxe_test_mem_write +gpxe_test_step +gpxe_test_awatch +gpxe_test_watch |