mirror of
https://github.com/golang/go
synced 2024-11-18 18:34:40 -07:00
runtime: fix build (panic) for FreeBSD
R=adg CC=golang-dev https://golang.org/cl/867046
This commit is contained in:
parent
5963dbac08
commit
c60d048594
@ -1,4 +1,4 @@
|
|||||||
// godefs freebsd/defs.c
|
// godefs defs.c
|
||||||
|
|
||||||
// MACHINE GENERATED - DO NOT EDIT.
|
// MACHINE GENERATED - DO NOT EDIT.
|
||||||
|
|
||||||
@ -16,6 +16,50 @@ enum {
|
|||||||
UMTX_OP_WAIT = 0x2,
|
UMTX_OP_WAIT = 0x2,
|
||||||
UMTX_OP_WAKE = 0x3,
|
UMTX_OP_WAKE = 0x3,
|
||||||
EINTR = 0x4,
|
EINTR = 0x4,
|
||||||
|
SIGHUP = 0x1,
|
||||||
|
SIGINT = 0x2,
|
||||||
|
SIGQUIT = 0x3,
|
||||||
|
SIGILL = 0x4,
|
||||||
|
SIGTRAP = 0x5,
|
||||||
|
SIGABRT = 0x6,
|
||||||
|
SIGEMT = 0x7,
|
||||||
|
SIGFPE = 0x8,
|
||||||
|
SIGKILL = 0x9,
|
||||||
|
SIGBUS = 0xa,
|
||||||
|
SIGSEGV = 0xb,
|
||||||
|
SIGSYS = 0xc,
|
||||||
|
SIGPIPE = 0xd,
|
||||||
|
SIGALRM = 0xe,
|
||||||
|
SIGTERM = 0xf,
|
||||||
|
SIGURG = 0x10,
|
||||||
|
SIGSTOP = 0x11,
|
||||||
|
SIGTSTP = 0x12,
|
||||||
|
SIGCONT = 0x13,
|
||||||
|
SIGCHLD = 0x14,
|
||||||
|
SIGTTIN = 0x15,
|
||||||
|
SIGTTOU = 0x16,
|
||||||
|
SIGIO = 0x17,
|
||||||
|
SIGXCPU = 0x18,
|
||||||
|
SIGXFSZ = 0x19,
|
||||||
|
SIGVTALRM = 0x1a,
|
||||||
|
SIGPROF = 0x1b,
|
||||||
|
SIGWINCH = 0x1c,
|
||||||
|
SIGINFO = 0x1d,
|
||||||
|
SIGUSR1 = 0x1e,
|
||||||
|
SIGUSR2 = 0x1f,
|
||||||
|
FPE_INTDIV = 0x2,
|
||||||
|
FPE_INTOVF = 0x1,
|
||||||
|
FPE_FLTDIV = 0x3,
|
||||||
|
FPE_FLTOVF = 0x4,
|
||||||
|
FPE_FLTUND = 0x5,
|
||||||
|
FPE_FLTRES = 0x6,
|
||||||
|
FPE_FLTINV = 0x7,
|
||||||
|
FPE_FLTSUB = 0x8,
|
||||||
|
BUS_ADRALN = 0x1,
|
||||||
|
BUS_ADRERR = 0x2,
|
||||||
|
BUS_OBJERR = 0x3,
|
||||||
|
SEGV_MAPERR = 0x1,
|
||||||
|
SEGV_ACCERR = 0x2,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
@ -109,9 +153,7 @@ struct Mcontext {
|
|||||||
int32 mc_ownedfp;
|
int32 mc_ownedfp;
|
||||||
int32 mc_spare1[1];
|
int32 mc_spare1[1];
|
||||||
int32 mc_fpstate[128];
|
int32 mc_fpstate[128];
|
||||||
int32 mc_fsbase;
|
int32 mc_spare2[8];
|
||||||
int32 mc_gsbase;
|
|
||||||
int32 mc_spare2[6];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct Ucontext Ucontext;
|
typedef struct Ucontext Ucontext;
|
||||||
|
@ -49,6 +49,8 @@ sighandler(int32 sig, Siginfo* info, void* context)
|
|||||||
{
|
{
|
||||||
Ucontext *uc;
|
Ucontext *uc;
|
||||||
Mcontext *r;
|
Mcontext *r;
|
||||||
|
G *gp;
|
||||||
|
uintptr *sp;
|
||||||
|
|
||||||
uc = context;
|
uc = context;
|
||||||
r = &uc->uc_mcontext;
|
r = &uc->uc_mcontext;
|
||||||
|
@ -16,6 +16,50 @@ enum {
|
|||||||
UMTX_OP_WAIT = 0x2,
|
UMTX_OP_WAIT = 0x2,
|
||||||
UMTX_OP_WAKE = 0x3,
|
UMTX_OP_WAKE = 0x3,
|
||||||
EINTR = 0x4,
|
EINTR = 0x4,
|
||||||
|
SIGHUP = 0x1,
|
||||||
|
SIGINT = 0x2,
|
||||||
|
SIGQUIT = 0x3,
|
||||||
|
SIGILL = 0x4,
|
||||||
|
SIGTRAP = 0x5,
|
||||||
|
SIGABRT = 0x6,
|
||||||
|
SIGEMT = 0x7,
|
||||||
|
SIGFPE = 0x8,
|
||||||
|
SIGKILL = 0x9,
|
||||||
|
SIGBUS = 0xa,
|
||||||
|
SIGSEGV = 0xb,
|
||||||
|
SIGSYS = 0xc,
|
||||||
|
SIGPIPE = 0xd,
|
||||||
|
SIGALRM = 0xe,
|
||||||
|
SIGTERM = 0xf,
|
||||||
|
SIGURG = 0x10,
|
||||||
|
SIGSTOP = 0x11,
|
||||||
|
SIGTSTP = 0x12,
|
||||||
|
SIGCONT = 0x13,
|
||||||
|
SIGCHLD = 0x14,
|
||||||
|
SIGTTIN = 0x15,
|
||||||
|
SIGTTOU = 0x16,
|
||||||
|
SIGIO = 0x17,
|
||||||
|
SIGXCPU = 0x18,
|
||||||
|
SIGXFSZ = 0x19,
|
||||||
|
SIGVTALRM = 0x1a,
|
||||||
|
SIGPROF = 0x1b,
|
||||||
|
SIGWINCH = 0x1c,
|
||||||
|
SIGINFO = 0x1d,
|
||||||
|
SIGUSR1 = 0x1e,
|
||||||
|
SIGUSR2 = 0x1f,
|
||||||
|
FPE_INTDIV = 0x2,
|
||||||
|
FPE_INTOVF = 0x1,
|
||||||
|
FPE_FLTDIV = 0x3,
|
||||||
|
FPE_FLTOVF = 0x4,
|
||||||
|
FPE_FLTUND = 0x5,
|
||||||
|
FPE_FLTRES = 0x6,
|
||||||
|
FPE_FLTINV = 0x7,
|
||||||
|
FPE_FLTSUB = 0x8,
|
||||||
|
BUS_ADRALN = 0x1,
|
||||||
|
BUS_ADRERR = 0x2,
|
||||||
|
BUS_OBJERR = 0x3,
|
||||||
|
SEGV_MAPERR = 0x1,
|
||||||
|
SEGV_ACCERR = 0x2,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
|
@ -57,6 +57,8 @@ sighandler(int32 sig, Siginfo* info, void* context)
|
|||||||
{
|
{
|
||||||
Ucontext *uc;
|
Ucontext *uc;
|
||||||
Mcontext *r;
|
Mcontext *r;
|
||||||
|
G *gp;
|
||||||
|
uintptr *sp;
|
||||||
|
|
||||||
uc = context;
|
uc = context;
|
||||||
r = &uc->uc_mcontext;
|
r = &uc->uc_mcontext;
|
||||||
@ -98,7 +100,7 @@ sighandler(int32 sig, Siginfo* info, void* context)
|
|||||||
if(gotraceback()){
|
if(gotraceback()){
|
||||||
traceback((void*)r->mc_rip, (void*)r->mc_rsp, 0, (void*)r->mc_r15);
|
traceback((void*)r->mc_rip, (void*)r->mc_rsp, 0, (void*)r->mc_r15);
|
||||||
tracebackothers((void*)r->mc_r15);
|
tracebackothers((void*)r->mc_r15);
|
||||||
dumpregs(mc);
|
dumpregs(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
breakpoint();
|
breakpoint();
|
||||||
|
@ -1 +1,5 @@
|
|||||||
int32 thr_new(ThrParam*, int32);
|
int32 thr_new(ThrParam*, int32);
|
||||||
|
void sigpanic(void);
|
||||||
|
void sigaltstack(Sigaltstack*, Sigaltstack*);
|
||||||
|
struct sigaction;
|
||||||
|
void sigaction(int32, struct sigaction*, struct sigaction*);
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
#include "runtime.h"
|
#include "runtime.h"
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
#include "signals.h"
|
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
|
||||||
extern SigTab sigtab[];
|
extern SigTab sigtab[];
|
||||||
|
extern int32 sys_umtx_op(uint32*, int32, uint32, void*, void*);
|
||||||
|
|
||||||
// FreeBSD's umtx_op syscall is effectively the same as Linux's futex, and
|
// FreeBSD's umtx_op syscall is effectively the same as Linux's futex, and
|
||||||
// thus the code is largely similar. See linux/thread.c for comments.
|
// thus the code is largely similar. See linux/thread.c for comments.
|
||||||
@ -102,7 +102,7 @@ unlock(Lock *l)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
destroylock(Lock *l)
|
destroylock(Lock*)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,8 +22,6 @@ gotraceback(void)
|
|||||||
void
|
void
|
||||||
panic(int32 unused)
|
panic(int32 unused)
|
||||||
{
|
{
|
||||||
uint8 *sp;
|
|
||||||
|
|
||||||
fd = 2;
|
fd = 2;
|
||||||
if(panicking) {
|
if(panicking) {
|
||||||
printf("double panic\n");
|
printf("double panic\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user