1e7f8a3aaSIlya Leoshkevichfrom __future__ import print_function 2e7f8a3aaSIlya Leoshkevich 3e7f8a3aaSIlya Leoshkevich# 4e7f8a3aaSIlya Leoshkevich# Test that signals and debugging mix well together on s390x. 5e7f8a3aaSIlya Leoshkevich# 6e7f8a3aaSIlya Leoshkevich# This is launched via tests/guest-debug/run-test.py 7e7f8a3aaSIlya Leoshkevich# 8e7f8a3aaSIlya Leoshkevich 9e7f8a3aaSIlya Leoshkevichimport gdb 10*4d48c1bcSIlya Leoshkevichfrom test_gdbstub import main, report 11e7f8a3aaSIlya Leoshkevich 12e7f8a3aaSIlya Leoshkevich 13e7f8a3aaSIlya Leoshkevichdef run_test(): 14e7f8a3aaSIlya Leoshkevich """Run through the tests one by one""" 15e7f8a3aaSIlya Leoshkevich illegal_op = gdb.Breakpoint("illegal_op") 16e7f8a3aaSIlya Leoshkevich stg = gdb.Breakpoint("stg") 17e7f8a3aaSIlya Leoshkevich mvc_8 = gdb.Breakpoint("mvc_8") 18e7f8a3aaSIlya Leoshkevich 19e7f8a3aaSIlya Leoshkevich # Expect the following events: 20e7f8a3aaSIlya Leoshkevich # 1x illegal_op breakpoint 21e7f8a3aaSIlya Leoshkevich # 2x stg breakpoint, segv, breakpoint 22e7f8a3aaSIlya Leoshkevich # 2x mvc_8 breakpoint, segv, breakpoint 23e7f8a3aaSIlya Leoshkevich for _ in range(14): 24e7f8a3aaSIlya Leoshkevich gdb.execute("c") 25e7f8a3aaSIlya Leoshkevich report(illegal_op.hit_count == 1, "illegal_op.hit_count == 1") 26e7f8a3aaSIlya Leoshkevich report(stg.hit_count == 4, "stg.hit_count == 4") 27e7f8a3aaSIlya Leoshkevich report(mvc_8.hit_count == 4, "mvc_8.hit_count == 4") 28e7f8a3aaSIlya Leoshkevich 29e7f8a3aaSIlya Leoshkevich # The test must succeed. 30e7f8a3aaSIlya Leoshkevich gdb.Breakpoint("_exit") 31e7f8a3aaSIlya Leoshkevich gdb.execute("c") 32e7f8a3aaSIlya Leoshkevich status = int(gdb.parse_and_eval("$r2")) 33*4d48c1bcSIlya Leoshkevich report(status == 0, "status == 0") 34e7f8a3aaSIlya Leoshkevich 35e7f8a3aaSIlya Leoshkevich 36*4d48c1bcSIlya Leoshkevichmain(run_test) 37