aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2012-02-10 15:55:37 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2012-02-10 15:55:37 +0000
commitd3229873aea34e4768d45cfa6a5ef50323fdf3fe (patch)
tree8770c0f5bccaee68a3f7834aba680b2fb2102b06
parentc91e24907b9b9689c0af5d46b73e712d70f6994c (diff)
downloadgcc-d3229873aea34e4768d45cfa6a5ef50323fdf3fe.zip
gcc-d3229873aea34e4768d45cfa6a5ef50323fdf3fe.tar.gz
gcc-d3229873aea34e4768d45cfa6a5ef50323fdf3fe.tar.bz2
runtime: For g0 set stack_size to 0 when not -fsplit-stack.
From-SVN: r184099
-rw-r--r--libgo/runtime/proc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c
index 42a5779..94c2a51 100644
--- a/libgo/runtime/proc.c
+++ b/libgo/runtime/proc.c
@@ -909,7 +909,9 @@ runtime_mstart(void* mp)
__splitstack_getcontext(&g->stack_context[0]);
#else
g->gcinitial_sp = &mp;
- g->gcstack_size = StackMin;
+ // Setting gcstack_size to 0 is a marker meaning that gcinitial_sp
+ // is the top of the stack, not the bottom.
+ g->gcstack_size = 0;
g->gcnext_sp = &mp;
#endif
getcontext(&g->context);
@@ -1267,6 +1269,8 @@ __go_go(void (*fn)(void*), void* arg)
#else
sp = newg->gcinitial_sp;
spsize = newg->gcstack_size;
+ if(spsize == 0)
+ runtime_throw("bad spsize in __go_go");
newg->gcnext_sp = sp;
#endif
} else {