[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 0/2] linux-user/s390x: Fix single-stepping SVC
From: |
Ilya Leoshkevich |
Subject: |
[PATCH 0/2] linux-user/s390x: Fix single-stepping SVC |
Date: |
Thu, 11 May 2023 01:02:11 +0200 |
Hi,
I noticed that single-stepping SVC runs two instructions instead of
one. The reason is that EXCP_SVC masks EXCP_DEBUG.
Patch 1 fixes this problem, patch 2 adds a test.
Btw, there is at least one more problem in that area, namely
single-stepping instructions that cause e.g. SIGILL. Using the
existing signals-s390x test as an example:
(gdb) x/i $pc
=> 0x1001740 <illegal_op>: .long 0x000007fe
(gdb) si
Program received signal SIGILL, Illegal instruction.
(gdb) x/i $pc
=> 0x1001742 <after_illegal_op>: br %r14
# So far so good.
(gdb) si
(gdb) x/i $pc
=> 0x10017b6 <handle_signal+6>: lay %r15,-344(%r15)
# Missed the first signal handler instruction!
I'm not sure what to do about it - the trivial fix to add
gdb_handlesig(cpu, 0) to the end of handle_pending_signal() caused GDB
to hang, and I haven't looked further yet.
Best regards,
Ilya
Ilya Leoshkevich (2):
linux-user/s390x: Fix single-stepping SVC
tests/tcg/s390x: Test single-stepping SVC
linux-user/s390x/cpu_loop.c | 9 ++++
tests/tcg/s390x/Makefile.target | 11 ++++-
tests/tcg/s390x/gdbstub/test-svc.py | 64 +++++++++++++++++++++++++++++
tests/tcg/s390x/hello-s390x-asm.S | 20 +++++++++
4 files changed, 103 insertions(+), 1 deletion(-)
create mode 100644 tests/tcg/s390x/gdbstub/test-svc.py
create mode 100644 tests/tcg/s390x/hello-s390x-asm.S
--
2.40.1
- [PATCH 0/2] linux-user/s390x: Fix single-stepping SVC,
Ilya Leoshkevich <=
Re: [PATCH 0/2] linux-user/s390x: Fix single-stepping SVC, Thomas Huth, 2023/05/31