Set stack size to at least 128 MB (large stack needed for parsing huge expressions)

Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
Clifford Wolf 2018-03-27 15:04:10 +02:00
parent 5e49ee5c2d
commit 0acea3548b
1 changed files with 13 additions and 0 deletions

View File

@ -35,6 +35,7 @@
#include <errno.h> #include <errno.h>
#ifdef __linux__ #ifdef __linux__
# include <sys/resource.h>
# include <sys/types.h> # include <sys/types.h>
# include <unistd.h> # include <unistd.h>
#endif #endif
@ -416,6 +417,18 @@ int main(int argc, char **argv)
if (print_stats) if (print_stats)
log_hasher = new SHA1; log_hasher = new SHA1;
#if defined(__linux__)
// set stack size to >= 128 MB
{
struct rlimit rl;
const rlim_t stack_size = 128L * 1024L * 1024L;
if (getrlimit(RLIMIT_STACK, &rl) == 0 && rl.rlim_cur < stack_size) {
rl.rlim_cur = stack_size;
setrlimit(RLIMIT_STACK, &rl);
}
}
#endif
yosys_setup(); yosys_setup();
log_error_atexit = yosys_atexit; log_error_atexit = yosys_atexit;