diff options
author | Anthony Martin <ality@pbrane.org> | 2011-01-06 11:36:47 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2011-01-06 11:36:47 -0500 |
commit | db89e19d26f4e4d4aaf7a5c1873d532e9d8f6bac (patch) | |
tree | 4462c107281647a9b6782676980b4b65ab4cf2df | |
parent | 2281ca169cb9f07755d905dec03d2fc7a168094b (diff) | |
download | go-db89e19d26f4e4d4aaf7a5c1873d532e9d8f6bac.tar.gz go-db89e19d26f4e4d4aaf7a5c1873d532e9d8f6bac.zip |
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
-rw-r--r-- | src/pkg/runtime/cgo/freebsd_amd64.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/pkg/runtime/cgo/freebsd_amd64.c b/src/pkg/runtime/cgo/freebsd_amd64.c index a02fbf1519..fe6ce391f3 100644 --- a/src/pkg/runtime/cgo/freebsd_amd64.c +++ b/src/pkg/runtime/cgo/freebsd_amd64.c @@ -38,6 +38,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 * for the two words g and m at %fs:-16 and %fs:-8. |