1from __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 8import gdb 9import sys 10 11failcount = 0 12 13def 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 22def 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# 35try: 36 inferior = gdb.selected_inferior() 37 arch = inferior.architecture() 38 print("ATTACHED: %s" % arch.name()) 39except (gdb.error, AttributeError): 40 print("SKIPPING (not connected)", file=sys.stderr) 41 exit(0) 42 43if gdb.parse_and_eval('$pc') == 0: 44 print("SKIP: PC not set") 45 exit(0) 46 47try: 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() 54except (gdb.error): 55 print ("GDB Exception: %s" % (sys.exc_info()[0])) 56 failcount += 1 57 pass 58 59print("All tests complete: %d failures" % failcount) 60exit(failcount) 61