hurd: Fix aligning signal stack pointer
authorSergey Bugaev <bugaevc@gmail.com>
Mon, 15 May 2023 08:33:20 +0000 (11:33 +0300)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Tue, 16 May 2023 14:08:45 +0000 (16:08 +0200)
Fixes 60f9bf974694d50daf58d46347b06a5975ac5ddd
"hurd: Port trampoline.c to x86_64"

Checked on x86_64-gnu.

Reported-by: Bruno Haible <bruno@clisp.org>
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230515083323.1358039-2-bugaevc@gmail.com>

sysdeps/mach/hurd/x86/trampoline.c

index e13c5d8..19bddad 100644 (file)
@@ -200,7 +200,7 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, const struct sigaction *action
   /* Align SP at 16 bytes.  Coupled with the fact that sigreturn_addr is
      16-byte aligned within the stackframe struct, this ensures that it ends
      up on a 16-byte aligned address, as required by the ABI.  */
-  sigsp = (void *) ((uintptr_t) sigsp & 16UL);
+  sigsp = (void *) ((uintptr_t) sigsp & ~15UL);
 #endif
 
   /* Push the arguments to call `trampoline' on the stack.  */