}
// sp is not within gsignal stack, g0 stack, or sigaltstack. Bad.
+ // Call indirectly to avoid nosplit stack overflow on OpenBSD.
+ adjustSignalStack2Indirect(sig, sp, mp, st.ss_flags&_SS_DISABLE != 0)
+ return false
+}
+
+var adjustSignalStack2Indirect = adjustSignalStack2
+
+//go:nosplit
+func adjustSignalStack2(sig uint32, sp uintptr, mp *m, ssDisable bool) {
setg(nil)
needm(true)
- if st.ss_flags&_SS_DISABLE != 0 {
+ if ssDisable {
noSignalStack(sig)
} else {
sigNotOnStack(sig, sp, mp)
}
dropm()
- return false
}
// crashing is the number of m's we have waited for when implementing