1
0
mirror of https://github.com/golang/go synced 2024-11-22 07:34:40 -07:00

runtime: fix build for nacl

R=lvd
CC=golang-dev
https://golang.org/cl/3391044
This commit is contained in:
Andrew Gerrand 2010-12-07 15:24:46 +11:00
parent f503e26379
commit 79dcf180a2

View File

@ -38,7 +38,7 @@
#include "malloc.h" #include "malloc.h"
// NaCl system call to copy data into text segment. // NaCl system call to copy data into text segment.
extern int32 dyncode_copy(void*, void*, int32); extern int32 runtime·dyncode_copy(void*, void*, int32);
enum{ enum{
// Allocate chunks of 4096 bytes worth of closures: // Allocate chunks of 4096 bytes worth of closures:
@ -168,8 +168,8 @@ runtime·closure(int32 siz, byte *fn, byte *arg0)
// segment and beginning of data. // segment and beginning of data.
clos.code = (byte*)(((uintptr)etext + 65535) & ~65535); clos.code = (byte*)(((uintptr)etext + 65535) & ~65535);
clos.ecode = clos.code; clos.ecode = clos.code;
mheap.closure_min = clos.code; runtime·mheap.closure_min = clos.code;
mheap.closure_max = rodata; runtime·mheap.closure_max = rodata;
} }
if(clos.ecode+ClosureChunk > rodata) { if(clos.ecode+ClosureChunk > rodata) {
// Last ditch effort: garbage collect and hope. // Last ditch effort: garbage collect and hope.
@ -218,7 +218,7 @@ runtime·closure(int32 siz, byte *fn, byte *arg0)
e = runtime·dyncode_copy(clos.ecode, clos.buf, ClosureChunk); e = runtime·dyncode_copy(clos.ecode, clos.buf, ClosureChunk);
if(e != 0) { if(e != 0) {
fd = 2; runtime·fd = 2;
if(e == -22) if(e == -22)
runtime·throw("NaCl running with dyncode_copy disabled; export NACLDYNCODE=1 in your environment"); runtime·throw("NaCl running with dyncode_copy disabled; export NACLDYNCODE=1 in your environment");
runtime·printf("dyncode_copy: error %d\n", e); runtime·printf("dyncode_copy: error %d\n", e);
@ -240,7 +240,7 @@ alloc:
d->siz = siz; d->siz = siz;
runtime·mcpy((byte*)(d+1), (byte*)&arg0, siz); runtime·mcpy((byte*)(d+1), (byte*)&arg0, siz);
*codeptr(p) = d; *codeptr(p) = d;
runtime·addfinalizer(f, finclosure, 0); runtime·addfinalizer(f, runtime·finclosure, 0);
runtime·unlock(&clos); runtime·unlock(&clos);
*ret = p; *ret = p;