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)