This patch from Peter Collingbourne marks the varargs function runtime_sprintf as no_split_stack when using Clang. Apparently Clang does not support split-stack for varargs function. Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. Committed to mainline.
Ian
diff -r ca381cdd378c libgo/runtime/print.c --- a/libgo/runtime/print.c Sat Jul 19 14:35:30 2014 -0700 +++ b/libgo/runtime/print.c Sun Jul 20 02:13:45 2014 -0700 @@ -76,9 +76,15 @@ // x86-64. Note that signal handlers receive slightly less stack space than they // would normally do if they happen to be called while this function is being // run. If this turns out to be a problem we could consider increasing BACKOFF. + void runtime_printf(const char *s, ...) __attribute__((no_split_stack)); + +int32 +runtime_snprintf(byte *buf, int32 n, const char *s, ...) +__attribute__((no_split_stack)); + #endif void