From db89e19d26f4e4d4aaf7a5c1873d532e9d8f6bac Mon Sep 17 00:00:00 2001 From: Anthony Martin Date: Thu, 6 Jan 2011 11:36:47 -0500 Subject: [PATCH] runtime/cgo: fix stackguard on FreeBSD/amd64 A cursory reading of the cgo code suggests this should be necessary, though I don't have access to a FreeBSD machine for testing. R=rsc, adg CC=golang-dev https://golang.org/cl/3746047 --- src/pkg/runtime/cgo/freebsd_amd64.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pkg/runtime/cgo/freebsd_amd64.c b/src/pkg/runtime/cgo/freebsd_amd64.c index a02fbf1519d..fe6ce391f3f 100644 --- a/src/pkg/runtime/cgo/freebsd_amd64.c +++ b/src/pkg/runtime/cgo/freebsd_amd64.c @@ -37,6 +37,12 @@ threadentry(void *v) ts.g->stackbase = (uintptr)&ts; + /* + * libcgo_sys_thread_start set stackguard to stack size; + * change to actual guard pointer. + */ + ts.g->stackguard = (uintptr)&ts - ts.g->stackguard + 4096; + /* * Set specific keys. On FreeBSD/ELF, the thread local storage * is just before %fs:0. Our dynamic 6.out's reserve 16 bytes