Patchwork libgo patch committed: Copy runtime_printf from other library

login
register
mail settings
Submitter Ian Taylor
Date May 24, 2012, 8:45 p.m.
Message ID <mcr396ppato.fsf@dhcp-172-18-216-180.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/161202/
State New
Headers show

Comments

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.

Ian

Patch

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 @@ 
 int
 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);
 }