Hi,
In the file glibc/sysdeps/mach/hurd/x86/trampoline.c lines 199..204
#ifdef __x86_64__
/* 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);
#endif
make no sense to me. After this statement, sigsp is
either 0x0000000000000000
or 0x0000000000000010.
If aligning SP is intended, the line should read
sigsp = (void *) ((uintptr_t) sigsp & -16UL);
Bruno