aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/driver.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-03-27 15:04:10 +0200
committerClifford Wolf <clifford@clifford.at>2018-03-27 15:04:10 +0200
commit0acea3548b54a2acf6f3b554e6878f884a4414fe (patch)
tree91cb9d352bccaf8996a28b5dbdf5f2d583bb7ed3 /kernel/driver.cc
parent5e49ee5c2d52d504334a6cbbf7d9e0250e00a515 (diff)
downloadyosys-0acea3548b54a2acf6f3b554e6878f884a4414fe.tar.gz
yosys-0acea3548b54a2acf6f3b554e6878f884a4414fe.tar.bz2
yosys-0acea3548b54a2acf6f3b554e6878f884a4414fe.zip
Set stack size to at least 128 MB (large stack needed for parsing huge expressions)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'kernel/driver.cc')
-rw-r--r--kernel/driver.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/kernel/driver.cc b/kernel/driver.cc
index 97a78cd16..3c16e5fd4 100644
--- a/kernel/driver.cc
+++ b/kernel/driver.cc
@@ -35,6 +35,7 @@
#include <errno.h>
#ifdef __linux__
+# include <sys/resource.h>
# include <sys/types.h>
# include <unistd.h>
#endif
@@ -416,6 +417,18 @@ int main(int argc, char **argv)
if (print_stats)
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();
log_error_atexit = yosys_atexit;