diff --git a/firmware/asm/thread.h b/firmware/asm/thread.h index 82edc81deb..5372be73ab 100644 --- a/firmware/asm/thread.h +++ b/firmware/asm/thread.h @@ -38,6 +38,16 @@ struct regs #include #ifdef HAVE_SIGALTSTACK_THREADS #include + #ifdef _DYNAMIC_STACK_SIZE_SOURCE + /* glibc 2.34 made MINSIGSTKSZ non-constant. This is a problem for sim + * builds. Hosted targets are using ancient glibc where MINSIGSTKSZ is + * still a compile time constant. On platforms where this is a problem + * (mainly x86-64 and ARM64) the signal stack size can be big, so let's + * give a decent amount of space and hope for the best... + * FIXME: this isn't a great solution. */ + #undef MINSIGSTKSZ + #define MINSIGSTKSZ 16384 + #endif /* MINSIGSTKSZ for the OS to deliver the signal + 0x3000 for us */ #define DEFAULT_STACK_SIZE (MINSIGSTKSZ+0x3000) /* Bytes */ #elif defined(HAVE_WIN32_FIBER_THREADS)