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




Reply via email to