diff options
-rw-r--r-- | src/pkg/runtime/stack.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/pkg/runtime/stack.c b/src/pkg/runtime/stack.c index 1f7c2eaad..1680f004e 100644 --- a/src/pkg/runtime/stack.c +++ b/src/pkg/runtime/stack.c @@ -9,6 +9,7 @@ #include "funcdata.h" #include "typekind.h" #include "type.h" +#include "../../cmd/ld/textflag.h" enum { @@ -851,6 +852,13 @@ runtime·newstack(void) *(int32*)345 = 123; // never return } +#pragma textflag NOSPLIT +void +runtime·nilfunc(void) +{ + *(byte*)0 = 0; +} + // adjust Gobuf as if it executed a call to fn // and then did an immediate gosave. void @@ -858,9 +866,10 @@ runtime·gostartcallfn(Gobuf *gobuf, FuncVal *fv) { void *fn; - fn = nil; if(fv != nil) fn = fv->fn; + else + fn = runtime·nilfunc; runtime·gostartcall(gobuf, fn, fv); } |