]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix sigaction struct on freebsd
authorJoel Sing <jsing@google.com>
Sun, 17 Feb 2013 16:23:29 +0000 (03:23 +1100)
committerJoel Sing <jsing@google.com>
Sun, 17 Feb 2013 16:23:29 +0000 (03:23 +1100)
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

src/pkg/runtime/signal_freebsd_386.c
src/pkg/runtime/signal_freebsd_amd64.c
src/pkg/runtime/signal_freebsd_arm.c

index 3fbfee3f5c5c2bc629cae9d104b5a48eccf7dfa7..f9c8f91223582fa0fd43c9ba40874949e0c6e367 100644 (file)
@@ -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;
index 443e30cf865f778ea45b8ba48e65a212f213cacd..475e69c1dfb7ecd78cb14d44daf6813283b6bf3e 100644 (file)
@@ -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;
index 6cd532d6cbbe1cb86bdcaca819d82b4c88a8846b..5b8ad5f173378c2758697949f07c1af409ffa0c7 100644 (file)
@@ -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;