diff options
author | Ian Lance Taylor <iant@golang.org> | 2015-07-27 10:41:41 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2015-07-28 05:41:27 +0000 |
commit | d7223c6cc162d89d56b3a23902033aaa93f052db (patch) | |
tree | 47c12189ed926a9df9c941cb6cdcc21a5fa45454 /src/runtime/os3_solaris.go | |
parent | d1cf5b899d2c60c480955101ec37e0f70f128711 (diff) | |
download | go-d7223c6cc162d89d56b3a23902033aaa93f052db.tar.gz go-d7223c6cc162d89d56b3a23902033aaa93f052db.zip |
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 <rsc@golang.org>
Diffstat (limited to 'src/runtime/os3_solaris.go')
-rw-r--r-- | src/runtime/os3_solaris.go | 5 |
1 files changed, 4 insertions, 1 deletions
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 |