]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: implement setsigstack for Solaris
authorIan Lance Taylor <iant@golang.org>
Sun, 3 Jan 2016 03:39:37 +0000 (19:39 -0800)
committerIan Lance Taylor <iant@golang.org>
Mon, 4 Jan 2016 16:33:58 +0000 (16:33 +0000)
Change-Id: I0280d478b7d0a59d8e2082aa87fab6d7d9f36a18
Reviewed-on: https://go-review.googlesource.com/18158
Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
src/runtime/os3_solaris.go

index 0e6d2e55da34868e01762a0b4d82d047e72991ff..598beffa092e512fc05a9c6758210c9ce3a65842 100644 (file)
@@ -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 {