Port alternate signal stack to upcoming glibc 2.34

* src/sysdep.c (sigsegv_stack): Increase size to 64 KiB and align
it to max_align_t.  This copies from Gnulib’s c-stack.c, and works
around a portability bug in draft glibc 2.34, which no longer
defines SIGSTKSZ when _GNU_SOURCE is defined.
This commit is contained in:
Paul Eggert 2021-03-09 11:22:59 -08:00
parent c6ed17cc70
commit f97e07ea80

View file

@ -1785,7 +1785,15 @@ handle_arith_signal (int sig)
/* Alternate stack used by SIGSEGV handler below. */
static unsigned char sigsegv_stack[SIGSTKSZ];
/* Storage for the alternate signal stack.
64 KiB is not too large for Emacs, and is large enough
for all known platforms. Smaller sizes may run into trouble.
For example, libsigsegv 2.6 through 2.8 have a bug where some
architectures use more than the Linux default of an 8 KiB alternate
stack when deciding if a fault was caused by stack overflow. */
static max_align_t sigsegv_stack[(64 * 1024
+ sizeof (max_align_t) - 1)
/ sizeof (max_align_t)];
/* Return true if SIGINFO indicates a stack overflow. */