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