]> git.ipfire.org Git - thirdparty/glibc.git/commit
hurd: save xstate during signal handling
authorLuca Dariz <luca@orpolo.org>
Wed, 19 Mar 2025 17:11:18 +0000 (18:11 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Fri, 18 Apr 2025 00:42:36 +0000 (02:42 +0200)
commit6d6a6e2dd2133908e3f5cb8a2ed817ccb2a0bb06
treeda63d4eb49134131818869dc4e3c8e83c9d50ba6
parente150ee870907e1c5ded4aad8d22a92a98f59d243
hurd: save xstate during signal handling

* hurd/Makefile: add new tests
* hurd/test-sig-rpc-interrupted.c: check xstate save and restore in
  the case where a signal is delivered to a thread which is waiting
  for an rpc. This test implements the rpc interruption protocol used
  by the hurd servers. It was so far passing on Debian thanks to the
  local-intr-msg-clobber.diff patch, which is now obsolete.
* hurd/test-sig-xstate.c: check xstate save and restore in the case
  where a signal is delivered to a running thread, making sure that
  the xstate is modified in the signal handler.
* hurd/test-xstate.h: add helpers to test xstate
* sysdeps/mach/hurd/i386/bits/sigcontext.h: add xstate to the
  sigcontext structure.
+ sysdeps/mach/hurd/i386/sigreturn.c: restore xstate from the saved
  context
* sysdeps/mach/hurd/x86/trampoline.c: save xstate if
  supported. Otherwise we fall back to the previous behaviour of
  ignoring xstate.
* sysdeps/mach/hurd/x86_64/bits/sigcontext.h: add xstate to the
  sigcontext structure.
* sysdeps/mach/hurd/x86_64/sigreturn.c: restore xstate from the saved
  context

Signed-off-by: Luca Dariz <luca@orpolo.org>
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Message-ID: <20250319171118.142163-1-luca@orpolo.org>
hurd/Makefile
hurd/test-sig-rpc-interrupted.c [new file with mode: 0644]
hurd/test-sig-xstate.c [new file with mode: 0644]
hurd/test-xstate.h [new file with mode: 0644]
sysdeps/mach/hurd/i386/bits/sigcontext.h
sysdeps/mach/hurd/i386/sigreturn.c
sysdeps/mach/hurd/x86/trampoline.c
sysdeps/mach/hurd/x86_64/bits/sigcontext.h
sysdeps/mach/hurd/x86_64/sigreturn.c