aboutsummaryrefslogtreecommitdiff
path: root/libgo
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2017-05-12 12:49:34 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2017-05-12 12:49:34 +0000
commit06ace75d4bcebf8bcc021dfe918b9866fba3108c (patch)
tree08382cff0b3974233757b76703128dac8c0077ae /libgo
parent7af1c0ad98613e1a8684b075ac2a6e4739b07b07 (diff)
downloadgcc-06ace75d4bcebf8bcc021dfe918b9866fba3108c.zip
gcc-06ace75d4bcebf8bcc021dfe918b9866fba3108c.tar.gz
gcc-06ace75d4bcebf8bcc021dfe918b9866fba3108c.tar.bz2
runtime: fix build for non-split-stack systems
Change memory allocation accounting for stacks to use stacks_sys, since that seems to be what it is for. Reviewed-on: https://go-review.googlesource.com/43297 From-SVN: r247967
Diffstat (limited to 'libgo')
-rw-r--r--libgo/go/runtime/runtime2.go7
-rw-r--r--libgo/runtime/proc.c4
-rw-r--r--libgo/runtime/stack.c1
3 files changed, 10 insertions, 2 deletions
diff --git a/libgo/go/runtime/runtime2.go b/libgo/go/runtime/runtime2.go
index 8deb620..8bfdcbc 100644
--- a/libgo/go/runtime/runtime2.go
+++ b/libgo/go/runtime/runtime2.go
@@ -793,3 +793,10 @@ type g_ucontext_t [(_sizeof_ucontext_t + 15) / unsafe.Sizeof(uintptr(0))]uintptr
// sigset is the Go version of the C type sigset_t.
// _sigset_t is defined by the Makefile from <signal.h>.
type sigset _sigset_t
+
+// getMemstats returns a pointer to the internal memstats variable,
+// for C code.
+//go:linkname getMemstats runtime.getMemstats
+func getMemstats() *mstats {
+ return &memstats
+}
diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c
index cc56642..14ee673 100644
--- a/libgo/runtime/proc.c
+++ b/libgo/runtime/proc.c
@@ -406,6 +406,8 @@ extern void globrunqput(G*)
__asm__(GOSYM_PREFIX "runtime.globrunqput");
extern P* pidleget(void)
__asm__(GOSYM_PREFIX "runtime.pidleget");
+extern struct mstats* getMemstats(void)
+ __asm__(GOSYM_PREFIX "runtime.getMemstats");
bool runtime_isstarted;
@@ -726,7 +728,7 @@ runtime_malg(bool allocatestack, bool signalstack, byte** ret_stack, uintptr* re
// 32-bit mode, the Go allocation space is all of
// memory anyhow.
if(sizeof(void*) == 8) {
- void *p = runtime_sysAlloc(stacksize, &mstats()->other_sys);
+ void *p = runtime_sysAlloc(stacksize, &getMemstats()->stacks_sys);
if(p == nil)
runtime_throw("runtime: cannot allocate memory for goroutine stack");
*ret_stack = (byte*)p;
diff --git a/libgo/runtime/stack.c b/libgo/runtime/stack.c
index 98f98fe..1ce30db 100644
--- a/libgo/runtime/stack.c
+++ b/libgo/runtime/stack.c
@@ -80,7 +80,6 @@ static void doscanstack1(G *gp, void *gcw) {
scanstackblock(sp, (uintptr)(spsize), gcw);
}
#else
- M *mp;
byte* bottom;
byte* top;