On 9/3/25 10:14, Nicholas Piggin wrote:
Changes in v2:
- Fix 32-bit compile
- Moved sizeof_rt_sigframe change to its correct patch (patch 2 is the
one that extends the size of rt_sigframe, patch 3 is adding new
extended state to the frame which is added dynamically).
This series adds vector state to the linux-user signal handler,
and adds a basic signal handling test case. As a sanity check, I
also verified the signal handling test works in the same way when
run under a real Linux kernel.
The signal handler test has some gross header hacks in it to make
it work for me (debian arm64->riscv64 cross compile environment),
I would not be surprised if it breaks in other environments, any
ideas or breakages let me know. May just have to define the types
by hand for now if it becomes intractable.
I couldn't find much in the way of previous discussion or work on
this, forgive me if I've missed it.
Thanks,
Nick
Nicholas Piggin (4):
tests/tcg/riscv64: Add a user signal handling test
linux-user/riscv: Add extended state to sigcontext
linux-user/riscv: Add vector state to signal context
tests/tcg/riscv64: Add vector state to signal test
linux-user/riscv/signal.c | 197 ++++++++-
linux-user/riscv/vdso-asmoffset.h | 4 +-
tests/tcg/riscv64/Makefile.target | 5 +
tests/tcg/riscv64/test-signal-handling.c | 507 +++++++++++++++++++++++
4 files changed, 700 insertions(+), 13 deletions(-)
create mode 100644 tests/tcg/riscv64/test-signal-handling.c
This patch series resolves the issue reported in
https://gitlab.com/qemu-project/qemu/-/issues/3224
https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/2133188
Programs in foreign architecture RISC-V containers using RVA23 crash due
to not restoring the vector state after handling signals.
It would be great if this series could be reviewed soon.
Tested-by: Heinrich Schuchardt <[email protected]>