diff options
| author | Clément Chigot <clement.chigot@atos.net> | 2019-03-25 10:34:57 +0100 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2019-04-02 16:03:24 +0000 |
| commit | 3aacfce6cf7e5f0346906e5236433852f4075368 (patch) | |
| tree | b10b2a53bdadfeaf2afc60e2a1e5c018112a319b /src/runtime | |
| parent | 56517216c052649daab6c439f386f9dc02e90c3a (diff) | |
| download | go-3aacfce6cf7e5f0346906e5236433852f4075368.tar.xz | |
runtime, cmd/dist, misc/cgo: enable c-archive for aix/ppc64
Change-Id: Ib9a40d5596f5735a00483e2d2db965402f05671b
Reviewed-on: https://go-review.googlesource.com/c/go/+/169120
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/os3_solaris.go | 1 | ||||
| -rw-r--r-- | src/runtime/os_aix.go | 8 | ||||
| -rw-r--r-- | src/runtime/os_dragonfly.go | 1 | ||||
| -rw-r--r-- | src/runtime/os_freebsd.go | 1 | ||||
| -rw-r--r-- | src/runtime/os_linux.go | 1 | ||||
| -rw-r--r-- | src/runtime/os_netbsd.go | 1 | ||||
| -rw-r--r-- | src/runtime/os_openbsd.go | 1 | ||||
| -rw-r--r-- | src/runtime/signal_darwin_386.go | 1 | ||||
| -rw-r--r-- | src/runtime/signal_darwin_amd64.go | 1 | ||||
| -rw-r--r-- | src/runtime/signal_darwin_arm.go | 1 | ||||
| -rw-r--r-- | src/runtime/signal_darwin_arm64.go | 1 | ||||
| -rw-r--r-- | src/runtime/signal_unix.go | 1 |
12 files changed, 19 insertions, 0 deletions
diff --git a/src/runtime/os3_solaris.go b/src/runtime/os3_solaris.go index 11d2c9b098..b5f8a7c042 100644 --- a/src/runtime/os3_solaris.go +++ b/src/runtime/os3_solaris.go @@ -273,6 +273,7 @@ func sigdelset(mask *sigset, i int) { mask.__sigbits[(i-1)/32] &^= 1 << ((uint32(i) - 1) & 31) } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { } diff --git a/src/runtime/os_aix.go b/src/runtime/os_aix.go index faec9ac113..197869f989 100644 --- a/src/runtime/os_aix.go +++ b/src/runtime/os_aix.go @@ -296,7 +296,15 @@ func setSignalstackSP(s *stackt, sp uintptr) { *(*uintptr)(unsafe.Pointer(&s.ss_sp)) = sp } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { + switch sig { + case _SIGPIPE: + // For SIGPIPE, c.sigcode() isn't set to _SI_USER as on Linux. + // Therefore, raisebadsignal won't raise SIGPIPE again if + // it was deliver in a non-Go thread. + c.set_sigcode(_SI_USER) + } } //go:nosplit diff --git a/src/runtime/os_dragonfly.go b/src/runtime/os_dragonfly.go index eb7e159d35..4fda7ea806 100644 --- a/src/runtime/os_dragonfly.go +++ b/src/runtime/os_dragonfly.go @@ -252,6 +252,7 @@ func sigdelset(mask *sigset, i int) { mask.__bits[(i-1)/32] &^= 1 << ((uint32(i) - 1) & 31) } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { } diff --git a/src/runtime/os_freebsd.go b/src/runtime/os_freebsd.go index ba0afa23bf..cbb72cf55e 100644 --- a/src/runtime/os_freebsd.go +++ b/src/runtime/os_freebsd.go @@ -365,6 +365,7 @@ func sigdelset(mask *sigset, i int) { mask.__bits[(i-1)/32] &^= 1 << ((uint32(i) - 1) & 31) } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { } diff --git a/src/runtime/os_linux.go b/src/runtime/os_linux.go index 8f3afe0577..a817020c90 100644 --- a/src/runtime/os_linux.go +++ b/src/runtime/os_linux.go @@ -395,6 +395,7 @@ func setSignalstackSP(s *stackt, sp uintptr) { *(*uintptr)(unsafe.Pointer(&s.ss_sp)) = sp } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { } diff --git a/src/runtime/os_netbsd.go b/src/runtime/os_netbsd.go index fa3c9fa649..da024cd309 100644 --- a/src/runtime/os_netbsd.go +++ b/src/runtime/os_netbsd.go @@ -328,6 +328,7 @@ func sigdelset(mask *sigset, i int) { mask.__bits[(i-1)/32] &^= 1 << ((uint32(i) - 1) & 31) } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { } diff --git a/src/runtime/os_openbsd.go b/src/runtime/os_openbsd.go index 42fe315bcd..2d6334ec86 100644 --- a/src/runtime/os_openbsd.go +++ b/src/runtime/os_openbsd.go @@ -302,6 +302,7 @@ func sigdelset(mask *sigset, i int) { *mask &^= 1 << (uint32(i) - 1) } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { } diff --git a/src/runtime/signal_darwin_386.go b/src/runtime/signal_darwin_386.go index c162959c12..3dc5334997 100644 --- a/src/runtime/signal_darwin_386.go +++ b/src/runtime/signal_darwin_386.go @@ -40,6 +40,7 @@ func (c *sigctxt) set_esp(x uint32) { c.regs().esp = x } func (c *sigctxt) set_sigcode(x uint32) { c.info.si_code = int32(x) } func (c *sigctxt) set_sigaddr(x uint32) { c.info.si_addr = x } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { switch sig { case _SIGTRAP: diff --git a/src/runtime/signal_darwin_amd64.go b/src/runtime/signal_darwin_amd64.go index 40de4812b8..abc212ad51 100644 --- a/src/runtime/signal_darwin_amd64.go +++ b/src/runtime/signal_darwin_amd64.go @@ -48,6 +48,7 @@ func (c *sigctxt) set_rsp(x uint64) { c.regs().rsp = x } func (c *sigctxt) set_sigcode(x uint64) { c.info.si_code = int32(x) } func (c *sigctxt) set_sigaddr(x uint64) { c.info.si_addr = x } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { switch sig { case _SIGTRAP: diff --git a/src/runtime/signal_darwin_arm.go b/src/runtime/signal_darwin_arm.go index 9a5d3ac5bb..9098b1053d 100644 --- a/src/runtime/signal_darwin_arm.go +++ b/src/runtime/signal_darwin_arm.go @@ -50,6 +50,7 @@ func (c *sigctxt) set_r10(x uint32) { c.regs().r[10] = x } func (c *sigctxt) set_sigcode(x uint32) { c.info.si_code = int32(x) } func (c *sigctxt) set_sigaddr(x uint32) { c.info.si_addr = x } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { switch sig { case _SIGTRAP: diff --git a/src/runtime/signal_darwin_arm64.go b/src/runtime/signal_darwin_arm64.go index 41b8fcaab9..690ffe4ae2 100644 --- a/src/runtime/signal_darwin_arm64.go +++ b/src/runtime/signal_darwin_arm64.go @@ -67,6 +67,7 @@ func (c *sigctxt) set_sigaddr(x uint64) { c.info.si_addr = (*byte)(unsafe.Pointer(uintptr(x))) } +//go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { switch sig { case _SIGTRAP: diff --git a/src/runtime/signal_unix.go b/src/runtime/signal_unix.go index 8814f7836d..1dd56989b4 100644 --- a/src/runtime/signal_unix.go +++ b/src/runtime/signal_unix.go @@ -296,6 +296,7 @@ func sigtrampgo(sig uint32, info *siginfo, ctx unsafe.Pointer) { sigprofNonGoPC(c.sigpc()) return } + c.fixsigcode(sig) badsignal(uintptr(sig), c) return } |
