On Wed, Aug 31, 2016 at 1:24 AM, Andreas Schwab <[email protected]> wrote:
> On ia64, MINSIGSTKSZ is 128K.
>
> Andreas.
>
> * libgo/runtime/runtime.c (runtime_mpreinit): Increase stack size to
> 128K.
> ---
> libgo/runtime/runtime.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libgo/runtime/runtime.c b/libgo/runtime/runtime.c
> index c7d33bc..e8eb957 100644
> --- a/libgo/runtime/runtime.c
> +++ b/libgo/runtime/runtime.c
> @@ -272,7 +272,7 @@ runtime_tickspersecond(void)
> void
> runtime_mpreinit(M *mp)
> {
> - mp->gsignal = runtime_malg(32*1024, (byte**)&mp->gsignalstack,
> &mp->gsignalstacksize); // OS X wants >=8K, Linux >=2K
> + mp->gsignal = runtime_malg(128*1024, (byte**)&mp->gsignalstack,
> &mp->gsignalstacksize); // OS X wants >=8K, Linux >=2K, ia64 >=128K
> mp->gsignal->m = mp;
> }
Thanks. There doesn't seem to be a need to increase the stack size on
all architectures, so I applied this patch. Bootstrapped and ran Go
tests on x86_64-pc-linux-gnu, which I admit means little. Committed
to mainline. Let me know if it doesn't fix the problem on ia64 (does
Go really work on ia64?).
Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE (revision 239872)
+++ gcc/go/gofrontend/MERGE (working copy)
@@ -1,4 +1,4 @@
-394486a1cec9bbb81216311ed153179d9fe1c2c5
+c8cf90f2daf62428ca6aa0b5674572cd99f25fe3
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
Index: libgo/runtime/runtime.c
===================================================================
--- libgo/runtime/runtime.c (revision 239872)
+++ libgo/runtime/runtime.c (working copy)
@@ -272,7 +272,14 @@ runtime_tickspersecond(void)
void
runtime_mpreinit(M *mp)
{
- mp->gsignal = runtime_malg(32*1024, (byte**)&mp->gsignalstack,
&mp->gsignalstacksize); // OS X wants >=8K, Linux >=2K
+ int32 stacksize = 32 * 1024; // OS X wants >=8K, Linux >=2K
+
+#ifdef SIGSTKSZ
+ if(stacksize < SIGSTKSZ)
+ stacksize = SIGSTKSZ;
+#endif
+
+ mp->gsignal = runtime_malg(stacksize, (byte**)&mp->gsignalstack,
&mp->gsignalstacksize);
mp->gsignal->m = mp;
}