--- handler-unix.c.orig 2011-02-18 12:03:32.000000000 -0500 +++ handler-unix.c 2012-11-24 15:43:31.000000000 -0500 @@ -496,7 +496,13 @@ ss.ss_sp = (char *) extra_stack + extra_stack_size - sizeof (void *); ss.ss_size = extra_stack_size - sizeof (void *); #else +#ifdef __hppa__ + /* HP-PA Linux fails to properly stack align when calling handler. + We also provide 64 bytes for frame marker. */ + ss.ss_sp = (void *)(((unsigned long)extra_stack + 0x7F) & ~0x3F); +#else ss.ss_sp = extra_stack; +#endif ss.ss_size = extra_stack_size; #endif ss.ss_flags = 0; /* no SS_DISABLE */