Skip to content

Commit

Permalink
[GDB] Test suite for the GDB stub
Browse files Browse the repository at this point in the history
  • Loading branch information
stefanha authored and Michael Brown committed Jun 4, 2008
1 parent 04bc50f commit 4180815
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 0 deletions.
29 changes: 29 additions & 0 deletions src/tests/gdbstub_test.S
@@ -0,0 +1,29 @@
.arch i386
.section ".text"
.code32
gdbstub_test:
/* 1. Read registers test */
movl $0xea010203, %eax
movl $0xeb040506, %ebx
movl $0xec070809, %ecx
movl $0xed0a0b0c, %edx
movl $0x510d0e0f, %esi
movl $0xd1102030, %edi
int $3

/* 2. Write registers test */
int $3

/* 3. Read memory test */
subl $8, %esp
movl $0x11223344, 4(%esp)
movw $0x5566, 2(%esp)
movb $0x77, (%esp)
int $3

/* 4. Write memory test */
int $3
addl $8, %esp

1:
jmp 1b
80 changes: 80 additions & 0 deletions src/tests/gdbstub_test.gdb
@@ -0,0 +1,80 @@
#!/usr/bin/gdb -x
# Test suite for GDB remote debugging
# Run:
# make bin/gpxe.hd.tmp
# make
# tests/gdbstub_test.gdb

define gpxe_load_symbols
file bin/gpxe.hd.tmp
end

define gpxe_connect
target remote localhost:4444
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

gpxe_load_symbols
gpxe_connect
gpxe_start_tests
gpxe_test_regs_read
gpxe_test_regs_write
gpxe_test_mem_read
gpxe_test_mem_write

0 comments on commit 4180815

Please sign in to comment.