From 39d4cdcd6bf1966b21c0d598e529c011f551b6bb Mon Sep 17 00:00:00 2001 From: Luming Wang Date: Wed, 24 Nov 2021 15:38:50 +0800 Subject: [PATCH] sim: fix build error when glibc >= 2.34 Since glibc >= 2.34, MINSIGSTKSZ and SIGSTKSZ are no longer constant on Linux. As a result, the definition "fatalSigStack[2*SIGSTKSZ]" fails to be compiled. Thus, we need to dynamically allocate it. Change-Id: Ibccc367818483b9c94beda871d1d95367d1e8b04 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/53183 Reviewed-by: Gabe Black Maintainer: Gabe Black Tested-by: kokoro --- src/sim/init_signals.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/sim/init_signals.cc b/src/sim/init_signals.cc index cac0190e95..b6db6214aa 100644 --- a/src/sim/init_signals.cc +++ b/src/sim/init_signals.cc @@ -64,18 +64,19 @@ namespace gem5 { // Use an separate stack for fatal signal handlers -static uint8_t fatalSigStack[2 * SIGSTKSZ]; static bool setupAltStack() { + const auto stack_size = 2 * SIGSTKSZ; + static uint8_t *fatal_sig_stack = new uint8_t[stack_size]; stack_t stack; #if defined(__FreeBSD__) && (__FreeBSD_version < 1100097) - stack.ss_sp = (char *)fatalSigStack; + stack.ss_sp = (char *)fatal_sig_stack; #else - stack.ss_sp = fatalSigStack; + stack.ss_sp = fatal_sig_stack; #endif - stack.ss_size = sizeof(fatalSigStack); + stack.ss_size = stack_size; stack.ss_flags = 0; return sigaltstack(&stack, NULL) == 0;