pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/lang/go14 go14: fix bootstrap for newer openbsd.
details: https://anonhg.NetBSD.org/pkgsrc/rev/86e37b0d5164
branches: trunk
changeset: 394452:86e37b0d5164
user: maya <maya%pkgsrc.org@localhost>
date: Sat Apr 13 23:09:40 2019 +0000
description:
go14: fix bootstrap for newer openbsd.
openbsd requires mapping the stack with MAP_STACK. binaries not doing this
will not run. patch taken from openbsd ports, via sjmulder.
I modified it to use GOOS_openbsd, because other OSes are not provided
an implementation of sysMarkStack.
Bump PKGREVISION.
diffstat:
lang/go14/Makefile | 4 +-
lang/go14/distinfo | 8 +++-
lang/go14/patches/patch-src_runtime_defs__openbsd__386.h | 16 ++++++++
lang/go14/patches/patch-src_runtime_defs__openbsd__amd64.h | 16 ++++++++
lang/go14/patches/patch-src_runtime_malloc.h | 16 ++++++++
lang/go14/patches/patch-src_runtime_mem__openbsd.c | 26 ++++++++++++++
lang/go14/patches/patch-src_runtime_os__openbsd.c | 17 +++++++++
lang/go14/patches/patch-src_runtime_stack.c | 26 ++++++++++++++
8 files changed, 126 insertions(+), 3 deletions(-)
diffs (187 lines):
diff -r f68a2110c56b -r 86e37b0d5164 lang/go14/Makefile
--- a/lang/go14/Makefile Sat Apr 13 14:30:42 2019 +0000
+++ b/lang/go14/Makefile Sat Apr 13 23:09:40 2019 +0000
@@ -1,10 +1,10 @@
-# $NetBSD: Makefile,v 1.17 2018/08/22 09:45:20 wiz Exp $
+# $NetBSD: Makefile,v 1.18 2019/04/13 23:09:40 maya Exp $
.include "../../lang/go/version.mk"
DISTNAME= go${GO14_VERSION}.src
PKGNAME= go14-${GO14_VERSION}
-PKGREVISION= 7
+PKGREVISION= 9
CATEGORIES= lang
MASTER_SITES= https://storage.googleapis.com/golang/
PATCH_SITES= https://codereview.appspot.com/download/
diff -r f68a2110c56b -r 86e37b0d5164 lang/go14/distinfo
--- a/lang/go14/distinfo Sat Apr 13 14:30:42 2019 +0000
+++ b/lang/go14/distinfo Sat Apr 13 23:09:40 2019 +0000
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.10 2018/01/20 20:44:49 christos Exp $
+$NetBSD: distinfo,v 1.11 2019/04/13 23:09:40 maya Exp $
SHA1 (go1.4.3.src.tar.gz) = 486db10dc571a55c8d795365070f66d343458c48
RMD160 (go1.4.3.src.tar.gz) = b1fbb2805a777c8107e7c946f36a881303ac5e35
@@ -38,14 +38,20 @@
SHA1 (patch-src_runtime_debug__netbsd.go) = 3a54698e749dcd362e5fe4284a4c1f59d654b095
SHA1 (patch-src_runtime_defs__netbsd.go) = 5f433bb92bd50707fcde5f941e9ca084eac4f659
SHA1 (patch-src_runtime_defs__netbsd__arm.h) = 150973e3fdb118e11fadea910f7e9f39a70b6067
+SHA1 (patch-src_runtime_defs__openbsd__386.h) = 314a5bdc4ff0ee5f9fb969cdb134fe6183acebb6
+SHA1 (patch-src_runtime_defs__openbsd__amd64.h) = 72335c404604df53b943f3bb3d1088ae784fef0e
+SHA1 (patch-src_runtime_malloc.h) = c41776870b4d95657ad45711b5d921cda4febd29
+SHA1 (patch-src_runtime_mem__openbsd.c) = 2800a500d3bd5bde0bb3a05ac6aec5630b098bca
SHA1 (patch-src_runtime_mgc0.c) = 6cd1a52376efbf3f825fc511044af4a82528eccc
SHA1 (patch-src_runtime_mheap.c) = 646f4ba1abf407936ec6c3c0783dd59922079fe3
SHA1 (patch-src_runtime_netpoll__solaris.c) = ae399518bb02d6b898734a52dfa7fe18f041e1ec
SHA1 (patch-src_runtime_os__netbsd.c) = 8bb3a4612f5693727f66f6d3a16261e9087b01f0
+SHA1 (patch-src_runtime_os__openbsd.c) = a32f610eba883d17140aea8639953f76593266c0
SHA1 (patch-src_runtime_os__solaris.c) = eec5b293fe4a72f58e4cd51cd23ea6e6fce714b6
SHA1 (patch-src_runtime_os__solaris.h) = c0a39aa6ab57eca7056178c87ebb00bb21236499
SHA1 (patch-src_runtime_proc.c) = 0167ab97ea9229f57d21c549201c2d17965e4c69
SHA1 (patch-src_runtime_runtime.h) = ab89a3da0870c346529cfe5b8bda202aba0b59f7
+SHA1 (patch-src_runtime_stack.c) = 6bb75bb7aa725a98d2b39b015e8e5692ed26be24
SHA1 (patch-src_runtime_sys__darwin__386.s) = e352e039bba8435a48b88c76290b245731c299ed
SHA1 (patch-src_runtime_sys__darwin__amd64.s) = 3eccddc8228657db1480393f8476ddd68ac942ff
SHA1 (patch-src_runtime_sys__solaris__amd64.s) = 88f2e3fc43b0d6e4f17ef06d3f4f27cfed3103c6
diff -r f68a2110c56b -r 86e37b0d5164 lang/go14/patches/patch-src_runtime_defs__openbsd__386.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lang/go14/patches/patch-src_runtime_defs__openbsd__386.h Sat Apr 13 23:09:40 2019 +0000
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_runtime_defs__openbsd__386.h,v 1.1 2019/04/13 23:09:40 maya Exp $
+$OpenBSD: patch-src_runtime_defs_openbsd_386_h,v 1.1 2018/04/05 17:47:30 jsing Exp $
+
+OpenBSD 6.4 needs stack pages to be mapped with MAP_STACK.
+
+Index: src/runtime/defs_openbsd_386.h
+--- src/runtime/defs_openbsd_386.h.orig
++++ src/runtime/defs_openbsd_386.h
+@@ -14,6 +14,7 @@ enum {
+ MAP_ANON = 0x1000,
+ MAP_PRIVATE = 0x2,
+ MAP_FIXED = 0x10,
++ MAP_STACK = 0x4000,
+
+ MADV_FREE = 0x6,
+
diff -r f68a2110c56b -r 86e37b0d5164 lang/go14/patches/patch-src_runtime_defs__openbsd__amd64.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lang/go14/patches/patch-src_runtime_defs__openbsd__amd64.h Sat Apr 13 23:09:40 2019 +0000
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_runtime_defs__openbsd__amd64.h,v 1.1 2019/04/13 23:09:40 maya Exp $
+$OpenBSD: patch-src_runtime_defs_openbsd_amd64_h,v 1.1 2018/04/05 17:47:30 jsing Exp $
+
+OpenBSD 6.4 needs stack pages to be mapped with MAP_STACK.
+
+Index: src/runtime/defs_openbsd_amd64.h
+--- src/runtime/defs_openbsd_amd64.h.orig
++++ src/runtime/defs_openbsd_amd64.h
+@@ -14,6 +14,7 @@ enum {
+ MAP_ANON = 0x1000,
+ MAP_PRIVATE = 0x2,
+ MAP_FIXED = 0x10,
++ MAP_STACK = 0x4000,
+
+ MADV_FREE = 0x6,
+
diff -r f68a2110c56b -r 86e37b0d5164 lang/go14/patches/patch-src_runtime_malloc.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lang/go14/patches/patch-src_runtime_malloc.h Sat Apr 13 23:09:40 2019 +0000
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_runtime_malloc.h,v 1.1 2019/04/13 23:09:40 maya Exp $
+$OpenBSD: patch-src_runtime_malloc_h,v 1.1 2018/04/05 17:47:30 jsing Exp $
+
+OpenBSD 6.4 needs stack pages to be mapped with MAP_STACK.
+
+Index: src/runtime/malloc.h
+--- src/runtime/malloc.h.orig
++++ src/runtime/malloc.h
+@@ -197,6 +197,7 @@ struct MLink
+ // if accessed. Used only for debugging the runtime.
+
+ void* runtime·sysAlloc(uintptr nbytes, uint64 *stat);
++void runtime·sysMarkStack(void *v, uintptr nbytes);
+ void runtime·SysFree(void *v, uintptr nbytes, uint64 *stat);
+ void runtime·SysUnused(void *v, uintptr nbytes);
+ void runtime·SysUsed(void *v, uintptr nbytes);
diff -r f68a2110c56b -r 86e37b0d5164 lang/go14/patches/patch-src_runtime_mem__openbsd.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lang/go14/patches/patch-src_runtime_mem__openbsd.c Sat Apr 13 23:09:40 2019 +0000
@@ -0,0 +1,26 @@
+$NetBSD: patch-src_runtime_mem__openbsd.c,v 1.1 2019/04/13 23:09:40 maya Exp $
+$OpenBSD: patch-src_runtime_mem_openbsd_c,v 1.1 2018/04/05 17:47:30 jsing Exp $
+
+OpenBSD 6.4 needs stack pages to be mapped with MAP_STACK.
+
+Index: src/runtime/mem_openbsd.c
+--- src/runtime/mem_openbsd.c.orig
++++ src/runtime/mem_openbsd.c
+@@ -27,6 +27,17 @@ runtime·sysAlloc(uintptr n, uint64 *stat)
+ return v;
+ }
+
++#pragma textflag NOSPLIT
++void
++runtime·sysMarkStack(void *v, uintptr n)
++{
++ void *p;
++
++ p = runtime·mmap(v, n, PROT_READ|PROT_WRITE, MAP_FIXED|MAP_ANON|MAP_PRIVATE|MAP_STACK, -1, 0);
++ if (p == ((void *)-1) || p != v)
++ runtime·throw("runtime: failed to mark stack");
++}
++
+ void
+ runtime·SysUnused(void *v, uintptr n)
+ {
diff -r f68a2110c56b -r 86e37b0d5164 lang/go14/patches/patch-src_runtime_os__openbsd.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lang/go14/patches/patch-src_runtime_os__openbsd.c Sat Apr 13 23:09:40 2019 +0000
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_runtime_os__openbsd.c,v 1.1 2019/04/13 23:09:40 maya Exp $
+$OpenBSD: patch-src_runtime_os_openbsd_c,v 1.1 2018/04/05 17:47:30 jsing Exp $
+
+OpenBSD 6.4 needs stack pages to be mapped with MAP_STACK.
+
+Index: src/runtime/os_openbsd.c
+--- src/runtime/os_openbsd.c.orig
++++ src/runtime/os_openbsd.c
+@@ -167,7 +167,7 @@ runtime·newosproc(M *mp, void *stk)
+
+ param.tf_tcb = (byte*)&mp->tls[0];
+ param.tf_tid = (int32*)&mp->procid;
+- param.tf_stack = stk;
++ param.tf_stack = (void*)((uintptr)stk - 8);
+
+ oset = runtime·sigprocmask(SIG_SETMASK, sigset_all);
+ ret = runtime·tfork(¶m, sizeof(param), mp, mp->g0, runtime·mstart);
diff -r f68a2110c56b -r 86e37b0d5164 lang/go14/patches/patch-src_runtime_stack.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lang/go14/patches/patch-src_runtime_stack.c Sat Apr 13 23:09:40 2019 +0000
@@ -0,0 +1,26 @@
+$NetBSD: patch-src_runtime_stack.c,v 1.1 2019/04/13 23:09:40 maya Exp $
+
+OpenBSD 6.4 needs stack pages to be mapped with MAP_STACK.
+
+--- src/runtime/stack.c.orig 2015-09-23 04:37:37.000000000 +0000
++++ src/runtime/stack.c
+@@ -67,6 +67,9 @@ poolalloc(uint8 order)
+ s = runtime·MHeap_AllocStack(&runtime·mheap, StackCacheSize >> PageShift);
+ if(s == nil)
+ runtime·throw("out of memory");
++#ifdef GOOS_openbsd
++ runtime·sysMarkStack((void *)(s->start << PageShift), s->npages << PageShift);
++#endif
+ if(s->ref != 0)
+ runtime·throw("bad ref");
+ if(s->freelist != nil)
+@@ -246,6 +249,9 @@ runtime·stackalloc(uint32 n)
+ s = runtime·MHeap_AllocStack(&runtime·mheap, ROUND(n, PageSize) >> PageShift);
+ if(s == nil)
+ runtime·throw("out of memory");
++#ifdef GOOS_openbsd
++ runtime·sysMarkStack((void *)(s->start << PageShift), s->npages << PageShift);
++#endif
+ v = (byte*)(s->start<<PageShift);
+ }
+
Home |
Main Index |
Thread Index |
Old Index