diff options
author | "Steven J. Hill" <sjhill@realitydiluted.com> | 2005-12-08 04:57:34 +0000 |
---|---|---|
committer | "Steven J. Hill" <sjhill@realitydiluted.com> | 2005-12-08 04:57:34 +0000 |
commit | a25d5bd4971bb460bd87c684d066fd58359faf32 (patch) | |
tree | b3a4b5ef6799bd0c3924fc9ba00d65023577f101 /libc/sysdeps | |
parent | 2efb2ef4f916151b8abe51fc87ed7b5411d1d91e (diff) | |
download | uClibc-alpine-a25d5bd4971bb460bd87c684d066fd58359faf32.tar.bz2 uClibc-alpine-a25d5bd4971bb460bd87c684d066fd58359faf32.tar.xz |
Fix 'sigaction' for NPTL and other thread models.
Diffstat (limited to 'libc/sysdeps')
-rw-r--r-- | libc/sysdeps/linux/common/__syscall_rt_sigaction.c | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/ssp.c | 1 | ||||
-rw-r--r-- | libc/sysdeps/linux/mips/sigaction.c | 13 |
3 files changed, 7 insertions, 9 deletions
diff --git a/libc/sysdeps/linux/common/__syscall_rt_sigaction.c b/libc/sysdeps/linux/common/__syscall_rt_sigaction.c index be7709040..9d4916618 100644 --- a/libc/sysdeps/linux/common/__syscall_rt_sigaction.c +++ b/libc/sysdeps/linux/common/__syscall_rt_sigaction.c @@ -14,7 +14,7 @@ #define __NR___syscall_rt_sigaction __NR_rt_sigaction #undef sigaction -attribute_hidden _syscall4(int, __syscall_rt_sigaction, int, signum, +_syscall4(int, __syscall_rt_sigaction, int, signum, const struct sigaction *, act, struct sigaction *, oldact, size_t, size); diff --git a/libc/sysdeps/linux/common/ssp.c b/libc/sysdeps/linux/common/ssp.c index 7a977f56a..fe7a56f71 100644 --- a/libc/sysdeps/linux/common/ssp.c +++ b/libc/sysdeps/linux/common/ssp.c @@ -31,7 +31,6 @@ #define closelog __closelog #define sigfillset __sigfillset_internal #define sigdelset __sigdelset_internal -#define sigaction __sigaction_internal #define kill __kill #include <string.h> diff --git a/libc/sysdeps/linux/mips/sigaction.c b/libc/sysdeps/linux/mips/sigaction.c index 4cbdc7023..e35f11806 100644 --- a/libc/sysdeps/linux/mips/sigaction.c +++ b/libc/sysdeps/linux/mips/sigaction.c @@ -25,14 +25,14 @@ #include <sys/syscall.h> #include <bits/kernel_sigaction.h> +#define SA_RESTORER 0x04000000 + #if defined __NR_rt_sigaction -#warning "Yes there is a warning here. Don't worry about it." -static void restore_rt (void) asm ("__restore_rt"); /* If ACT is not NULL, change the action for SIG to *ACT. If OACT is not NULL, put the old action for SIG in *OACT. */ -int __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) +int attribute_hidden __sigaction_internal (int sig, const struct sigaction *act, struct sigaction *oact) { int result; struct kernel_sigaction kact, koact; @@ -68,12 +68,11 @@ int __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oa #else -#warning "Yes there is a warning here. Don't worry about it." -static void restore (void) asm ("__restore"); +extern void restore (void) asm ("__restore") attribute_hidden; /* If ACT is not NULL, change the action for SIG to *ACT. If OACT is not NULL, put the old action for SIG in *OACT. */ -int __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) +int attribute_hidden __sigaction_internal (int sig, const struct sigaction *act, struct sigaction *oact) { int result; struct old_kernel_sigaction kact, koact; @@ -113,5 +112,5 @@ int __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oa #endif #ifndef LIBC_SIGACTION -weak_alias (__libc_sigaction, sigaction) +weak_alias(__sigaction_internal,sigaction) #endif |