mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Update.
1999-08-02 Jakub Jelinek <jj@ultra.linux.cz> * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c (__sigaction): Only allow rt signal frames. No SA_SIGINFO signals will have the siginfo_t just not filled out with SI_NOINFO code. * sysdeps/unix/sysv/linux/sparc/sparc64/register-dump.h (register_dump): Take the above change into account. * sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h (rt_signal_frame): Likewise. * sysdeps/unix/sysv/linux/sparc/getsysstats.c: New file.
This commit is contained in:
@ -32,24 +32,18 @@ extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *,
|
||||
size_t);
|
||||
|
||||
static void __rt_sigreturn_stub (void);
|
||||
static void __sigreturn_stub (void);
|
||||
|
||||
int
|
||||
__sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
|
||||
{
|
||||
int ret;
|
||||
struct kernel_sigaction kact, koact;
|
||||
unsigned long stub = 0;
|
||||
unsigned long stub = ((unsigned long) &__rt_sigreturn_stub) - 8;
|
||||
|
||||
if (act)
|
||||
{
|
||||
kact.k_sa_handler = act->sa_handler;
|
||||
memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
|
||||
if (((kact.sa_flags = act->sa_flags) & SA_SIGINFO) != 0)
|
||||
stub = (unsigned long) &__rt_sigreturn_stub;
|
||||
else
|
||||
stub = (unsigned long) &__sigreturn_stub;
|
||||
stub -= 8;
|
||||
kact.sa_restorer = NULL;
|
||||
}
|
||||
|
||||
@ -79,12 +73,3 @@ __rt_sigreturn_stub (void)
|
||||
: /* no outputs */
|
||||
: "i" (__NR_rt_sigreturn));
|
||||
}
|
||||
|
||||
static void
|
||||
__sigreturn_stub (void)
|
||||
{
|
||||
__asm__ ("mov %0, %%g1\n\t"
|
||||
"ta 0x6d\n\t"
|
||||
: /* no outputs */
|
||||
: "i" (__NR_sigreturn));
|
||||
}
|
||||
|
Reference in New Issue
Block a user