cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

test-qxfer-auxv-read.py (1319B)


      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)