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    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#
32try:
33    inferior = gdb.selected_inferior()
34    arch = inferior.architecture()
35    print("ATTACHED: %s" % arch.name())
36except (gdb.error, AttributeError):
37    print("SKIPPING (not connected)", file=sys.stderr)
38    exit(0)
39
40if gdb.parse_and_eval('$pc') == 0:
41    print("SKIP: PC not set")
42    exit(0)
43
44try:
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()
51except (gdb.error):
52    print ("GDB Exception: %s" % (sys.exc_info()[0]))
53    failcount += 1
54    pass
55
56print("All tests complete: %d failures" % failcount)
57exit(failcount)
58