From 50aac2ffd59c7b0d871a82c23048846ad2f3f38b Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 22 Jul 2020 21:26:21 +0900 Subject: [PATCH] Share the size for sigaltstack between configure.ac and signal.c --- configure.ac | 5 +++-- signal.c | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index ae908f7516..2fd4c7c7c6 100644 --- a/configure.ac +++ b/configure.ac @@ -2929,6 +2929,7 @@ AS_IF([test "x$ac_cv_func_backtrace" = xyes], [ #include #include +]`grep '^@%:@ *define *RUBY_SIGALTSTACK_SIZE' ${srcdir}/signal.c`[ #define TRACE_SIZE 256 void sigsegv(int signum, siginfo_t *info, void *ctx){ @@ -2948,12 +2949,12 @@ main(void) stack_t ss; struct sigaction sa; - ss.ss_sp = malloc(16*1024); + ss.ss_sp = malloc(RUBY_SIGALTSTACK_SIZE); if (ss.ss_sp == NULL) { fprintf(stderr, "cannot allocate memory for sigaltstack\n"); return EXIT_FAILURE; } - ss.ss_size = 16*1024; + ss.ss_size = RUBY_SIGALTSTACK_SIZE; ss.ss_flags = 0; if (sigaltstack(&ss, NULL) == -1) { fprintf(stderr, "sigaltstack failed\n"); diff --git a/signal.c b/signal.c index 7f8687e436..615ceb7c6e 100644 --- a/signal.c +++ b/signal.c @@ -524,11 +524,13 @@ typedef RETSIGTYPE ruby_sigaction_t(int); #endif #ifdef USE_SIGALTSTACK +/* XXX: BSD_vfprintf() uses >1500B stack and x86-64 need >5KiB stack. */ +#define RUBY_SIGALTSTACK_SIZE (16*1024) + static int rb_sigaltstack_size(void) { - /* XXX: BSD_vfprintf() uses >1500B stack and x86-64 need >5KiB stack. */ - int size = 16*1024; + int size = RUBY_SIGALTSTACK_SIZE; #ifdef MINSIGSTKSZ {