mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 17:53:56 -06:00
tests/tcg: Add two follow-fork-mode tests
Add follow-fork-mode child and and follow-fork-mode parent tests. Check for the obvious pitfalls, such as lingering breakpoints, catchpoints, and single-step mode. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Message-Id: <20240219141628.246823-13-iii@linux.ibm.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240305121005.3528075-14-alex.bennee@linaro.org>
This commit is contained in:
parent
d547e711a8
commit
b9504c9ad9
4 changed files with 128 additions and 1 deletions
40
tests/tcg/multiarch/gdbstub/follow-fork-mode-child.py
Normal file
40
tests/tcg/multiarch/gdbstub/follow-fork-mode-child.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
"""Test GDB's follow-fork-mode child.
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
"""
|
||||
from test_gdbstub import main, report
|
||||
|
||||
|
||||
def run_test():
|
||||
"""Run through the tests one by one"""
|
||||
gdb.execute("set follow-fork-mode child")
|
||||
# Check that the parent breakpoints are unset.
|
||||
gdb.execute("break break_after_fork")
|
||||
# Check that the parent syscall catchpoints are unset.
|
||||
# Skip this check on the architectures that don't have them.
|
||||
have_fork_syscall = False
|
||||
for fork_syscall in ("fork", "clone", "clone2", "clone3"):
|
||||
try:
|
||||
gdb.execute("catch syscall {}".format(fork_syscall))
|
||||
except gdb.error:
|
||||
pass
|
||||
else:
|
||||
have_fork_syscall = True
|
||||
gdb.execute("continue")
|
||||
for i in range(42):
|
||||
if have_fork_syscall:
|
||||
# syscall entry.
|
||||
if i % 2 == 0:
|
||||
# Check that the parent single-stepping is turned off.
|
||||
gdb.execute("si")
|
||||
else:
|
||||
gdb.execute("continue")
|
||||
# syscall exit.
|
||||
gdb.execute("continue")
|
||||
# break_after_fork()
|
||||
gdb.execute("continue")
|
||||
exitcode = int(gdb.parse_and_eval("$_exitcode"))
|
||||
report(exitcode == 42, "{} == 42".format(exitcode))
|
||||
|
||||
|
||||
main(run_test)
|
16
tests/tcg/multiarch/gdbstub/follow-fork-mode-parent.py
Normal file
16
tests/tcg/multiarch/gdbstub/follow-fork-mode-parent.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
"""Test GDB's follow-fork-mode parent.
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
"""
|
||||
from test_gdbstub import main, report
|
||||
|
||||
|
||||
def run_test():
|
||||
"""Run through the tests one by one"""
|
||||
gdb.execute("set follow-fork-mode parent")
|
||||
gdb.execute("continue")
|
||||
exitcode = int(gdb.parse_and_eval("$_exitcode"))
|
||||
report(exitcode == 0, "{} == 0".format(exitcode))
|
||||
|
||||
|
||||
main(run_test)
|
Loading…
Add table
Add a link
Reference in a new issue