mirror of https://github.com/golang/go.git
runtime: unbreak netbsd builds
Fix signal handling so that Go builds on NetBSD. R=golang-dev, r CC=golang-dev https://golang.org/cl/7759048
This commit is contained in:
parent
20c7e41555
commit
e67f198516
|
|
@ -45,7 +45,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *ctxt, G *gp)
|
|||
}
|
||||
|
||||
t = &runtime·sigtab[sig];
|
||||
if(info->si_code != SI_USER && (t->flags & SigPanic)) {
|
||||
if(SIG_CODE0(info, ctxt) != SI_USER && (t->flags & SigPanic)) {
|
||||
if(gp == nil || gp == m->g0)
|
||||
goto Throw;
|
||||
|
||||
|
|
@ -87,7 +87,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *ctxt, G *gp)
|
|||
return;
|
||||
}
|
||||
|
||||
if(info->si_code == SI_USER || (t->flags & SigNotify))
|
||||
if(SIG_CODE0(info, ctxt) == SI_USER || (t->flags & SigNotify))
|
||||
if(runtime·sigsend(sig))
|
||||
return;
|
||||
if(t->flags & SigKill)
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *ctxt, G *gp)
|
|||
}
|
||||
|
||||
t = &runtime·sigtab[sig];
|
||||
if(info->si_code != SI_USER && (t->flags & SigPanic)) {
|
||||
if(SIG_CODE0(info, ctxt) != SI_USER && (t->flags & SigPanic)) {
|
||||
if(gp == nil || gp == m->g0)
|
||||
goto Throw;
|
||||
|
||||
|
|
@ -97,7 +97,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *ctxt, G *gp)
|
|||
return;
|
||||
}
|
||||
|
||||
if(info->si_code == SI_USER || (t->flags & SigNotify))
|
||||
if(SIG_CODE0(info, ctxt) == SI_USER || (t->flags & SigNotify))
|
||||
if(runtime·sigsend(sig))
|
||||
return;
|
||||
if(t->flags & SigKill)
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *ctxt, G *gp)
|
|||
}
|
||||
|
||||
t = &runtime·sigtab[sig];
|
||||
if(info->si_code != SI_USER && (t->flags & SigPanic)) {
|
||||
if(SIG_CODE0(info, ctxt) != SI_USER && (t->flags & SigPanic)) {
|
||||
if(gp == nil || gp == m->g0)
|
||||
goto Throw;
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *ctxt, G *gp)
|
|||
return;
|
||||
}
|
||||
|
||||
if(info->si_code == SI_USER || (t->flags & SigNotify))
|
||||
if(SIG_CODE0(info, ctxt) == SI_USER || (t->flags & SigNotify))
|
||||
if(runtime·sigsend(sig))
|
||||
return;
|
||||
if(t->flags & SigKill)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
#define SIG_REGS(ctxt) (((Ucontext*)(ctxt))->uc_mcontext)
|
||||
#define SIG_REGS(ctxt) (((UcontextT*)(ctxt))->uc_mcontext)
|
||||
|
||||
#define SIG_EAX(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_EAX])
|
||||
#define SIG_EBX(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_EBX])
|
||||
|
|
@ -11,9 +11,9 @@
|
|||
#define SIG_EDI(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_EDI])
|
||||
#define SIG_ESI(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_ESI])
|
||||
#define SIG_EBP(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_EBP])
|
||||
#define SIG_ESP(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_ESP])
|
||||
#define SIG_ESP(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_UESP])
|
||||
#define SIG_EIP(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_EIP])
|
||||
#define SIG_EFLAGS(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_EFLAGS])
|
||||
#define SIG_EFLAGS(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_EFL])
|
||||
|
||||
#define SIG_CS(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_CS])
|
||||
#define SIG_FS(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_FS])
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
#define SIG_REGS(ctxt) (((Ucontext*)(ctxt))->uc_mcontext)
|
||||
#define SIG_REGS(ctxt) (((UcontextT*)(ctxt))->uc_mcontext)
|
||||
|
||||
#define SIG_RAX(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_RAX])
|
||||
#define SIG_RBX(info, ctxt) (SIG_REGS(ctxt).__gregs[REG_RBX])
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
#define SIG_REGS(ctxt) (((Ucontext*)(ctxt))->uc_mcontext)
|
||||
#define SIG_REGS(ctxt) (((UcontextT*)(ctxt))->uc_mcontext)
|
||||
|
||||
#define SIG_R0(info, ctxt) (SIG_REGS(ctxt).__gregs[0])
|
||||
#define SIG_R1(info, ctxt) (SIG_REGS(ctxt).__gregs[1])
|
||||
|
|
|
|||
Loading…
Reference in New Issue