Last active
February 7, 2016 00:18
-
-
Save oshimaya/03091bf6d6bfdc57b9f2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/cmd/5l/obj.c b/src/cmd/5l/obj.c | |
index c6f60ee..3ad636c 100644 | |
--- a/src/cmd/5l/obj.c | |
+++ b/src/cmd/5l/obj.c | |
@@ -82,7 +82,6 @@ archinit(void) | |
break; | |
case Hlinux: /* arm elf */ | |
case Hfreebsd: | |
- case Hnetbsd: | |
debug['d'] = 0; // with dynamic linking | |
elfinit(); | |
HEADR = ELFRESERVE; | |
@@ -93,6 +92,17 @@ archinit(void) | |
if(INITRND == -1) | |
INITRND = 4096; | |
break; | |
+ case Hnetbsd: | |
+ debug['d'] = 0; // with dynamic linking | |
+ elfinit(); | |
+ HEADR = ELFRESERVE; | |
+ if(INITTEXT == -1) | |
+ INITTEXT = 0x10000 + HEADR; | |
+ if(INITDAT == -1) | |
+ INITDAT = 0; | |
+ if(INITRND == -1) | |
+ INITRND = 0x10000; | |
+ break; | |
case Hnacl: | |
elfinit(); | |
HEADR = 0x10000; | |
diff --git a/src/cmd/6l/obj.c b/src/cmd/6l/obj.c | |
index 3b8e8f4..959d6a2 100644 | |
--- a/src/cmd/6l/obj.c | |
+++ b/src/cmd/6l/obj.c | |
@@ -114,7 +114,6 @@ archinit(void) | |
break; | |
case Hlinux: /* elf64 executable */ | |
case Hfreebsd: /* freebsd */ | |
- case Hnetbsd: /* netbsd */ | |
case Hopenbsd: /* openbsd */ | |
case Hdragonfly: /* dragonfly */ | |
case Hsolaris: /* solaris */ | |
@@ -127,6 +126,16 @@ archinit(void) | |
if(INITRND == -1) | |
INITRND = 4096; | |
break; | |
+ case Hnetbsd: /* netbsd */ | |
+ elfinit(); | |
+ HEADR = ELFRESERVE; | |
+ if(INITTEXT == -1) | |
+ INITTEXT = (1<<22)+HEADR; | |
+ if(INITDAT == -1) | |
+ INITDAT = 0; | |
+ if(INITRND == -1) | |
+ INITRND = 0x200000; | |
+ break; | |
case Hnacl: | |
elfinit(); | |
debug['w']++; // disable dwarf, which gets confused and is useless anyway | |
diff --git a/src/cmd/ld/elf.c b/src/cmd/ld/elf.c | |
index 3196961..501d3ef 100644 | |
--- a/src/cmd/ld/elf.c | |
+++ b/src/cmd/ld/elf.c | |
@@ -56,7 +56,8 @@ elfinit(void) | |
// 32-bit architectures | |
case '5': | |
// we use EABI on both linux/arm and freebsd/arm. | |
- if(HEADTYPE == Hlinux || HEADTYPE == Hfreebsd) | |
+ // and change to EABI netbsd/arm | |
+ if(HEADTYPE == Hlinux || HEADTYPE == Hfreebsd || HEADTYPE == Hnetbsd) | |
hdr.flags = 0x5000002; // has entry point, Version5 EABI | |
// fallthrough | |
default: | |
diff --git a/src/make.bash b/src/make.bash | |
index fbc6f5d..4859ac3 100755 | |
--- a/src/make.bash | |
+++ b/src/make.bash | |
@@ -121,6 +121,15 @@ case "$GOHOSTARCH" in | |
386) mflag=-m32;; | |
amd64) mflag=-m64;; | |
esac | |
+ | |
+# In gcc 4.8 on NetBSD 7.0, need -march=armv5 flag for arm target. | |
+# Default target of gcc is generic-arm. however some assemble-sources | |
+# in golang use operator for armv5 or lator. | |
+ | |
+if [ "$GOARCH" == "arm" -o -z '$GOARCH' -a "$(uname -sp)" == "NetBSD earm" ]; then | |
+ mflag="-march=armv5" | |
+fi | |
+ | |
if [ "$(uname)" == "Darwin" ]; then | |
# golang.org/issue/5261 | |
mflag="$mflag -mmacosx-version-min=10.6" | |
diff --git a/src/runtime/debug.go b/src/runtime/debug.go | |
index 4414dd5..7559939 100644 | |
--- a/src/runtime/debug.go | |
+++ b/src/runtime/debug.go | |
@@ -53,6 +53,10 @@ func NumCPU() int { | |
return int(ncpu) | |
} | |
+func Physpagesize() int { | |
+ return int(physpagesz) | |
+} | |
+ | |
// NumCgoCall returns the number of cgo calls made by the current process. | |
func NumCgoCall() int64 { | |
var n int64 | |
diff --git a/src/runtime/defs_netbsd.go b/src/runtime/defs_netbsd.go | |
index b27949e..55f9b14 100644 | |
--- a/src/runtime/defs_netbsd.go | |
+++ b/src/runtime/defs_netbsd.go | |
@@ -122,4 +122,4 @@ type Itimerval C.struct_itimerval | |
type McontextT C.mcontext_t | |
type UcontextT C.ucontext_t | |
-type Kevent C.struct_kevent | |
+type KeventT C.struct_kevent | |
diff --git a/src/runtime/defs_netbsd_arm.h b/src/runtime/defs_netbsd_arm.h | |
index 70f34af..8190f38 100644 | |
--- a/src/runtime/defs_netbsd_arm.h | |
+++ b/src/runtime/defs_netbsd_arm.h | |
@@ -119,10 +119,12 @@ struct StackT { | |
struct Timespec { | |
int64 tv_sec; | |
int32 tv_nsec; | |
+ byte Pad_cgo_0[4]; | |
}; | |
struct Timeval { | |
int64 tv_sec; | |
int32 tv_usec; | |
+ byte Pad_cgo_0[4]; | |
}; | |
struct Itimerval { | |
Timeval it_interval; | |
@@ -131,18 +133,18 @@ struct Itimerval { | |
struct McontextT { | |
uint32 __gregs[17]; | |
-#ifdef __ARM_EABI__ | |
- byte __fpu[4+8*32+4]; | |
-#else | |
- byte __fpu[4+4*33+4]; | |
-#endif | |
+ byte Pad_cgo_0[4]; | |
+ // For EABI, fpscr[4]+pad[4]+fstmx[8*32]+fpsid[4]+pad[4] | |
+ byte __fpu[272]; | |
uint32 _mc_tlsbase; | |
+ byte Pad_cgo_1[4]; | |
}; | |
struct UcontextT { | |
uint32 uc_flags; | |
UcontextT *uc_link; | |
Sigset uc_sigmask; | |
StackT uc_stack; | |
+ byte Pad_cgo_0[4]; | |
McontextT uc_mcontext; | |
int32 __uc_pad[2]; | |
}; | |
@@ -154,6 +156,7 @@ struct KeventT { | |
uint32 fflags; | |
int64 data; | |
byte *udata; | |
+ byte Pad_cgo_0[4]; | |
}; | |
diff --git a/src/runtime/mgc0.c b/src/runtime/mgc0.c | |
index 083beec..cee1f5c 100644 | |
--- a/src/runtime/mgc0.c | |
+++ b/src/runtime/mgc0.c | |
@@ -330,7 +330,8 @@ scanblock(byte *b, uintptr n, byte *ptrmask) | |
if(obj == nil) | |
continue; | |
if(obj < arena_start || obj >= arena_used) { | |
- if((uintptr)obj < PhysPageSize && runtime·invalidptr) { | |
+ if((uintptr)obj < runtime·physpagesz && | |
+ runtime·invalidptr) { | |
s = nil; | |
goto badobj; | |
} | |
@@ -1893,7 +1894,7 @@ runtime·MHeap_MapBits(MHeap *h) | |
n = (h->arena_used - h->arena_start) / (PtrSize*wordsPerBitmapByte); | |
n = ROUND(n, bitmapChunk); | |
- n = ROUND(n, PhysPageSize); | |
+ n = ROUND(n, runtime·physpagesz); | |
if(h->bitmap_mapped >= n) | |
return; | |
diff --git a/src/runtime/mheap.c b/src/runtime/mheap.c | |
index bb203d5..1ec0dfb 100644 | |
--- a/src/runtime/mheap.c | |
+++ b/src/runtime/mheap.c | |
@@ -82,7 +82,7 @@ runtime·MHeap_MapSpans(MHeap *h) | |
n = (uintptr)h->arena_used; | |
n -= (uintptr)h->arena_start; | |
n = n / PageSize * sizeof(h->spans[0]); | |
- n = ROUND(n, PhysPageSize); | |
+ n = ROUND(n, runtime·physpagesz); | |
if(h->spans_mapped >= n) | |
return; | |
runtime·SysMap((byte*)h->spans + h->spans_mapped, n - h->spans_mapped, h->arena_reserved, &mstats.other_sys); | |
diff --git a/src/runtime/os_darwin.c b/src/runtime/os_darwin.c | |
index bbd2928..caf351f 100644 | |
--- a/src/runtime/os_darwin.c | |
+++ b/src/runtime/os_darwin.c | |
@@ -5,6 +5,7 @@ | |
#include "runtime.h" | |
#include "defs_GOOS_GOARCH.h" | |
#include "os_GOOS.h" | |
+#include "arch_GOARCH.h" | |
#include "signal_unix.h" | |
#include "stack.h" | |
#include "textflag.h" | |
@@ -69,6 +70,17 @@ runtime·osinit(void) | |
ret = runtime·sysctl(mib, 2, (byte*)&out, &nout, nil, 0); | |
if(ret >= 0) | |
runtime·ncpu = out; | |
+ | |
+ // Maybe able to get PageSize by sysctl | |
+ mib[0] = 6; | |
+ mib[1] = 7; //HW_PAGESIZE | |
+ nout = sizeof out; | |
+ out = 0; | |
+ ret = runtime·sysctl(mib, 2, (byte*)&out, &nout, nil, 0); | |
+ if(ret >= 0) | |
+ runtime·physpagesz = (uintptr)out; | |
+ else | |
+ runtime·physpagesz = PhysPageSize; | |
} | |
#pragma textflag NOSPLIT | |
diff --git a/src/runtime/os_dragonfly.c b/src/runtime/os_dragonfly.c | |
index e372205..5becf48 100644 | |
--- a/src/runtime/os_dragonfly.c | |
+++ b/src/runtime/os_dragonfly.c | |
@@ -5,6 +5,7 @@ | |
#include "runtime.h" | |
#include "defs_GOOS_GOARCH.h" | |
#include "os_GOOS.h" | |
+#include "arch_GOARCH.h" | |
#include "signal_unix.h" | |
#include "stack.h" | |
#include "textflag.h" | |
@@ -16,6 +17,7 @@ extern int32 runtime·sys_umtx_wakeup(uint32*, int32); | |
// From DragonFly's <sys/sysctl.h> | |
#define CTL_HW 6 | |
#define HW_NCPU 3 | |
+#define HW_PAGESIZE 7 | |
static Sigset sigset_none; | |
static Sigset sigset_all = { ~(uint32)0, ~(uint32)0, ~(uint32)0, ~(uint32)0, }; | |
@@ -40,6 +42,23 @@ getncpu(void) | |
return 1; | |
} | |
+static uintptr | |
+getphyspagesize(void) | |
+{ | |
+ uint32 mib[2]; | |
+ uintptr out, nout; | |
+ int32 ret; | |
+ mib[0] = CTL_HW; | |
+ mib[1] = HW_PAGESIZE; | |
+ nout = sizeof out; | |
+ out = 0; | |
+ ret = runtime·sysctl(mib, 2, (byte*)&out, &nout, nil, 0); | |
+ if(ret >= 0) | |
+ return out; | |
+ else | |
+ return PhysPageSize; | |
+} | |
+ | |
static void futexsleep(void); | |
#pragma textflag NOSPLIT | |
@@ -163,6 +182,7 @@ void | |
runtime·osinit(void) | |
{ | |
runtime·ncpu = getncpu(); | |
+ runtime·physpagesz = getphyspagesize(); | |
} | |
#pragma textflag NOSPLIT | |
diff --git a/src/runtime/os_freebsd.c b/src/runtime/os_freebsd.c | |
index a513cb6..0220097 100644 | |
--- a/src/runtime/os_freebsd.c | |
+++ b/src/runtime/os_freebsd.c | |
@@ -5,6 +5,7 @@ | |
#include "runtime.h" | |
#include "defs_GOOS_GOARCH.h" | |
#include "os_GOOS.h" | |
+#include "arch_GOARCH.h" | |
#include "signal_unix.h" | |
#include "stack.h" | |
#include "textflag.h" | |
@@ -15,6 +16,7 @@ extern int32 runtime·sys_umtx_op(uint32*, int32, uint32, void*, void*); | |
// From FreeBSD's <sys/sysctl.h> | |
#define CTL_HW 6 | |
#define HW_NCPU 3 | |
+#define HW_PAGESIZE 7 | |
static Sigset sigset_none; | |
static Sigset sigset_all = { ~(uint32)0, ~(uint32)0, ~(uint32)0, ~(uint32)0, }; | |
@@ -39,6 +41,24 @@ getncpu(void) | |
return 1; | |
} | |
+static uintptr | |
+getphyspagesize(void) | |
+{ | |
+ uint32 mib[2]; | |
+ uintptr out, nout; | |
+ int32 ret; | |
+ mib[0] = CTL_HW; | |
+ mib[1] = HW_PAGESIZE; | |
+ nout = sizeof out; | |
+ out = 0; | |
+ ret = runtime·sysctl(mib, 2, (byte*)&out, &nout, nil, 0); | |
+ if(ret >= 0) | |
+ return out; | |
+ else | |
+ return PhysPageSize; | |
+} | |
+ | |
+ | |
// FreeBSD's umtx_op syscall is effectively the same as Linux's futex, and | |
// thus the code is largely similar. See linux/thread.c and lock_futex.c for comments. | |
@@ -171,6 +191,7 @@ void | |
runtime·osinit(void) | |
{ | |
runtime·ncpu = getncpu(); | |
+ runtime·physpagesz = getphyspagesize(); | |
} | |
#pragma textflag NOSPLIT | |
diff --git a/src/runtime/os_linux.c b/src/runtime/os_linux.c | |
index 0d8ffc9..ef89a50 100644 | |
--- a/src/runtime/os_linux.c | |
+++ b/src/runtime/os_linux.c | |
@@ -5,6 +5,7 @@ | |
#include "runtime.h" | |
#include "defs_GOOS_GOARCH.h" | |
#include "os_GOOS.h" | |
+#include "arch_GOARCH.h" | |
#include "signal_unix.h" | |
#include "stack.h" | |
#include "textflag.h" | |
@@ -113,6 +114,12 @@ getproccount(void) | |
return cnt ? cnt : 1; | |
} | |
+static uintptr | |
+getphyspagesize(void) | |
+{ | |
+ return PhysPageSize; | |
+} | |
+ | |
// Clone, the Linux rfork. | |
enum | |
{ | |
@@ -175,6 +182,7 @@ void | |
runtime·osinit(void) | |
{ | |
runtime·ncpu = getproccount(); | |
+ runtime·physpagesz = getphyspagesize(); | |
} | |
// Random bytes initialized at startup. These come | |
diff --git a/src/runtime/os_nacl.c b/src/runtime/os_nacl.c | |
index 14b5583..aba1aa7 100644 | |
--- a/src/runtime/os_nacl.c | |
+++ b/src/runtime/os_nacl.c | |
@@ -56,6 +56,7 @@ runtime·osinit(void) | |
{ | |
runtime·ncpu = 1; | |
g->m->procid = 2; | |
+ runtime·physpagesz = PhysPageSize; | |
//runtime·nacl_exception_handler(runtime·sigtramp, nil); | |
} | |
diff --git a/src/runtime/os_netbsd.c b/src/runtime/os_netbsd.c | |
index 58e5bed..ec48296 100644 | |
--- a/src/runtime/os_netbsd.c | |
+++ b/src/runtime/os_netbsd.c | |
@@ -5,6 +5,7 @@ | |
#include "runtime.h" | |
#include "defs_GOOS_GOARCH.h" | |
#include "os_GOOS.h" | |
+#include "arch_GOARCH.h" | |
#include "signal_unix.h" | |
#include "stack.h" | |
#include "textflag.h" | |
@@ -36,6 +37,7 @@ extern int32 runtime·lwp_self(void); | |
// From NetBSD's <sys/sysctl.h> | |
#define CTL_HW 6 | |
#define HW_NCPU 3 | |
+#define HW_PAGESIZE 7 | |
static int32 | |
getncpu(void) | |
@@ -57,6 +59,23 @@ getncpu(void) | |
return 1; | |
} | |
+static uintptr | |
+getphyspagesize(void) | |
+{ | |
+ uint32 mib[2]; | |
+ uintptr out, nout; | |
+ int32 ret; | |
+ mib[0] = CTL_HW; | |
+ mib[1] = HW_PAGESIZE; | |
+ nout = sizeof out; | |
+ out = 0; | |
+ ret = runtime·sysctl(mib, 2, (byte*)&out, &nout, nil, 0); | |
+ if(ret >= 0) | |
+ return out; | |
+ else | |
+ return PhysPageSize; | |
+} | |
+ | |
#pragma textflag NOSPLIT | |
uintptr | |
runtime·semacreate(void) | |
@@ -239,6 +258,7 @@ void | |
runtime·osinit(void) | |
{ | |
runtime·ncpu = getncpu(); | |
+ runtime·physpagesz = getphyspagesize(); | |
} | |
#pragma textflag NOSPLIT | |
diff --git a/src/runtime/os_openbsd.c b/src/runtime/os_openbsd.c | |
index eebaa13..2e71c72 100644 | |
--- a/src/runtime/os_openbsd.c | |
+++ b/src/runtime/os_openbsd.c | |
@@ -5,6 +5,7 @@ | |
#include "runtime.h" | |
#include "defs_GOOS_GOARCH.h" | |
#include "os_GOOS.h" | |
+#include "arch_GOARCH.h" | |
#include "signal_unix.h" | |
#include "stack.h" | |
#include "textflag.h" | |
@@ -35,6 +36,7 @@ extern int32 runtime·thrwakeup(void *ident, int32 n); | |
// From OpenBSD's <sys/sysctl.h> | |
#define CTL_HW 6 | |
#define HW_NCPU 3 | |
+#define HW_PAGESIZE 7 | |
static int32 | |
getncpu(void) | |
@@ -55,6 +57,22 @@ getncpu(void) | |
else | |
return 1; | |
} | |
+static uintptr | |
+getphyspagesize(void) | |
+{ | |
+ uint32 mib[2]; | |
+ uintptr out, nout; | |
+ int32 ret; | |
+ mib[0] = CTL_HW; | |
+ mib[1] = HW_PAGESIZE; | |
+ nout = sizeof out; | |
+ out = 0; | |
+ ret = runtime·sysctl(mib, 2, (byte*)&out, &nout, nil, 0); | |
+ if(ret >= 0) | |
+ return out; | |
+ else | |
+ return PhysPageSize; | |
+} | |
#pragma textflag NOSPLIT | |
uintptr | |
@@ -185,6 +203,7 @@ void | |
runtime·osinit(void) | |
{ | |
runtime·ncpu = getncpu(); | |
+ runtime·physpagesz = getphyspagesize(); | |
} | |
#pragma textflag NOSPLIT | |
diff --git a/src/runtime/os_plan9.c b/src/runtime/os_plan9.c | |
index f8c543f..c3f9030 100644 | |
--- a/src/runtime/os_plan9.c | |
+++ b/src/runtime/os_plan9.c | |
@@ -67,6 +67,11 @@ getproccount(void) | |
runtime·close(fd); | |
return ncpu > 0 ? ncpu : 1; | |
} | |
+static uintptr | |
+getphyspagesize(void) | |
+{ | |
+ return PhysPageSize; | |
+} | |
static int32 | |
getpid(void) | |
@@ -91,6 +96,7 @@ runtime·osinit(void) | |
{ | |
runtime·ncpu = getproccount(); | |
g->m->procid = getpid(); | |
+ runtime·physpagesz = getphyspagesize(); | |
runtime·notify(runtime·sigtramp); | |
} | |
diff --git a/src/runtime/os_solaris.c b/src/runtime/os_solaris.c | |
index e16b8e6..8e14f42 100644 | |
--- a/src/runtime/os_solaris.c | |
+++ b/src/runtime/os_solaris.c | |
@@ -5,6 +5,7 @@ | |
#include "runtime.h" | |
#include "defs_GOOS_GOARCH.h" | |
#include "os_GOOS.h" | |
+#include "arch_GOARCH.h" | |
#include "signal_unix.h" | |
#include "stack.h" | |
#include "textflag.h" | |
@@ -108,10 +109,17 @@ getncpu(void) | |
return n; | |
} | |
+static uintptr | |
+getphyspagesize(void) | |
+{ | |
+ return PhysPageSize; | |
+} | |
+ | |
void | |
runtime·osinit(void) | |
{ | |
runtime·ncpu = getncpu(); | |
+ runtime·physpagesz = getphyspagesize(); | |
} | |
void | |
diff --git a/src/runtime/os_windows.c b/src/runtime/os_windows.c | |
index b8b8eda..0e4cbe9 100644 | |
--- a/src/runtime/os_windows.c | |
+++ b/src/runtime/os_windows.c | |
@@ -6,6 +6,7 @@ | |
#include "type.h" | |
#include "defs_GOOS_GOARCH.h" | |
#include "os_GOOS.h" | |
+#include "arch_GOARCH.h" | |
#include "textflag.h" | |
#include "arch_GOARCH.h" | |
#include "malloc.h" | |
@@ -105,7 +106,11 @@ getproccount(void) | |
runtime·stdcall1(runtime·GetSystemInfo, (uintptr)&info); | |
return info.dwNumberOfProcessors; | |
} | |
- | |
+static uintptr | |
+getphyspagesize(void) | |
+{ | |
+ return PhysPageSize; | |
+} | |
void | |
runtime·osinit(void) | |
{ | |
@@ -135,6 +140,7 @@ runtime·osinit(void) | |
runtime·stdcall1(runtime·timeBeginPeriod, 1); | |
runtime·ncpu = getproccount(); | |
+ runtime·physpagesz = getphyspagesize(); | |
// Windows dynamic priority boosting assumes that a process has different types | |
// of dedicated threads -- GUI, IO, computational, etc. Go processes use | |
diff --git a/src/runtime/proc.c b/src/runtime/proc.c | |
index 8462c4b..58b316d 100644 | |
--- a/src/runtime/proc.c | |
+++ b/src/runtime/proc.c | |
@@ -44,6 +44,7 @@ P* runtime·allp[MaxGomaxprocs+1]; | |
int8* runtime·goos; | |
int32 runtime·ncpu; | |
int32 runtime·newprocs; | |
+uintptr runtime·physpagesz; | |
Mutex runtime·allglock; // the following vars are protected by this lock or by stoptheworld | |
G** runtime·allg; | |
diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h | |
index 177a128..f281f02 100644 | |
--- a/src/runtime/runtime.h | |
+++ b/src/runtime/runtime.h | |
@@ -765,6 +765,7 @@ extern Note runtime·signote; | |
extern ForceGCState runtime·forcegc; | |
extern SchedT runtime·sched; | |
extern int32 runtime·newprocs; | |
+extern uintptr runtime·physpagesz; | |
/* | |
* common functions and data | |
diff --git a/src/syscall/syscall_darwin_386.go b/src/syscall/syscall_darwin_386.go | |
index 2074e7a..1e9c6c4 100644 | |
--- a/src/syscall/syscall_darwin_386.go | |
+++ b/src/syscall/syscall_darwin_386.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "runtime" | |
+ "unsafe" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_darwin_amd64.go b/src/syscall/syscall_darwin_amd64.go | |
index 81b1fd3..2cadc8f 100644 | |
--- a/src/syscall/syscall_darwin_amd64.go | |
+++ b/src/syscall/syscall_darwin_amd64.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "runtime" | |
+ "unsafe" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_dragonfly_386.go b/src/syscall/syscall_dragonfly_386.go | |
index ebd3d4c..a1e96d1 100644 | |
--- a/src/syscall/syscall_dragonfly_386.go | |
+++ b/src/syscall/syscall_dragonfly_386.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "runtime" | |
+ "unsafe" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_dragonfly_amd64.go b/src/syscall/syscall_dragonfly_amd64.go | |
index 70c2ffb..87a366b 100644 | |
--- a/src/syscall/syscall_dragonfly_amd64.go | |
+++ b/src/syscall/syscall_dragonfly_amd64.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "runtime" | |
+ "unsafe" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_freebsd_386.go b/src/syscall/syscall_freebsd_386.go | |
index ebd3d4c..a1e96d1 100644 | |
--- a/src/syscall/syscall_freebsd_386.go | |
+++ b/src/syscall/syscall_freebsd_386.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "runtime" | |
+ "unsafe" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_freebsd_amd64.go b/src/syscall/syscall_freebsd_amd64.go | |
index 70c2ffb..87a366b 100644 | |
--- a/src/syscall/syscall_freebsd_amd64.go | |
+++ b/src/syscall/syscall_freebsd_amd64.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "runtime" | |
+ "unsafe" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_freebsd_arm.go b/src/syscall/syscall_freebsd_arm.go | |
index ab72871..f6998ef 100644 | |
--- a/src/syscall/syscall_freebsd_arm.go | |
+++ b/src/syscall/syscall_freebsd_arm.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "runtime" | |
+ "unsafe" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return ts.Sec*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_linux_386.go b/src/syscall/syscall_linux_386.go | |
index 8278750..5c37784 100644 | |
--- a/src/syscall/syscall_linux_386.go | |
+++ b/src/syscall/syscall_linux_386.go | |
@@ -7,9 +7,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "runtime" | |
+ "unsafe" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_linux_amd64.go b/src/syscall/syscall_linux_amd64.go | |
index 74a89fb..563e2c4 100644 | |
--- a/src/syscall/syscall_linux_amd64.go | |
+++ b/src/syscall/syscall_linux_amd64.go | |
@@ -4,6 +4,8 @@ | |
package syscall | |
+import "runtime" | |
+ | |
//sys Chown(path string, uid int, gid int) (err error) | |
//sys Fchown(fd int, uid int, gid int) (err error) | |
//sys Fstat(fd int, stat *Stat_t) (err error) | |
@@ -55,7 +57,7 @@ package syscall | |
//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) | |
//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
//go:noescape | |
func gettimeofday(tv *Timeval) (err Errno) | |
diff --git a/src/syscall/syscall_linux_arm.go b/src/syscall/syscall_linux_arm.go | |
index b127345..b5fdfc6 100644 | |
--- a/src/syscall/syscall_linux_arm.go | |
+++ b/src/syscall/syscall_linux_arm.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "runtime" | |
+ "unsafe" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_nacl.go b/src/syscall/syscall_nacl.go | |
index c2788b2..92f2395 100644 | |
--- a/src/syscall/syscall_nacl.go | |
+++ b/src/syscall/syscall_nacl.go | |
@@ -5,6 +5,7 @@ | |
package syscall | |
import ( | |
+ "runtime" | |
"sync" | |
"unsafe" | |
) | |
@@ -291,7 +292,7 @@ func Getegid() int { return 1 } | |
func Geteuid() int { return 1 } | |
func Getgid() int { return 1 } | |
func Getgroups() ([]int, error) { return []int{1}, nil } | |
-func Getpagesize() int { return 65536 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func Getppid() int { return 2 } | |
func Getpid() int { return 3 } | |
func Getuid() int { return 1 } | |
diff --git a/src/syscall/syscall_netbsd_386.go b/src/syscall/syscall_netbsd_386.go | |
index 2dbff07..7f0d4fa 100644 | |
--- a/src/syscall/syscall_netbsd_386.go | |
+++ b/src/syscall/syscall_netbsd_386.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_netbsd_amd64.go b/src/syscall/syscall_netbsd_amd64.go | |
index 5784db9..9f72b1c 100644 | |
--- a/src/syscall/syscall_netbsd_amd64.go | |
+++ b/src/syscall/syscall_netbsd_amd64.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_netbsd_arm.go b/src/syscall/syscall_netbsd_arm.go | |
index 659698a..425c508 100644 | |
--- a/src/syscall/syscall_netbsd_arm.go | |
+++ b/src/syscall/syscall_netbsd_arm.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_openbsd_386.go b/src/syscall/syscall_openbsd_386.go | |
index ad5ae14..85d24c5 100644 | |
--- a/src/syscall/syscall_openbsd_386.go | |
+++ b/src/syscall/syscall_openbsd_386.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_openbsd_amd64.go b/src/syscall/syscall_openbsd_amd64.go | |
index 6181344..e11e94c 100644 | |
--- a/src/syscall/syscall_openbsd_amd64.go | |
+++ b/src/syscall/syscall_openbsd_amd64.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_plan9.go b/src/syscall/syscall_plan9.go | |
index 618e02c..7f95723 100644 | |
--- a/src/syscall/syscall_plan9.go | |
+++ b/src/syscall/syscall_plan9.go | |
@@ -11,7 +11,10 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "runtime" | |
+ "unsafe" | |
+) | |
const ImplementsGetwd = true | |
@@ -314,7 +317,7 @@ func Gettimeofday(tv *Timeval) error { | |
return nil | |
} | |
-func Getpagesize() int { return 0x1000 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func Getegid() (egid int) { return -1 } | |
func Geteuid() (euid int) { return -1 } | |
diff --git a/src/syscall/syscall_solaris_amd64.go b/src/syscall/syscall_solaris_amd64.go | |
index 37cf06d..294d4ef 100644 | |
--- a/src/syscall/syscall_solaris_amd64.go | |
+++ b/src/syscall/syscall_solaris_amd64.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_windows.go b/src/syscall/syscall_windows.go | |
index e89fd09..7eb9ba8 100644 | |
--- a/src/syscall/syscall_windows.go | |
+++ b/src/syscall/syscall_windows.go | |
@@ -8,6 +8,7 @@ package syscall | |
import ( | |
errorspkg "errors" | |
+ "runtime" | |
"sync" | |
"unicode/utf16" | |
"unsafe" | |
@@ -68,7 +69,7 @@ func UTF16PtrFromString(s string) (*uint16, error) { | |
return &a[0], nil | |
} | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
// Errno is the Windows error number. | |
type Errno uintptr |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/cmd/dist/util.go b/src/cmd/dist/util.go | |
index f13210f..c8d7819 100644 | |
--- a/src/cmd/dist/util.go | |
+++ b/src/cmd/dist/util.go | |
@@ -510,9 +510,10 @@ func xgetgoarm() string { | |
// Conservative default for cross-compilation. | |
return "5" | |
} | |
- if goos == "freebsd" || goos == "openbsd" { | |
+ if goos == "freebsd" || goos == "openbsd" || goos == "netbsd" { | |
// FreeBSD has broken VFP support. | |
// OpenBSD currently only supports softfloat. | |
+ // NetBSD arm supports some armv5 machines, | |
return "5" | |
} | |
if goos != "linux" { | |
diff --git a/src/cmd/link/internal/amd64/obj.go b/src/cmd/link/internal/amd64/obj.go | |
index 1aa4422..5362faf 100644 | |
--- a/src/cmd/link/internal/amd64/obj.go | |
+++ b/src/cmd/link/internal/amd64/obj.go | |
@@ -161,7 +161,6 @@ func archinit() { | |
case obj.Hlinux, /* elf64 executable */ | |
obj.Hfreebsd, /* freebsd */ | |
- obj.Hnetbsd, /* netbsd */ | |
obj.Hopenbsd, /* openbsd */ | |
obj.Hdragonfly, /* dragonfly */ | |
obj.Hsolaris: /* solaris */ | |
@@ -177,6 +176,19 @@ func archinit() { | |
if ld.INITRND == -1 { | |
ld.INITRND = 4096 | |
} | |
+ case obj.Hnetbsd: | |
+ ld.Elfinit() | |
+ | |
+ ld.HEADR = ld.ELFRESERVE | |
+ if ld.INITTEXT == -1 { | |
+ ld.INITTEXT = (1 << 22) + int64(ld.HEADR) | |
+ } | |
+ if ld.INITDAT == -1 { | |
+ ld.INITDAT = 0 | |
+ } | |
+ if ld.INITRND == -1 { | |
+ ld.INITRND = 0x200000 | |
+ } | |
case obj.Hnacl: | |
ld.Elfinit() | |
diff --git a/src/cmd/link/internal/arm/obj.go b/src/cmd/link/internal/arm/obj.go | |
index 14fe7a6..a200e7b 100644 | |
--- a/src/cmd/link/internal/arm/obj.go | |
+++ b/src/cmd/link/internal/arm/obj.go | |
@@ -121,7 +121,6 @@ func archinit() { | |
case obj.Hlinux, /* arm elf */ | |
obj.Hfreebsd, | |
- obj.Hnetbsd, | |
obj.Hopenbsd: | |
ld.Debug['d'] = 0 | |
// with dynamic linking | |
@@ -136,6 +135,20 @@ func archinit() { | |
if ld.INITRND == -1 { | |
ld.INITRND = 4096 | |
} | |
+ case obj.Hnetbsd: | |
+ ld.Debug['d'] = 0 | |
+ // with dynamic linking | |
+ ld.Elfinit() | |
+ ld.HEADR = ld.ELFRESERVE | |
+ if ld.INITTEXT == -1 { | |
+ ld.INITTEXT = 0x10000 + int64(ld.HEADR) | |
+ } | |
+ if ld.INITDAT == -1 { | |
+ ld.INITDAT = 0 | |
+ } | |
+ if ld.INITRND == -1 { | |
+ ld.INITRND = 0x10000 | |
+ } | |
case obj.Hnacl: | |
ld.Elfinit() | |
diff --git a/src/cmd/link/internal/ld/elf.go b/src/cmd/link/internal/ld/elf.go | |
index 9dedb0e..1fb2e75 100644 | |
--- a/src/cmd/link/internal/ld/elf.go | |
+++ b/src/cmd/link/internal/ld/elf.go | |
@@ -796,7 +796,8 @@ func Elfinit() { | |
// 32-bit architectures | |
case '5': | |
// we use EABI on both linux/arm and freebsd/arm. | |
- if HEADTYPE == obj.Hlinux || HEADTYPE == obj.Hfreebsd { | |
+ if HEADTYPE == obj.Hlinux || HEADTYPE == obj.Hfreebsd || | |
+ HEADTYPE == obj.Hnetbsd { | |
ehdr.flags = 0x5000002 // has entry point, Version5 EABI | |
} | |
fallthrough | |
diff --git a/src/runtime/debug.go b/src/runtime/debug.go | |
index b7e7971..fb73c7f 100644 | |
--- a/src/runtime/debug.go | |
+++ b/src/runtime/debug.go | |
@@ -36,6 +36,11 @@ func NumCPU() int { | |
return int(ncpu) | |
} | |
+// Physpagesize returns the physical page size from runtime | |
+func Physpagesize() int { | |
+ return int(physpagesz) | |
+} | |
+ | |
// NumCgoCall returns the number of cgo calls made by the current process. | |
func NumCgoCall() int64 { | |
var n int64 | |
diff --git a/src/runtime/defs1_netbsd_arm.go b/src/runtime/defs1_netbsd_arm.go | |
index c976351..01b82fc 100644 | |
--- a/src/runtime/defs1_netbsd_arm.go | |
+++ b/src/runtime/defs1_netbsd_arm.go | |
@@ -110,6 +110,7 @@ type stackt struct { | |
type timespec struct { | |
tv_sec int64 | |
tv_nsec int32 | |
+ Pad_cgo_0 [4]byte // for EABI | |
} | |
func (ts *timespec) set_sec(x int32) { | |
@@ -121,8 +122,9 @@ func (ts *timespec) set_nsec(x int32) { | |
} | |
type timeval struct { | |
- tv_sec int64 | |
- tv_usec int32 | |
+ tv_sec int64 | |
+ tv_usec int32 | |
+ Pad_cgo_0 [4]byte // for EABI | |
} | |
func (tv *timeval) set_usec(x int32) { | |
@@ -136,9 +138,10 @@ type itimerval struct { | |
type mcontextt struct { | |
__gregs [17]uint32 | |
- __fpu [4 + 8*32 + 4]byte // EABI | |
- // __fpu [4+4*33+4]byte // not EABI | |
+ Pad_cgo_0 [4]byte // for EABI | |
+ __fpu [272]byte // for EABI, fpscr[4]+pad[4]+fstmx[8*32]+fpsid[4]+pad[4] | |
_mc_tlsbase uint32 | |
+ Pad_cgo_1 [4]byte // for EABI | |
} | |
type ucontextt struct { | |
@@ -146,6 +149,7 @@ type ucontextt struct { | |
uc_link *ucontextt | |
uc_sigmask sigset | |
uc_stack stackt | |
+ Pad_cgo_0 [4]byte // for EABI | |
uc_mcontext mcontextt | |
__uc_pad [2]int32 | |
} | |
@@ -157,6 +161,7 @@ type keventt struct { | |
fflags uint32 | |
data int64 | |
udata *byte | |
+ Pad_cgo_0 [4]byte // for EABI | |
} | |
// created by cgo -cdefs and then converted to Go | |
diff --git a/src/runtime/defs_netbsd.go b/src/runtime/defs_netbsd.go | |
index b27949e..55f9b14 100644 | |
--- a/src/runtime/defs_netbsd.go | |
+++ b/src/runtime/defs_netbsd.go | |
@@ -122,4 +122,4 @@ type Itimerval C.struct_itimerval | |
type McontextT C.mcontext_t | |
type UcontextT C.ucontext_t | |
-type Kevent C.struct_kevent | |
+type KeventT C.struct_kevent | |
diff --git a/src/runtime/mbarrier.go b/src/runtime/mbarrier.go | |
index 0dbe1ff..3d5580e 100644 | |
--- a/src/runtime/mbarrier.go | |
+++ b/src/runtime/mbarrier.go | |
@@ -128,7 +128,7 @@ func writebarrierptr(dst *uintptr, src uintptr) { | |
if !writeBarrierEnabled { | |
return | |
} | |
- if src != 0 && (src < _PhysPageSize || src == poisonStack) { | |
+ if src != 0 && (src < physpagesz || src == poisonStack) { | |
systemstack(func() { | |
print("runtime: writebarrierptr *", dst, " = ", hex(src), "\n") | |
throw("bad pointer in write barrier") | |
@@ -144,7 +144,7 @@ func writebarrierptr_nostore(dst *uintptr, src uintptr) { | |
if !writeBarrierEnabled { | |
return | |
} | |
- if src != 0 && (src < _PhysPageSize || src == poisonStack) { | |
+ if src != 0 && (src < physpagesz || src == poisonStack) { | |
systemstack(func() { throw("bad pointer in write barrier") }) | |
} | |
writebarrierptr_nostore1(dst, src) | |
diff --git a/src/runtime/mbitmap.go b/src/runtime/mbitmap.go | |
index fd6b4b1..fcc6451 100644 | |
--- a/src/runtime/mbitmap.go | |
+++ b/src/runtime/mbitmap.go | |
@@ -136,7 +136,7 @@ func mHeap_MapBits(h *mheap, arena_used uintptr) { | |
n := (arena_used - mheap_.arena_start) / heapBitmapScale | |
n = round(n, bitmapChunk) | |
- n = round(n, _PhysPageSize) | |
+ n = round(n, physpagesz) | |
if h.bitmap_mapped >= n { | |
return | |
} | |
diff --git a/src/runtime/mem_linux.go b/src/runtime/mem_linux.go | |
index e8c8999..fe3950d 100644 | |
--- a/src/runtime/mem_linux.go | |
+++ b/src/runtime/mem_linux.go | |
@@ -21,7 +21,7 @@ var addrspace_vec [1]byte | |
func addrspace_free(v unsafe.Pointer, n uintptr) bool { | |
var chunk uintptr | |
for off := uintptr(0); off < n; off += chunk { | |
- chunk = _PAGE_SIZE * uintptr(len(addrspace_vec)) | |
+ chunk = physpagesz * uintptr(len(addrspace_vec)) | |
if chunk > (n - off) { | |
chunk = n - off | |
} | |
diff --git a/src/runtime/mheap.go b/src/runtime/mheap.go | |
index bc4e7c1..249745e 100644 | |
--- a/src/runtime/mheap.go | |
+++ b/src/runtime/mheap.go | |
@@ -307,7 +307,7 @@ func mHeap_MapSpans(h *mheap, arena_used uintptr) { | |
n := arena_used | |
n -= h.arena_start | |
n = n / _PageSize * ptrSize | |
- n = round(n, _PhysPageSize) | |
+ n = round(n, physpagesz) | |
if h.spans_mapped >= n { | |
return | |
} | |
@@ -788,7 +788,7 @@ func mHeap_FreeSpanLocked(h *mheap, s *mspan, acctinuse, acctidle bool, unusedsi | |
} | |
func scavengelist(list *mspan, now, limit uint64) uintptr { | |
- if _PhysPageSize > _PageSize { | |
+ if physpagesz > _PageSize { | |
// golang.org/issue/9993 | |
// If the physical page size of the machine is larger than | |
// our logical heap page size the kernel may round up the | |
diff --git a/src/runtime/os1_darwin.go b/src/runtime/os1_darwin.go | |
index c9dba15..bd51555 100644 | |
--- a/src/runtime/os1_darwin.go | |
+++ b/src/runtime/os1_darwin.go | |
@@ -35,6 +35,7 @@ func osinit() { | |
// can look at the environment first. | |
ncpu = getncpu() | |
+ physpagesz = getphyspagesz() | |
} | |
func getncpu() int32 { | |
@@ -49,6 +50,18 @@ func getncpu() int32 { | |
return 1 | |
} | |
+func getphyspagesz() uintptr { | |
+ // Use sysctl to fetch hw.pagesize. | |
+ mib := [2]uint32{6, 7} | |
+ out := uintptr(0) | |
+ nout := unsafe.Sizeof(out) | |
+ ret := sysctl(&mib[0], 2, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0) | |
+ if ret >= 0 { | |
+ return out | |
+ } | |
+ return _PhysPageSize | |
+} | |
+ | |
var urandom_dev = []byte("/dev/urandom\x00") | |
//go:nosplit | |
diff --git a/src/runtime/os1_dragonfly.go b/src/runtime/os1_dragonfly.go | |
index da70014..a5b51ed 100644 | |
--- a/src/runtime/os1_dragonfly.go | |
+++ b/src/runtime/os1_dragonfly.go | |
@@ -10,6 +10,7 @@ import "unsafe" | |
const ( | |
_CTL_HW = 6 | |
_HW_NCPU = 3 | |
+ _HW_PAGESIZE = 7 | |
) | |
var sigset_all = sigset{[4]uint32{^uint32(0), ^uint32(0), ^uint32(0), ^uint32(0)}} | |
@@ -25,6 +26,17 @@ func getncpu() int32 { | |
return 1 | |
} | |
+func getphyspagesz() uintptr { | |
+ mib := [2]uint32{_CTL_HW, _HW_PAGESIZE} | |
+ out := uintptr(0) | |
+ nout := unsafe.Sizeof(out) | |
+ ret := sysctl(&mib[0], 2, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0) | |
+ if ret >= 0 { | |
+ return out | |
+ } | |
+ return _PhysPageSize | |
+} | |
+ | |
//go:nosplit | |
func futexsleep(addr *uint32, val uint32, ns int64) { | |
systemstack(func() { | |
@@ -96,6 +108,7 @@ func newosproc(mp *m, stk unsafe.Pointer) { | |
func osinit() { | |
ncpu = getncpu() | |
+ physpagesz = getphyspagesz() | |
} | |
var urandom_dev = []byte("/dev/urandom\x00") | |
diff --git a/src/runtime/os1_freebsd.go b/src/runtime/os1_freebsd.go | |
index b18e60f..52bbf5f 100644 | |
--- a/src/runtime/os1_freebsd.go | |
+++ b/src/runtime/os1_freebsd.go | |
@@ -10,6 +10,7 @@ import "unsafe" | |
const ( | |
_CTL_HW = 6 | |
_HW_NCPU = 3 | |
+ _HW_PAGESIZE = 7 | |
) | |
var sigset_all = sigset{[4]uint32{^uint32(0), ^uint32(0), ^uint32(0), ^uint32(0)}} | |
@@ -25,6 +26,17 @@ func getncpu() int32 { | |
return 1 | |
} | |
+func getphyspagesz() uintptr { | |
+ mib := [2]uint32{_CTL_HW, _HW_PAGESIZE} | |
+ out := uintptr(0) | |
+ nout := unsafe.Sizeof(out) | |
+ ret := sysctl(&mib[0], 2, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0) | |
+ if ret >= 0 { | |
+ return out | |
+ } | |
+ return _PhysPageSize | |
+} | |
+ | |
// FreeBSD's umtx_op syscall is effectively the same as Linux's futex, and | |
// thus the code is largely similar. See Linux implementation | |
// and lock_futex.go for comments. | |
diff --git a/src/runtime/os1_linux.go b/src/runtime/os1_linux.go | |
index 166014b..0e293e3 100644 | |
--- a/src/runtime/os1_linux.go | |
+++ b/src/runtime/os1_linux.go | |
@@ -98,6 +98,10 @@ func getproccount() int32 { | |
} | |
return n | |
} | |
+func getphyspagesz() uintptr { | |
+ // XXX: How to get PAGESIZE? | |
+ return _PhysPageSize | |
+} | |
// Clone, the Linux rfork. | |
const ( | |
@@ -171,6 +175,7 @@ var failthreadcreate = []byte("runtime: failed to create new OS thread\n") | |
func osinit() { | |
ncpu = getproccount() | |
+ physpagesz = getphyspagesz() | |
} | |
var urandom_dev = []byte("/dev/urandom\x00") | |
diff --git a/src/runtime/os1_nacl.go b/src/runtime/os1_nacl.go | |
index 30c3529..f7850a3 100644 | |
--- a/src/runtime/os1_nacl.go | |
+++ b/src/runtime/os1_nacl.go | |
@@ -51,6 +51,7 @@ func unminit() { | |
func osinit() { | |
ncpu = 1 | |
getg().m.procid = 2 | |
+ pyhspagesz = _PhysPageSize | |
//nacl_exception_handler(funcPC(sigtramp), nil); | |
} | |
diff --git a/src/runtime/os1_netbsd.go b/src/runtime/os1_netbsd.go | |
index f4c5ca4..45d861f 100644 | |
--- a/src/runtime/os1_netbsd.go | |
+++ b/src/runtime/os1_netbsd.go | |
@@ -23,6 +23,7 @@ var sigset_all = sigset{[4]uint32{^uint32(0), ^uint32(0), ^uint32(0), ^uint32(0) | |
const ( | |
_CTL_HW = 6 | |
_HW_NCPU = 3 | |
+ _HW_PAGESIZE = 7 | |
) | |
func getncpu() int32 { | |
@@ -36,6 +37,17 @@ func getncpu() int32 { | |
return 1 | |
} | |
+func getphyspagesz() uintptr { | |
+ mib := [2]uint32{_CTL_HW, _HW_PAGESIZE} | |
+ out := uintptr(0) | |
+ nout := unsafe.Sizeof(out) | |
+ ret := sysctl(&mib[0], 2, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0) | |
+ if ret >= 0 { | |
+ return out | |
+ } | |
+ return _PhysPageSize | |
+} | |
+ | |
//go:nosplit | |
func semacreate() uintptr { | |
return 1 | |
@@ -115,6 +127,7 @@ func newosproc(mp *m, stk unsafe.Pointer) { | |
func osinit() { | |
ncpu = getncpu() | |
+ physpagesz = getphyspagesz() | |
} | |
var urandom_dev = []byte("/dev/urandom\x00") | |
diff --git a/src/runtime/os1_openbsd.go b/src/runtime/os1_openbsd.go | |
index 88f6aef..f8da70b 100644 | |
--- a/src/runtime/os1_openbsd.go | |
+++ b/src/runtime/os1_openbsd.go | |
@@ -28,6 +28,7 @@ const ( | |
const ( | |
_CTL_HW = 6 | |
_HW_NCPU = 3 | |
+ _HW_PAGESIZE = 7 | |
) | |
func getncpu() int32 { | |
@@ -43,6 +44,18 @@ func getncpu() int32 { | |
return 1 | |
} | |
+func getphyspagesz() uintptr { | |
+ mib := [2]uint32{_CTL_HW, _HW_PAGESIZE} | |
+ out := uintptr(0) | |
+ nout := unsafe.Sizeof(out) | |
+ | |
+ ret := sysctl(&mib[0], 2, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0) | |
+ if ret >= 0 { | |
+ return out | |
+ } | |
+ return _PhysPageSize | |
+} | |
+ | |
//go:nosplit | |
func semacreate() uintptr { | |
return 1 | |
@@ -125,6 +138,7 @@ func newosproc(mp *m, stk unsafe.Pointer) { | |
func osinit() { | |
ncpu = getncpu() | |
+ physpagesz = getphyspagesz() | |
} | |
var urandom_dev = []byte("/dev/urandom\x00") | |
diff --git a/src/runtime/os1_plan9.go b/src/runtime/os1_plan9.go | |
index 38125a0..5107dd0 100644 | |
--- a/src/runtime/os1_plan9.go | |
+++ b/src/runtime/os1_plan9.go | |
@@ -66,6 +66,11 @@ func getproccount() int32 { | |
return ncpu | |
} | |
+func getphyspagesz() uintptr { | |
+ // XXX: How to get PAGE_SIZE? | |
+ return _PhysPageSize | |
+} | |
+ | |
var pid = []byte("#c/pid\x00") | |
func getpid() uint64 { | |
@@ -85,6 +90,7 @@ func getpid() uint64 { | |
func osinit() { | |
initBloc() | |
ncpu = getproccount() | |
+ physpagesz = getphyspagesz() | |
getg().m.procid = getpid() | |
notify(unsafe.Pointer(funcPC(sigtramp))) | |
} | |
diff --git a/src/runtime/os1_windows.go b/src/runtime/os1_windows.go | |
index d012034..fd194d8 100644 | |
--- a/src/runtime/os1_windows.go | |
+++ b/src/runtime/os1_windows.go | |
@@ -130,6 +130,10 @@ func getproccount() int32 { | |
stdcall1(_GetSystemInfo, uintptr(unsafe.Pointer(&info))) | |
return int32(info.dwnumberofprocessors) | |
} | |
+func getphyspagesz() uintptr { | |
+ // XXX: How to get PAGESIZE ?? | |
+ return _PhysPageSize | |
+} | |
const ( | |
currentProcess = ^uintptr(0) // -1 = current process | |
@@ -157,6 +161,7 @@ func osinit() { | |
stdcall1(_timeBeginPeriod, 1) | |
ncpu = getproccount() | |
+ physpagesz = getphyspagesz() | |
// Windows dynamic priority boosting assumes that a process has different types | |
// of dedicated threads -- GUI, IO, computational, etc. Go processes use | |
diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go | |
index 57cd869..1a5417f 100644 | |
--- a/src/runtime/runtime2.go | |
+++ b/src/runtime/runtime2.go | |
@@ -639,6 +639,7 @@ var ( | |
forcegc forcegcstate | |
sched schedt | |
newprocs int32 | |
+ physpagesz uintptr | |
// Information about what cpu features are available. | |
// Set on startup in asm_{x86,amd64}.s. | |
diff --git a/src/syscall/syscall_darwin_386.go b/src/syscall/syscall_darwin_386.go | |
index 2074e7a..72ec53a 100644 | |
--- a/src/syscall/syscall_darwin_386.go | |
+++ b/src/syscall/syscall_darwin_386.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_darwin_amd64.go b/src/syscall/syscall_darwin_amd64.go | |
index 70b53b8..f0fc944 100644 | |
--- a/src/syscall/syscall_darwin_amd64.go | |
+++ b/src/syscall/syscall_darwin_amd64.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_darwin_arm.go b/src/syscall/syscall_darwin_arm.go | |
index 2a7d4f2..eac95e3 100644 | |
--- a/src/syscall/syscall_darwin_arm.go | |
+++ b/src/syscall/syscall_darwin_arm.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_darwin_arm64.go b/src/syscall/syscall_darwin_arm64.go | |
index de7a08b..fe39a7f 100644 | |
--- a/src/syscall/syscall_darwin_arm64.go | |
+++ b/src/syscall/syscall_darwin_arm64.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
-func Getpagesize() int { return 16384 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_dragonfly_amd64.go b/src/syscall/syscall_dragonfly_amd64.go | |
index 70c2ffb..94149d9 100644 | |
--- a/src/syscall/syscall_dragonfly_amd64.go | |
+++ b/src/syscall/syscall_dragonfly_amd64.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_freebsd_386.go b/src/syscall/syscall_freebsd_386.go | |
index ebd3d4c..b255ad0 100644 | |
--- a/src/syscall/syscall_freebsd_386.go | |
+++ b/src/syscall/syscall_freebsd_386.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_freebsd_amd64.go b/src/syscall/syscall_freebsd_amd64.go | |
index 70c2ffb..94149d9 100644 | |
--- a/src/syscall/syscall_freebsd_amd64.go | |
+++ b/src/syscall/syscall_freebsd_amd64.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_freebsd_arm.go b/src/syscall/syscall_freebsd_arm.go | |
index ab72871..879a1f2 100644 | |
--- a/src/syscall/syscall_freebsd_arm.go | |
+++ b/src/syscall/syscall_freebsd_arm.go | |
@@ -4,9 +4,12 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return ts.Sec*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_linux_386.go b/src/syscall/syscall_linux_386.go | |
index 9ee1c1c..5e25176 100644 | |
--- a/src/syscall/syscall_linux_386.go | |
+++ b/src/syscall/syscall_linux_386.go | |
@@ -7,11 +7,14 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
const _SYS_dup = SYS_DUP2 | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_linux_amd64.go b/src/syscall/syscall_linux_amd64.go | |
index 6fbef21..42a993d 100644 | |
--- a/src/syscall/syscall_linux_amd64.go | |
+++ b/src/syscall/syscall_linux_amd64.go | |
@@ -4,6 +4,8 @@ | |
package syscall | |
+import "runtime" | |
+ | |
const _SYS_dup = SYS_DUP2 | |
//sys Dup2(oldfd int, newfd int) (err error) | |
@@ -69,7 +71,7 @@ func Gettimeofday(tv *Timeval) (err error) { | |
return nil | |
} | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func Time(t *Time_t) (tt Time_t, err error) { | |
var tv Timeval | |
diff --git a/src/syscall/syscall_linux_arm.go b/src/syscall/syscall_linux_arm.go | |
index 218d6b8..2279559 100644 | |
--- a/src/syscall/syscall_linux_arm.go | |
+++ b/src/syscall/syscall_linux_arm.go | |
@@ -4,11 +4,14 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
const _SYS_dup = SYS_DUP2 | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_linux_arm64.go b/src/syscall/syscall_linux_arm64.go | |
index 3d55181..330a252 100644 | |
--- a/src/syscall/syscall_linux_arm64.go | |
+++ b/src/syscall/syscall_linux_arm64.go | |
@@ -4,6 +4,8 @@ | |
package syscall | |
+import "runtime" | |
+ | |
const _SYS_dup = SYS_DUP3 | |
//sys Fchown(fd int, uid int, gid int) (err error) | |
@@ -65,7 +67,7 @@ func Lstat(path string, stat *Stat_t) (err error) { | |
//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) | |
//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) | |
-func Getpagesize() int { return 65536 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
//sysnb Gettimeofday(tv *Timeval) (err error) | |
//sysnb Time(t *Time_t) (tt Time_t, err error) | |
diff --git a/src/syscall/syscall_linux_ppc64x.go b/src/syscall/syscall_linux_ppc64x.go | |
index 10489d9..0b14f5d 100644 | |
--- a/src/syscall/syscall_linux_ppc64x.go | |
+++ b/src/syscall/syscall_linux_ppc64x.go | |
@@ -7,6 +7,8 @@ | |
package syscall | |
+import "runtime" | |
+ | |
const _SYS_dup = SYS_DUP2 | |
//sys Dup2(oldfd int, newfd int) (err error) | |
@@ -61,7 +63,7 @@ const _SYS_dup = SYS_DUP2 | |
//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) | |
//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) | |
-func Getpagesize() int { return 65536 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
//sysnb Gettimeofday(tv *Timeval) (err error) | |
//sysnb Time(t *Time_t) (tt Time_t, err error) | |
diff --git a/src/syscall/syscall_nacl.go b/src/syscall/syscall_nacl.go | |
index f8f63ef..7cdb7be 100644 | |
--- a/src/syscall/syscall_nacl.go | |
+++ b/src/syscall/syscall_nacl.go | |
@@ -5,6 +5,7 @@ | |
package syscall | |
import ( | |
+ "runtime" | |
"sync" | |
"unsafe" | |
) | |
@@ -292,7 +293,7 @@ func Getegid() int { return 1 } | |
func Geteuid() int { return 1 } | |
func Getgid() int { return 1 } | |
func Getgroups() ([]int, error) { return []int{1}, nil } | |
-func Getpagesize() int { return 65536 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func Getppid() int { return 2 } | |
func Getpid() int { return 3 } | |
func Getuid() int { return 1 } | |
diff --git a/src/syscall/syscall_netbsd_386.go b/src/syscall/syscall_netbsd_386.go | |
index 2dbff07..7f0d4fa 100644 | |
--- a/src/syscall/syscall_netbsd_386.go | |
+++ b/src/syscall/syscall_netbsd_386.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_netbsd_amd64.go b/src/syscall/syscall_netbsd_amd64.go | |
index 5784db9..9f72b1c 100644 | |
--- a/src/syscall/syscall_netbsd_amd64.go | |
+++ b/src/syscall/syscall_netbsd_amd64.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_netbsd_arm.go b/src/syscall/syscall_netbsd_arm.go | |
index 659698a..425c508 100644 | |
--- a/src/syscall/syscall_netbsd_arm.go | |
+++ b/src/syscall/syscall_netbsd_arm.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_openbsd_386.go b/src/syscall/syscall_openbsd_386.go | |
index ad5ae14..85d24c5 100644 | |
--- a/src/syscall/syscall_openbsd_386.go | |
+++ b/src/syscall/syscall_openbsd_386.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_openbsd_amd64.go b/src/syscall/syscall_openbsd_amd64.go | |
index 6181344..e11e94c 100644 | |
--- a/src/syscall/syscall_openbsd_amd64.go | |
+++ b/src/syscall/syscall_openbsd_amd64.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_openbsd_arm.go b/src/syscall/syscall_openbsd_arm.go | |
index ad5ae14..85d24c5 100644 | |
--- a/src/syscall/syscall_openbsd_arm.go | |
+++ b/src/syscall/syscall_openbsd_arm.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_plan9.go b/src/syscall/syscall_plan9.go | |
index 7968708..fec4434 100644 | |
--- a/src/syscall/syscall_plan9.go | |
+++ b/src/syscall/syscall_plan9.go | |
@@ -11,7 +11,10 @@ | |
package syscall | |
-import "unsafe" | |
+import ( | |
+ "unsafe" | |
+ "runtime" | |
+) | |
const ImplementsGetwd = true | |
@@ -304,7 +307,7 @@ func Gettimeofday(tv *Timeval) error { | |
return nil | |
} | |
-func Getpagesize() int { return 0x1000 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func Getegid() (egid int) { return -1 } | |
func Geteuid() (euid int) { return -1 } | |
diff --git a/src/syscall/syscall_solaris_amd64.go b/src/syscall/syscall_solaris_amd64.go | |
index 67b8af1..34a5b09 100644 | |
--- a/src/syscall/syscall_solaris_amd64.go | |
+++ b/src/syscall/syscall_solaris_amd64.go | |
@@ -4,7 +4,9 @@ | |
package syscall | |
-func Getpagesize() int { return 4096 } | |
+import "runtime" | |
+ | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } | |
diff --git a/src/syscall/syscall_windows.go b/src/syscall/syscall_windows.go | |
index 1006a9b..0c11168 100644 | |
--- a/src/syscall/syscall_windows.go | |
+++ b/src/syscall/syscall_windows.go | |
@@ -8,6 +8,7 @@ package syscall | |
import ( | |
errorspkg "errors" | |
+ "runtime" | |
"sync" | |
"unicode/utf16" | |
"unsafe" | |
@@ -75,7 +76,7 @@ func UTF16PtrFromString(s string) (*uint16, error) { | |
return &a[0], nil | |
} | |
-func Getpagesize() int { return 4096 } | |
+func Getpagesize() int { return runtime.Physpagesize() } | |
// Errno is the Windows error number. | |
type Errno uintptr |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Testing packages. | |
ok cmd/addr2line 6.849s | |
? cmd/cgo [no test files] | |
ok cmd/fix 0.155s | |
ok cmd/go 1.227s | |
ok cmd/gofmt 0.450s | |
ok cmd/nm 6.570s | |
--- FAIL: TestDisasmExtld (5.85s) | |
objdump_test.go:72: go build fmthello.go: exit status 2 | |
# command-line-arguments | |
/usr/pkg/go14/pkg/tool/netbsd_arm/5l: cannot use -linkmode=external with -H netbsd | |
FAIL | |
FAIL cmd/objdump 17.515s | |
ok cmd/pack 48.155s | |
? cmd/pprof [no test files] | |
? cmd/yacc [no test files] | |
ok archive/tar 3.665s | |
ok archive/zip 10.480s | |
ok bufio 5.701s | |
ok bytes 3.798s | |
ok cmd/internal/goobj 0.021s | |
? cmd/internal/objfile [no test files] | |
? cmd/pprof/internal/commands [no test files] | |
? cmd/pprof/internal/driver [no test files] | |
? cmd/pprof/internal/fetch [no test files] | |
? cmd/pprof/internal/plugin [no test files] | |
? cmd/pprof/internal/profile [no test files] | |
? cmd/pprof/internal/report [no test files] | |
? cmd/pprof/internal/svg [no test files] | |
? cmd/pprof/internal/symbolizer [no test files] | |
? cmd/pprof/internal/symbolz [no test files] | |
? cmd/pprof/internal/tempfile [no test files] | |
ok compress/bzip2 2.451s | |
ok compress/flate 12.487s | |
ok compress/gzip 0.076s | |
ok compress/lzw 1.454s | |
ok compress/zlib 21.144s | |
ok container/heap 0.021s | |
ok container/list 0.024s | |
ok container/ring 0.080s | |
? crypto [no test files] | |
ok crypto/aes 1.480s | |
ok crypto/cipher 1.750s | |
ok crypto/des 0.171s | |
ok crypto/dsa 0.081s | |
ok crypto/ecdsa 0.280s | |
ok crypto/elliptic 2.906s | |
ok crypto/hmac 0.025s | |
ok crypto/md5 0.715s | |
ok crypto/rand 0.173s | |
ok crypto/rc4 1.570s | |
ok crypto/rsa 6.331s | |
ok crypto/sha1 0.029s | |
ok crypto/sha256 0.035s | |
ok crypto/sha512 0.077s | |
ok crypto/subtle 0.294s | |
ok crypto/tls 40.249s | |
ok crypto/x509 35.541s | |
? crypto/x509/pkix [no test files] | |
ok database/sql 0.760s | |
ok database/sql/driver 0.019s | |
ok debug/dwarf 0.150s | |
ok debug/elf 0.297s | |
ok debug/gosym 0.020s | |
ok debug/macho 0.034s | |
ok debug/pe 0.129s | |
ok debug/plan9obj 0.022s | |
? encoding [no test files] | |
ok encoding/ascii85 0.093s | |
ok encoding/asn1 0.036s | |
ok encoding/base32 0.035s | |
ok encoding/base64 0.040s | |
ok encoding/binary 0.070s | |
ok encoding/csv 0.038s | |
ok encoding/gob 0.755s | |
ok encoding/hex 0.024s | |
ok encoding/json 1.798s | |
ok encoding/pem 0.031s | |
ok encoding/xml 0.660s | |
ok errors 0.022s | |
ok expvar 1.972s | |
ok flag 1.020s | |
ok fmt 0.917s | |
ok go/ast 0.240s | |
ok go/build 1.696s | |
ok go/doc 0.562s | |
ok go/format 0.086s | |
ok go/parser 0.489s | |
ok go/printer 6.138s | |
ok go/scanner 0.037s | |
ok go/token 1.929s | |
? hash [no test files] | |
ok hash/adler32 0.090s | |
ok hash/crc32 0.259s | |
ok hash/crc64 0.019s | |
ok hash/fnv 0.096s | |
ok html 0.030s | |
ok html/template 1.270s | |
ok image 1.233s | |
ok image/color 0.400s | |
? image/color/palette [no test files] | |
ok image/draw 3.631s | |
ok image/gif 1.913s | |
ok image/jpeg 5.106s | |
ok image/png 1.268s | |
ok index/suffixarray 0.832s | |
ok io 1.170s | |
ok io/ioutil 0.080s | |
ok log 0.052s | |
ok log/syslog 2.573s | |
ok math 1.556s | |
ok math/big 7.557s | |
ok math/cmplx 2.580s | |
ok math/rand 5.697s | |
ok mime 0.080s | |
ok mime/multipart 2.852s | |
ok net 12.991s | |
ok net/http 50.390s | |
ok net/http/cgi 2.723s | |
ok net/http/cookiejar 0.065s | |
ok net/http/fcgi 0.047s | |
ok net/http/httptest 0.084s | |
ok net/http/httputil 0.779s | |
ok net/http/internal 1.921s | |
? net/http/pprof [no test files] | |
ok net/mail 0.855s | |
ok net/rpc 1.970s | |
ok net/rpc/jsonrpc 0.980s | |
ok net/smtp 0.968s | |
ok net/textproto 0.049s | |
ok net/url 0.096s | |
ok os 10.976s | |
ok os/exec 2.821s | |
*** Test killed: ran too long (11m0s). | |
FAIL os/signal 665.024s | |
ok os/user 0.029s | |
ok path 0.025s | |
ok path/filepath 3.123s | |
ok reflect 4.938s | |
ok regexp 3.498s | |
ok regexp/syntax 8.250s | |
--- FAIL: TestCgoSignalDeadlock (8.21s) | |
crash_cgo_test.go:27: expected "OK\n", but got "runtime/cgo: pthread_create failed: Cannot allocate memory\nSIGABRT: abort\nPC=0x402d6c90\n\ngoroutine 0 [idle]:\n\ngoroutine 1 [sleep]:\nmain.main()\n\t/tmp/go-build213742069/main.go:46 +0x15c\n\ngoroutine 5 [running]:\n\tgoroutine running on other thread; stack unavailable\ncreated by main.main\n\t/tmp/go-build213742069/main.go:35 +0xd4\n\ngoroutine 17 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 18 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 19 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 20 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 7 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 8 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 9 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 10 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 33 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 34 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 21 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 22 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 11 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 12 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 49 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 50 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 51 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 52 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 35 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 36 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 53 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 54 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 37 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 38 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 55 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 56 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 57 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 58 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 59 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 60 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 23 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 24 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 61 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 62 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 63 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 64 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 65 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 66 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 81 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 82 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 67 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 68 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 69 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 70 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 13 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 14 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 71 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 72 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 73 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 74 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 75 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 76 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 15 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 16 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 97 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 98 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 99 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 100 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 83 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 84 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 101 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 102 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 85 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 86 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 77 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 78 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 39 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 40 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 103 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 104 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 41 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 42 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 87 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 88 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 79 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 80 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 25 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 26 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 113 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 114 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 43 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 44 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 105 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 106 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 115 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 116 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 117 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 118 [select (no cases), locked to thread]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:44 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ngoroutine 45 [select (no cases), locked to thread]:\nmain.func·004()\n\t/tmp/go-build213742069/main.go:40 +0x20\ncreated by main.main\n\t/tmp/go-build213742069/main.go:41 +0x124\n\ngoroutine 46 [runnable]:\nmain.func·005()\n\t/tmp/go-build213742069/main.go:42\ncreated by main.main\n\t/tmp/go-build213742069/main.go:45 +0x144\n\ntrap 0x0\nerror 0x0\noldmask 0x0\nr0 0x0\nr1 0x0\nr2 0x0\nr3 0x10\nr4 0x7dc51e50\nr5 0x130000\nr6 0x71b02060\nr7 0x50612000\nr8 0x50792900\nr9 0x0\nruntime/cgo: pthread_create failed: Cannot allocate memory\nr10 0x50944460" | |
panic: test timed out after 10m0s | |
goroutine 490 [running]: | |
testing.func·008() | |
/usr/pkg/go14/src/testing/testing.go:681 +0x11c | |
created by time.goFunc | |
/usr/pkg/go14/src/time/sleep.go:129 +0x50 | |
goroutine 1 [chan receive, 7 minutes]: | |
testing.RunTests(0x223f08, 0x2b3880, 0x7b, 0x7b, 0x20500) | |
/usr/pkg/go14/src/testing/testing.go:556 +0x814 | |
testing.(*M).Run(0x503dc000, 0x2b8768) | |
/usr/pkg/go14/src/testing/testing.go:485 +0x74 | |
main.main() | |
runtime/_test/_testmain.go:732 +0x1b4 | |
goroutine 485 [syscall, 7 minutes]: | |
syscall.Syscall6(0x1c1, 0x159f, 0x50fefc34, 0x0, 0x503ed260, 0x0, 0x0, 0x50fefc18, 0x122f48, 0x4) | |
/usr/pkg/go14/src/syscall/asm_netbsd_arm.s:39 +0x8 | |
syscall.wait4(0x159f, 0x50fefc34, 0x0, 0x503ed260, 0x60, 0x0, 0x0) | |
/usr/pkg/go14/src/syscall/zsyscall_netbsd_arm.go:32 +0x6c | |
syscall.Wait4(0x159f, 0x50fefc58, 0x0, 0x503ed260, 0x503d9470, 0x0, 0x0) | |
/usr/pkg/go14/src/syscall/syscall_bsd.go:162 +0x5c | |
os.(*Process).wait(0x503d9540, 0x1, 0x0, 0x0) | |
/usr/pkg/go14/src/os/exec_unix.go:22 +0xd4 | |
os.(*Process).Wait(0x503d9540, 0x503d9480, 0x0, 0x0) | |
/usr/pkg/go14/src/os/doc.go:45 +0x34 | |
os/exec.(*Cmd).Wait(0x50c35040, 0x0, 0x0) | |
/usr/pkg/go14/src/os/exec/exec.go:364 +0x194 | |
os/exec.(*Cmd).Run(0x50c35040, 0x0, 0x0) | |
/usr/pkg/go14/src/os/exec/exec.go:246 +0x68 | |
os/exec.(*Cmd).CombinedOutput(0x50c35040, 0x0, 0x0, 0x0, 0x0, 0x0) | |
/usr/pkg/go14/src/os/exec/exec.go:408 +0x2b4 | |
runtime_test.executeTest(0x503ecf60, 0x228110, 0x32c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0) | |
/usr/pkg/go14/src/runtime/crash_test.go:64 +0xc38 | |
runtime_test.TestCgoExternalThreadSIGPROF(0x503ecf60) | |
/usr/pkg/go14/src/runtime/crash_cgo_test.go:71 +0x33c | |
testing.tRunner(0x503ecf60, 0x2b3934) | |
/usr/pkg/go14/src/testing/testing.go:447 +0xf4 | |
created by testing.RunTests | |
/usr/pkg/go14/src/testing/testing.go:555 +0x7e0 | |
goroutine 489 [syscall, 7 minutes]: | |
syscall.Syscall(0x3, 0x4, 0x50f94000, 0x200, 0x1, 0x2be94, 0x703a2000) | |
/usr/pkg/go14/src/syscall/asm_netbsd_arm.s:17 +0x8 | |
syscall.read(0x4, 0x50f94000, 0x200, 0x200, 0x503be900, 0x0, 0x0) | |
/usr/pkg/go14/src/syscall/zsyscall_netbsd_arm.go:872 +0x80 | |
syscall.Read(0x4, 0x50f94000, 0x200, 0x200, 0x0, 0x0, 0x0) | |
/usr/pkg/go14/src/syscall/syscall_unix.go:136 +0x54 | |
os.(*File).read(0x503bca80, 0x50f94000, 0x200, 0x200, 0x50f94000, 0x0, 0x0) | |
/usr/pkg/go14/src/os/file_unix.go:191 +0x5c | |
os.(*File).Read(0x503bca80, 0x50f94000, 0x200, 0x200, 0x1, 0x0, 0x0) | |
/usr/pkg/go14/src/os/file.go:95 +0x80 | |
bytes.(*Buffer).ReadFrom(0x503ed200, 0x703b3ca8, 0x503bca80, 0x0, 0x0, 0x0, 0x0) | |
/usr/pkg/go14/src/bytes/buffer.go:169 +0x294 | |
io.Copy(0x703b3c78, 0x503ed200, 0x703b3ca8, 0x503bca80, 0x0, 0x0, 0x0, 0x0) | |
/usr/pkg/go14/src/io/io.go:358 +0x124 | |
os/exec.func·003(0x0, 0x0) | |
/usr/pkg/go14/src/os/exec/exec.go:221 +0x9c | |
os/exec.func·004(0x503d9470) | |
/usr/pkg/go14/src/os/exec/exec.go:328 +0x2c | |
created by os/exec.(*Cmd).Start | |
/usr/pkg/go14/src/os/exec/exec.go:320 +0xa50 | |
FAIL runtime 600.268s | |
? runtime/cgo [no test files] | |
ok runtime/debug 0.049s | |
ok runtime/pprof 23.288s | |
? runtime/race [no test files] | |
ok sort 4.069s | |
ok strconv 8.643s | |
ok strings 2.345s | |
ok sync 1.047s | |
ok sync/atomic 10.117s | |
--- FAIL: TestPassFD (0.03s) | |
syscall_unix_test.go:131: child process ReadAll: "", <nil>; want "Hello from child process!\n" | |
FAIL | |
FAIL syscall 0.056s | |
ok testing 2.275s | |
? testing/iotest [no test files] | |
ok testing/quick 0.307s | |
ok text/scanner 0.091s | |
ok text/tabwriter 0.041s | |
ok text/template 0.361s | |
ok text/template/parse 0.763s | |
ok time 9.153s | |
ok unicode 0.024s | |
ok unicode/utf16 0.220s | |
ok unicode/utf8 0.312s | |
? unsafe [no test files] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment