On Wed, Aug 31, 2016 at 1:24 AM, Andreas Schwab <sch...@suse.de> 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;
 }
 

Reply via email to