diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-08-09 22:52:13 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-08-09 22:52:13 -0400 |
commit | 2f437040e7911d9bef239588ea7ed6f4b9102922 (patch) | |
tree | cfb4950352818b7a3ed2f5be9d9425bbb0b7cd3a /src/internal | |
parent | 83b42d94bd1009da6a95052d9ef0edeb1c73c8e4 (diff) | |
download | musl-2f437040e7911d9bef239588ea7ed6f4b9102922.tar.gz musl-2f437040e7911d9bef239588ea7ed6f4b9102922.tar.bz2 musl-2f437040e7911d9bef239588ea7ed6f4b9102922.tar.xz musl-2f437040e7911d9bef239588ea7ed6f4b9102922.zip |
fix (hopefully) all hard-coded 8's for kernel sigset_t size
some minor changes to how hard-coded sets for thread-related purposes
are handled were also needed, since the old object sizes were not
necessarily sufficient. things have gotten a bit ugly in this area,
and i think a cleanup is in order at some point, but for now the goal
is just to get the code working on all supported archs including mips,
which was badly broken by linux rejecting syscalls with the wrong
sigset_t size.
Diffstat (limited to 'src/internal')
-rw-r--r-- | src/internal/pthread_impl.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h index 46d8fdd2..56b92b22 100644 --- a/src/internal/pthread_impl.h +++ b/src/internal/pthread_impl.h @@ -90,9 +90,12 @@ struct __timer { #define SIGCANCEL 33 #define SIGSYNCCALL 34 -#define SIGPT_SET ((sigset_t *)(unsigned long [1+(sizeof(long)==4)]){ \ +#define SIGALL_SET ((sigset_t *)(const unsigned long long [2]){ -1,-1 }) +#define SIGPT_SET \ + ((sigset_t *)(const unsigned long [__SYSCALL_SSLEN/sizeof(long)]){ \ [sizeof(long)==4] = 3UL<<(32*(sizeof(long)>4)) }) -#define SIGTIMER_SET ((sigset_t *)(unsigned long [1+(sizeof(long)==4)]){ \ +#define SIGTIMER_SET \ + ((sigset_t *)(const unsigned long [__SYSCALL_SSLEN/sizeof(long)]){ \ 0x80000000 }) pthread_t __pthread_self_init(void); |