]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix build (panic) for FreeBSD
authorRuss Cox <rsc@golang.org>
Fri, 9 Apr 2010 04:13:42 +0000 (21:13 -0700)
committerRuss Cox <rsc@golang.org>
Fri, 9 Apr 2010 04:13:42 +0000 (21:13 -0700)
R=adg
CC=golang-dev
https://golang.org/cl/867046

src/pkg/runtime/freebsd/386/defs.h
src/pkg/runtime/freebsd/386/signal.c
src/pkg/runtime/freebsd/amd64/defs.h
src/pkg/runtime/freebsd/amd64/signal.c
src/pkg/runtime/freebsd/os.h
src/pkg/runtime/freebsd/thread.c
src/pkg/runtime/runtime.c

index df1d32a3906c2c5887c962b97d826dca3fc00558..69b8661eb03351846a754742881d852027d47fd0 100644 (file)
@@ -1,4 +1,4 @@
-// godefs freebsd/defs.c
+// godefs defs.c
 
 // MACHINE GENERATED - DO NOT EDIT.
 
@@ -16,6 +16,50 @@ enum {
        UMTX_OP_WAIT = 0x2,
        UMTX_OP_WAKE = 0x3,
        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
@@ -109,9 +153,7 @@ struct Mcontext {
        int32 mc_ownedfp;
        int32 mc_spare1[1];
        int32 mc_fpstate[128];
-       int32 mc_fsbase;
-       int32 mc_gsbase;
-       int32 mc_spare2[6];
+       int32 mc_spare2[8];
 };
 
 typedef struct Ucontext Ucontext;
index 2483e7d9070ecb183cfab4ef58b12f0c286eb8e3..ec8ac3a7d4dd44b5dee507a91bfc7c4d3c6bcd4c 100644 (file)
@@ -49,6 +49,8 @@ sighandler(int32 sig, Siginfo* info, void* context)
 {
        Ucontext *uc;
        Mcontext *r;
+       G *gp;
+       uintptr *sp;
 
        uc = context;
        r = &uc->uc_mcontext;
index f1ad62411d6ede83977bc6327ae0022b8ba5e299..18b68b3556a514a5684012468da9f36bf5b26dc1 100644 (file)
@@ -16,6 +16,50 @@ enum {
        UMTX_OP_WAIT = 0x2,
        UMTX_OP_WAKE = 0x3,
        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
index ea15922c62961f4fc330682cee7ffffb6543ac5a..ba8a5cfdb57735fafa6eb1d823e31316bb3f3dbd 100644 (file)
@@ -57,6 +57,8 @@ sighandler(int32 sig, Siginfo* info, void* context)
 {
        Ucontext *uc;
        Mcontext *r;
+       G *gp;
+       uintptr *sp;
 
        uc = context;
        r = &uc->uc_mcontext;
@@ -98,7 +100,7 @@ sighandler(int32 sig, Siginfo* info, void* context)
        if(gotraceback()){
                traceback((void*)r->mc_rip, (void*)r->mc_rsp, 0, (void*)r->mc_r15);
                tracebackothers((void*)r->mc_r15);
-               dumpregs(mc);
+               dumpregs(r);
        }
 
        breakpoint();
index 441737865b5192a886d5d218d49c31cb14faf8ac..47bf7d56f806c4457dc0fe0f08c1d7ecc6876b3f 100644 (file)
@@ -1 +1,5 @@
 int32 thr_new(ThrParam*, int32);
+void sigpanic(void);
+void sigaltstack(Sigaltstack*, Sigaltstack*);
+struct sigaction;
+void sigaction(int32, struct sigaction*, struct sigaction*);
index 9ee21c59244d5e2f722d5e7e32d601bd5aefcf75..334043312237c1a98d0c53f66aa188af9905b9e7 100644 (file)
@@ -3,10 +3,10 @@
 
 #include "runtime.h"
 #include "defs.h"
-#include "signals.h"
 #include "os.h"
 
 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
 // thus the code is largely similar. See linux/thread.c for comments.
@@ -102,7 +102,7 @@ unlock(Lock *l)
 }
 
 void
-destroylock(Lock *l)
+destroylock(Lock*)
 {
 }
 
index c2eee60ca43387b6da1f3557296990c4af85a215..67b8b9725e1b522e14c2ffd05a4ed4fb09f5ca56 100644 (file)
@@ -22,8 +22,6 @@ gotraceback(void)
 void
 panic(int32 unused)
 {
-       uint8 *sp;
-
        fd = 2;
        if(panicking) {
                printf("double panic\n");