nactp = &nact;
__sigaction (int sig, const struct sigaction *act, struct sigaction *oact){  struct old_kernel_sigaction k_newact, k_oldact;  int result;  /* First try the RT signals.  */  if (!__libc_missing_rt_sigs)    {      struct sigaction nact, *nactp;      if (act)	{	  nact.sa_handler = act->sa_handler;	  memcpy (&nact.sa_mask, &act->sa_mask, sizeof (sigset_t));	  nact.sa_flags = act->sa_flags;	  nact.sa_restorer = ((act->sa_flags & SA_NOMASK)			      ? &&restore_nomask : &&restore);	  nactp = &nact;	}      else	nactp = NULL;      /* XXX The size argument hopefully will have to be changed to the	 real size of the user-level sigset_t.  */      result = __syscall_rt_sigaction (sig, nactp, oact, _NSIG / 8);      if (result >= 0 || errno != ENOSYS)	return result;      __libc_missing_rt_sigs = 1;    }  if (act)    {      k_newact.k_sa_handler = act->sa_handler;      k_newact.sa_mask = act->sa_mask.__val[0];      k_newact.sa_flags = act->sa_flags;      k_newact.sa_restorer = ((act->sa_flags & SA_NOMASK)			      ? &&restore_nomask : &&restore);    }  asm volatile ("pushl %%ebx\n"		"movl %2, %%ebx\n"		"int $0x80\n"		"popl %%ebx"		: "=a" (result)		: "0" (SYS_ify (sigaction)), "r" (sig),		  "c" (act ? &k_newact : 0), "d" (oact ? &k_oldact : 0));  if (result < 0)    {      __set_errno (-result);      return -1;    }  if (oact)    {      oact->sa_handler = k_oldact.k_sa_handler;      oact->sa_mask.__val[0] = k_oldact.sa_mask;      oact->sa_flags = k_oldact.sa_flags;      oact->sa_restorer = k_oldact.sa_restorer;    }  return 0; restore:  asm (#ifdef	PIC       "	pushl %%ebx\n"       "	call 0f\n"       "0:	popl %%ebx\n"       "	addl $_GLOBAL_OFFSET_TABLE_+[.-0b], %%ebx\n"       "	addl $8, %%esp\n"       "	call __sigsetmask@PLT\n"       "	addl $8, %%esp\n"       "	popl %%ebx\n"#else       "	addl $4, %%esp\n"       "	call __sigsetmask\n"       "	addl $4, %%esp\n"#endif       "	popl %%eax\n"       "	popl %%ecx\n"       "	popl %%edx\n"       "	popf\n"       "	ret"       : : ); restore_nomask:  asm ("	addl $4, %%esp\n"       "	popl %%eax\n"       "	popl %%ecx\n"       "	popl %%edx\n"       "	popf\n"       "	ret"       : : );  /* NOTREACHED */  return -1;}