Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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