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]>

Reply via email to