|
|
1.1 ! root 1: #!/usr/bin/gdb -x ! 2: # Test suite for GDB remote debugging ! 3: # Run: ! 4: # make bin/ipxe.hd.tmp ! 5: # make ! 6: # gdb ! 7: # (gdb) target remote :TCPPORT ! 8: # OR ! 9: # (gdb) target remote udp:IP:UDPPORT ! 10: # (gdb) source tests/gdbstub_test.gdb ! 11: ! 12: define ipxe_load_symbols ! 13: file bin/ipxe.hd.tmp ! 14: end ! 15: ! 16: define ipxe_assert ! 17: if $arg0 != $arg1 ! 18: echo FAIL $arg2\n ! 19: else ! 20: echo PASS $arg2\n ! 21: end ! 22: end ! 23: ! 24: define ipxe_start_tests ! 25: jump gdbstub_test ! 26: end ! 27: ! 28: define ipxe_test_regs_read ! 29: ipxe_assert $eax 0xea010203 "ipxe_test_regs_read eax" ! 30: ipxe_assert $ebx 0xeb040506 "ipxe_test_regs_read ebx" ! 31: ipxe_assert $ecx 0xec070809 "ipxe_test_regs_read ecx" ! 32: ipxe_assert $edx 0xed0a0b0c "ipxe_test_regs_read edx" ! 33: ipxe_assert $esi 0x510d0e0f "ipxe_test_regs_read esi" ! 34: ipxe_assert $edi 0xd1102030 "ipxe_test_regs_read edi" ! 35: end ! 36: ! 37: define ipxe_test_regs_write ! 38: set $eax = 0xea112233 ! 39: set $ebx = 0xeb445566 ! 40: set $ecx = 0xec778899 ! 41: set $edx = 0xedaabbcc ! 42: set $esi = 0x51ddeeff ! 43: set $edi = 0xd1010203 ! 44: c ! 45: ipxe_assert $eax 0xea112233 "ipxe_test_regs_write eax" ! 46: ipxe_assert $ebx 0xeb445566 "ipxe_test_regs_write ebx" ! 47: ipxe_assert $ecx 0xec778899 "ipxe_test_regs_write ecx" ! 48: ipxe_assert $edx 0xedaabbcc "ipxe_test_regs_write edx" ! 49: ipxe_assert $esi 0x51ddeeff "ipxe_test_regs_write esi" ! 50: ipxe_assert $edi 0xd1010203 "ipxe_test_regs_write edi" ! 51: ! 52: # This assumes segment selectors are always 0x10 or 0x8 (for code). ! 53: ipxe_assert $cs 0x08 "ipxe_test_regs_write cs" ! 54: ipxe_assert $ds 0x10 "ipxe_test_regs_write ds" ! 55: end ! 56: ! 57: define ipxe_test_mem_read ! 58: c ! 59: ipxe_assert ({int}($esp+4)) 0x11223344 "ipxe_test_mem_read int" ! 60: ipxe_assert ({short}($esp+2)) 0x5566 "ipxe_test_mem_read short" ! 61: ipxe_assert ({char}($esp)) 0x77 "ipxe_test_mem_read char" ! 62: end ! 63: ! 64: define ipxe_test_mem_write ! 65: set ({int}($esp+4)) = 0xaabbccdd ! 66: set ({short}($esp+2)) = 0xeeff ! 67: set ({char}($esp)) = 0x99 ! 68: c ! 69: ipxe_assert ({int}($esp+4)) 0xaabbccdd "ipxe_test_mem_write int" ! 70: ipxe_assert ({short}($esp+2)) (short)0xeeff "ipxe_test_mem_write short" ! 71: ipxe_assert ({char}($esp)) (char)0x99 "ipxe_test_mem_write char" ! 72: end ! 73: ! 74: define ipxe_test_step ! 75: c ! 76: si ! 77: ipxe_assert ({char}($eip-1)) (char)0x90 "ipxe_test_step" # nop = 0x90 ! 78: end ! 79: ! 80: define ipxe_test_awatch ! 81: awatch watch_me ! 82: ! 83: c ! 84: ipxe_assert $ecx 0x600d0000 "ipxe_test_awatch read" ! 85: if $ecx == 0x600d0000 ! 86: c ! 87: end ! 88: ! 89: c ! 90: ipxe_assert $ecx 0x600d0001 "ipxe_test_awatch write" ! 91: if $ecx == 0x600d0001 ! 92: c ! 93: end ! 94: ! 95: delete ! 96: end ! 97: ! 98: define ipxe_test_watch ! 99: watch watch_me ! 100: c ! 101: ipxe_assert $ecx 0x600d0002 "ipxe_test_watch" ! 102: if $ecx == 0x600d0002 ! 103: c ! 104: end ! 105: delete ! 106: end ! 107: ! 108: ipxe_load_symbols ! 109: ipxe_start_tests ! 110: ipxe_test_regs_read ! 111: ipxe_test_regs_write ! 112: ipxe_test_mem_read ! 113: ipxe_test_mem_write ! 114: ipxe_test_step ! 115: ipxe_test_awatch ! 116: ipxe_test_watch
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.