libgo patch committed: Copy runtime_printf from other library

Message ID
State New
Headers show

Commit Message

Ian Taylor May 24, 2012, 8:45 p.m.
This patch to libgo copies the implementation of runtime_printf from the
other Go library, and use that instead of calling the C library printf
function.  This removes some unnecessary differences in shared files,
and removes some unnecessary stack splits.  However, the main reason I'm
doing it is to pick up the support for sending the printf output into a
goroutine-specific buffer, used to implement runtime.Stack, coming up
next.  Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu.
Committed to mainline and 4.7 branch.



diff -r d99f020243e7 libgo/runtime/go-callers.c
--- a/libgo/runtime/go-callers.c	Tue May 22 09:54:14 2012 -0700
+++ b/libgo/runtime/go-callers.c	Tue May 22 14:50:06 2012 -0700
@@ -72,5 +72,8 @@ 
 Callers (int skip, struct __go_open_array pc)
-  return runtime_callers (skip, (uintptr *) pc.__values, pc.__count);
+  /* In the Go 1 release runtime.Callers has an off-by-one error,
+     which we can not correct because it would break backward
+     compatibility.  Adjust SKIP here to be compatible.  */
+  return runtime_callers (skip - 1, (uintptr *) pc.__values, pc.__count);