From 956535f5cbc0808a69e19c1e6953fde2bf012881 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sat, 2 Jan 2016 19:39:37 -0800 Subject: [PATCH] runtime: implement setsigstack for Solaris MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Change-Id: I0280d478b7d0a59d8e2082aa87fab6d7d9f36a18 Reviewed-on: https://go-review.googlesource.com/18158 Reviewed-by: Aram Hăvărneanu --- src/runtime/os3_solaris.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/runtime/os3_solaris.go b/src/runtime/os3_solaris.go index 0e6d2e55da..598beffa09 100644 --- a/src/runtime/os3_solaris.go +++ b/src/runtime/os3_solaris.go @@ -280,7 +280,14 @@ func setsig(i int32, fn uintptr, restart bool) { } func setsigstack(i int32) { - throw("setsigstack") + var sa sigactiont + sigaction(i, nil, &sa) + handler := *((*uintptr)(unsafe.Pointer(&sa._funcptr))) + if handler == 0 || handler == _SIG_DFL || handler == _SIG_IGN || sa.sa_flags&_SA_ONSTACK != 0 { + return + } + sa.sa_flags |= _SA_ONSTACK + sigaction(i, &sa, nil) } func getsig(i int32) uintptr { -- 2.50.0