From: Joel Sing Date: Sun, 17 Feb 2013 16:23:29 +0000 (+1100) Subject: runtime: fix sigaction struct on freebsd X-Git-Tag: go1.1rc2~985 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=556dd0bfbd52876933ef0454ca86f492c618f342;p=gostls13.git runtime: fix sigaction struct on freebsd Fix the sa_mask member of the sigaction struct - on FreeBSD this is declared as a sigset_t, which is an array of four unsigned ints. Replace the current int64 with Sigset from defs_freebsd_GOARCH, which has the correct definition. Unbreaks the FreeBSD builds. R=golang-dev, dave, minux.ma CC=golang-dev https://golang.org/cl/7333047 --- diff --git a/src/pkg/runtime/signal_freebsd_386.c b/src/pkg/runtime/signal_freebsd_386.c index 3fbfee3f5c..f9c8f91223 100644 --- a/src/pkg/runtime/signal_freebsd_386.c +++ b/src/pkg/runtime/signal_freebsd_386.c @@ -15,7 +15,7 @@ typedef struct sigaction { void (*__sa_sigaction)(int32, Siginfo*, void *); } __sigaction_u; /* signal handler */ int32 sa_flags; /* see signal options below */ - int64 sa_mask; /* signal mask to apply */ + Sigset sa_mask; /* signal mask to apply */ } Sigaction; void @@ -141,7 +141,10 @@ runtime·setsig(int32 i, void (*fn)(int32, Siginfo*, void*, G*), bool restart) sa.sa_flags = SA_SIGINFO|SA_ONSTACK; if(restart) sa.sa_flags |= SA_RESTART; - sa.sa_mask = ~0ULL; + sa.sa_mask.__bits[0] = ~(uint32)0; + sa.sa_mask.__bits[1] = ~(uint32)0; + sa.sa_mask.__bits[2] = ~(uint32)0; + sa.sa_mask.__bits[3] = ~(uint32)0; if (fn == runtime·sighandler) fn = (void*)runtime·sigtramp; sa.__sigaction_u.__sa_sigaction = (void*)fn; diff --git a/src/pkg/runtime/signal_freebsd_amd64.c b/src/pkg/runtime/signal_freebsd_amd64.c index 443e30cf86..475e69c1df 100644 --- a/src/pkg/runtime/signal_freebsd_amd64.c +++ b/src/pkg/runtime/signal_freebsd_amd64.c @@ -15,7 +15,7 @@ typedef struct sigaction { void (*__sa_sigaction)(int32, Siginfo*, void *); } __sigaction_u; /* signal handler */ int32 sa_flags; /* see signal options below */ - int64 sa_mask; /* signal mask to apply */ + Sigset sa_mask; /* signal mask to apply */ } Sigaction; void @@ -149,7 +149,10 @@ runtime·setsig(int32 i, void (*fn)(int32, Siginfo*, void*, G*), bool restart) sa.sa_flags = SA_SIGINFO|SA_ONSTACK; if(restart) sa.sa_flags |= SA_RESTART; - sa.sa_mask = ~0ULL; + sa.sa_mask.__bits[0] = ~(uint32)0; + sa.sa_mask.__bits[1] = ~(uint32)0; + sa.sa_mask.__bits[2] = ~(uint32)0; + sa.sa_mask.__bits[3] = ~(uint32)0; if (fn == runtime·sighandler) fn = (void*)runtime·sigtramp; sa.__sigaction_u.__sa_sigaction = (void*)fn; diff --git a/src/pkg/runtime/signal_freebsd_arm.c b/src/pkg/runtime/signal_freebsd_arm.c index 6cd532d6cb..5b8ad5f173 100644 --- a/src/pkg/runtime/signal_freebsd_arm.c +++ b/src/pkg/runtime/signal_freebsd_arm.c @@ -55,7 +55,7 @@ typedef struct sigaction { void (*__sa_sigaction)(int32, Siginfo*, void *); } __sigaction_u; /* signal handler */ int32 sa_flags; /* see signal options below */ - int64 sa_mask; /* signal mask to apply */ + Sigset sa_mask; /* signal mask to apply */ } Sigaction; void @@ -164,7 +164,10 @@ runtime·setsig(int32 i, void (*fn)(int32, Siginfo*, void*, G*), bool restart) sa.sa_flags = SA_SIGINFO|SA_ONSTACK; if(restart) sa.sa_flags |= SA_RESTART; - sa.sa_mask = ~0ULL; + sa.sa_mask.__bits[0] = ~(uint32)0; + sa.sa_mask.__bits[1] = ~(uint32)0; + sa.sa_mask.__bits[2] = ~(uint32)0; + sa.sa_mask.__bits[3] = ~(uint32)0; if (fn == runtime·sighandler) fn = (void*)runtime·sigtramp; sa.__sigaction_u.__sa_sigaction = (void*)fn;