From: Ian Lance Taylor Date: Mon, 27 Jul 2015 17:41:41 +0000 (-0700) Subject: runtime: correct implementation of raiseproc on Solaris X-Git-Tag: go1.5beta3~34 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d7223c6cc162d89d56b3a23902033aaa93f052db;p=gostls13.git runtime: correct implementation of raiseproc on Solaris I forgot that the libc raise function only sends the signal to the current thread. We need to actually use kill and getpid here, as we do on other systems. Change-Id: Iac34af822c93468bf68cab8879db3ee20891caaf Reviewed-on: https://go-review.googlesource.com/12704 Reviewed-by: Russ Cox --- diff --git a/src/runtime/os3_solaris.go b/src/runtime/os3_solaris.go index 7caa72e3be..d766b7db6d 100644 --- a/src/runtime/os3_solaris.go +++ b/src/runtime/os3_solaris.go @@ -16,7 +16,9 @@ import "unsafe" //go:cgo_import_dynamic libc_exit exit "libc.so" //go:cgo_import_dynamic libc_fstat fstat "libc.so" //go:cgo_import_dynamic libc_getcontext getcontext "libc.so" +//go:cgo_import_dynamic libc_getpid getpid "libc.so" //go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" +//go:cgo_import_dynamic libc_kill kill "libc.so" //go:cgo_import_dynamic libc_madvise madvise "libc.so" //go:cgo_import_dynamic libc_malloc malloc "libc.so" //go:cgo_import_dynamic libc_mmap mmap "libc.so" @@ -449,7 +451,8 @@ func raise(sig int32) /* int32 */ { } func raiseproc(sig int32) /* int32 */ { - sysvicall1(&libc_raise, uintptr(sig)) + pid := sysvicall0(&libc_getpid) + sysvicall2(&libc_kill, pid, uintptr(sig)) } //go:nosplit