qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

test-thread-breakpoint.py (1351B)


      1 from __future__ import print_function
      2 #
      3 # Test auxiliary vector is loaded via gdbstub
      4 #
      5 # This is launched via tests/guest-debug/run-test.py
      6 #
      7 
      8 import gdb
      9 import sys
     10 
     11 failcount = 0
     12 
     13 def report(cond, msg):
     14     "Report success/fail of test"
     15     if cond:
     16         print ("PASS: %s" % (msg))
     17     else:
     18         print ("FAIL: %s" % (msg))
     19         global failcount
     20         failcount += 1
     21 
     22 def run_test():
     23     "Run through the tests one by one"
     24 
     25     sym, ok = gdb.lookup_symbol("thread1_func")
     26     gdb.execute("b thread1_func")
     27     gdb.execute("c")
     28 
     29     frame = gdb.selected_frame()
     30     report(str(frame.function()) == "thread1_func", "break @ %s"%frame)
     31 
     32 #
     33 # This runs as the script it sourced (via -x, via run-test.py)
     34 #
     35 try:
     36     inferior = gdb.selected_inferior()
     37     arch = inferior.architecture()
     38     print("ATTACHED: %s" % arch.name())
     39 except (gdb.error, AttributeError):
     40     print("SKIPPING (not connected)", file=sys.stderr)
     41     exit(0)
     42 
     43 if gdb.parse_and_eval('$pc') == 0:
     44     print("SKIP: PC not set")
     45     exit(0)
     46 
     47 try:
     48     # These are not very useful in scripts
     49     gdb.execute("set pagination off")
     50     gdb.execute("set confirm off")
     51 
     52     # Run the actual tests
     53     run_test()
     54 except (gdb.error):
     55     print ("GDB Exception: %s" % (sys.exc_info()[0]))
     56     failcount += 1
     57     pass
     58 
     59 print("All tests complete: %d failures" % failcount)
     60 exit(failcount)