diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-07-22 21:26:21 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-07-22 21:28:23 +0900 |
commit | 50aac2ffd59c7b0d871a82c23048846ad2f3f38b (patch) | |
tree | 08a2cb06e1ec37c4aef8bf5fe8088e0af64f88e9 | |
parent | 8b0dc77a621ded75f72486c33f55404ce73f00d7 (diff) |
Share the size for sigaltstack between configure.ac and signal.c
-rw-r--r-- | configure.ac | 5 | ||||
-rw-r--r-- | 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 <signal.h> #include <execinfo.h> +]`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"); @@ -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 { |