From: Ian Lance Taylor Date: Fri, 24 Aug 2018 18:44:55 +0000 (-0700) Subject: [release-branch.go1.11] runtime: mark sigInitIgnored nosplit X-Git-Tag: go1.11 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=41e62b8c49d21659b48a95216e3062032285250f;p=gostls13.git [release-branch.go1.11] runtime: mark sigInitIgnored nosplit The sigInitIgnored function can be called by initsig before a shared library is initialized, before the runtime is initialized. Fixes #27183 Change-Id: I7073767938fc011879d47ea951d63a14d1cce878 Reviewed-on: https://go-review.googlesource.com/131277 Run-TryBot: Ian Lance Taylor Reviewed-by: Austin Clements TryBot-Result: Gobot Gobot (cherry picked from commit d20ecd6e5dab55376ea4f169eed63608f9bb3b2b) Reviewed-on: https://go-review.googlesource.com/131278 Reviewed-by: Brad Fitzpatrick --- diff --git a/src/runtime/sigqueue.go b/src/runtime/sigqueue.go index 9f53240954..a425433b20 100644 --- a/src/runtime/sigqueue.go +++ b/src/runtime/sigqueue.go @@ -237,8 +237,10 @@ func signal_ignore(s uint32) { atomic.Store(&sig.ignored[s/32], i) } -// sigInitIgnored marks the signal as already ignored. This is called at -// program start by siginit. +// sigInitIgnored marks the signal as already ignored. This is called at +// program start by initsig. In a shared library initsig is called by +// libpreinit, so the runtime may not be initialized yet. +//go:nosplit func sigInitIgnored(s uint32) { i := sig.ignored[s/32] i |= 1 << (s & 31)