https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68562
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|config/i386/morestack.S |morestack misaligns stack
|misaligns stack on x86_64 |on x86_64
--- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Actually I think the misalignment starts here:
libgcc/generic-morestack.c:
495 void
496 __generic_morestack_set_initial_sp (void *sp, size_t len)
497 {
498 /* The stack pointer most likely starts on a page boundary. Adjust
499 to the nearest 512 byte boundary. It's not essential that we be
500 precise here; getting it wrong will just leave some stack space
501 unused. */
502 #ifdef __LIBGCC_STACK_GROWS_DOWNWARD__
503 sp = (void *) ((((__UINTPTR_TYPE__) sp + 511U) / 512U) * 512U);
504 #else
505 sp = (void *) ((((__UINTPTR_TYPE__) sp - 511U) / 512U) * 512U);
506 #endif