Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

gdbstub_test.gdb 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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. define ipxe_load_symbols
  12. file bin/ipxe.hd.tmp
  13. end
  14. define ipxe_assert
  15. if $arg0 != $arg1
  16. echo FAIL $arg2\n
  17. else
  18. echo PASS $arg2\n
  19. end
  20. end
  21. define ipxe_start_tests
  22. jump gdbstub_test
  23. end
  24. define ipxe_test_regs_read
  25. ipxe_assert $eax 0xea010203 "ipxe_test_regs_read eax"
  26. ipxe_assert $ebx 0xeb040506 "ipxe_test_regs_read ebx"
  27. ipxe_assert $ecx 0xec070809 "ipxe_test_regs_read ecx"
  28. ipxe_assert $edx 0xed0a0b0c "ipxe_test_regs_read edx"
  29. ipxe_assert $esi 0x510d0e0f "ipxe_test_regs_read esi"
  30. ipxe_assert $edi 0xd1102030 "ipxe_test_regs_read edi"
  31. end
  32. define ipxe_test_regs_write
  33. set $eax = 0xea112233
  34. set $ebx = 0xeb445566
  35. set $ecx = 0xec778899
  36. set $edx = 0xedaabbcc
  37. set $esi = 0x51ddeeff
  38. set $edi = 0xd1010203
  39. c
  40. ipxe_assert $eax 0xea112233 "ipxe_test_regs_write eax"
  41. ipxe_assert $ebx 0xeb445566 "ipxe_test_regs_write ebx"
  42. ipxe_assert $ecx 0xec778899 "ipxe_test_regs_write ecx"
  43. ipxe_assert $edx 0xedaabbcc "ipxe_test_regs_write edx"
  44. ipxe_assert $esi 0x51ddeeff "ipxe_test_regs_write esi"
  45. ipxe_assert $edi 0xd1010203 "ipxe_test_regs_write edi"
  46. # This assumes segment selectors are always 0x10 or 0x8 (for code).
  47. ipxe_assert $cs 0x08 "ipxe_test_regs_write cs"
  48. ipxe_assert $ds 0x10 "ipxe_test_regs_write ds"
  49. end
  50. define ipxe_test_mem_read
  51. c
  52. ipxe_assert ({int}($esp+4)) 0x11223344 "ipxe_test_mem_read int"
  53. ipxe_assert ({short}($esp+2)) 0x5566 "ipxe_test_mem_read short"
  54. ipxe_assert ({char}($esp)) 0x77 "ipxe_test_mem_read char"
  55. end
  56. define ipxe_test_mem_write
  57. set ({int}($esp+4)) = 0xaabbccdd
  58. set ({short}($esp+2)) = 0xeeff
  59. set ({char}($esp)) = 0x99
  60. c
  61. ipxe_assert ({int}($esp+4)) 0xaabbccdd "ipxe_test_mem_write int"
  62. ipxe_assert ({short}($esp+2)) (short)0xeeff "ipxe_test_mem_write short"
  63. ipxe_assert ({char}($esp)) (char)0x99 "ipxe_test_mem_write char"
  64. end
  65. define ipxe_test_step
  66. c
  67. si
  68. ipxe_assert ({char}($eip-1)) (char)0x90 "ipxe_test_step" # nop = 0x90
  69. end
  70. define ipxe_test_awatch
  71. awatch watch_me
  72. c
  73. ipxe_assert $ecx 0x600d0000 "ipxe_test_awatch read"
  74. if $ecx == 0x600d0000
  75. c
  76. end
  77. c
  78. ipxe_assert $ecx 0x600d0001 "ipxe_test_awatch write"
  79. if $ecx == 0x600d0001
  80. c
  81. end
  82. delete
  83. end
  84. define ipxe_test_watch
  85. watch watch_me
  86. c
  87. ipxe_assert $ecx 0x600d0002 "ipxe_test_watch"
  88. if $ecx == 0x600d0002
  89. c
  90. end
  91. delete
  92. end
  93. ipxe_load_symbols
  94. ipxe_start_tests
  95. ipxe_test_regs_read
  96. ipxe_test_regs_write
  97. ipxe_test_mem_read
  98. ipxe_test_mem_write
  99. ipxe_test_step
  100. ipxe_test_awatch
  101. ipxe_test_watch