test-qxfer-auxv-read.py (1319B)
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 auxv = gdb.execute("info auxv", False, True) 26 report(isinstance(auxv, str), "Fetched auxv from inferior") 27 report(auxv.find("sha1"), "Found test binary name in auxv") 28 29 # 30 # This runs as the script it sourced (via -x, via run-test.py) 31 # 32 try: 33 inferior = gdb.selected_inferior() 34 arch = inferior.architecture() 35 print("ATTACHED: %s" % arch.name()) 36 except (gdb.error, AttributeError): 37 print("SKIPPING (not connected)", file=sys.stderr) 38 exit(0) 39 40 if gdb.parse_and_eval('$pc') == 0: 41 print("SKIP: PC not set") 42 exit(0) 43 44 try: 45 # These are not very useful in scripts 46 gdb.execute("set pagination off") 47 gdb.execute("set confirm off") 48 49 # Run the actual tests 50 run_test() 51 except (gdb.error): 52 print ("GDB Exception: %s" % (sys.exc_info()[0])) 53 failcount += 1 54 pass 55 56 print("All tests complete: %d failures" % failcount) 57 exit(failcount)