else if (umove(tcp, addr, &sa) < 0)
tprintf("{...}");
else {
- switch ((long) sa.SA_HANDLER) {
- case (long) SIG_ERR:
- tprintf("{SIG_ERR}");
- break;
- case (long) SIG_DFL:
- tprintf("{SIG_DFL}");
- break;
- case (long) SIG_IGN:
+ if (sa.SA_HANDLER == SIG_ERR)
+ tprintf("{SIG_ERR, ");
+ else if (sa.SA_HANDLER == SIG_DFL)
+ tprintf("{SIG_DFL, ");
+ else if (sa.SA_HANDLER == SIG_DFL) {
#ifndef USE_PROCFS
if (tcp->u_arg[0] == SIGTRAP) {
tcp->flags |= TCB_SIGTRAPPED;
kill(tcp->pid, SIGSTOP);
}
#endif /* !USE_PROCFS */
- tprintf("{SIG_IGN}");
- break;
- default:
+ tprintf("{SIG_IGN, ");
+ }
+ else {
#ifndef USE_PROCFS
if (tcp->u_arg[0] == SIGTRAP) {
tcp->flags |= TCB_SIGTRAPPED;
};
- int
+int
sys_rt_sigaction(tcp)
struct tcb *tcp;
{
else if (umove(tcp, addr, &sa) < 0)
tprintf("{...}");
else {
- switch ((long) sa.__sigaction_handler.__sa_handler) {
- case (long) SIG_ERR:
- tprintf("{SIG_ERR}");
- break;
- case (long) SIG_DFL:
- tprintf("{SIG_DFL}");
- break;
- case (long) SIG_IGN:
- tprintf("{SIG_IGN}");
- break;
- default:
- tprintf("{%#lx, ",
- (long) sa.__sigaction_handler.__sa_handler);
- sigemptyset(&sigset);
+ if (sa.__sigaction_handler.__sa_handler == SIG_ERR)
+ tprintf("{SIG_ERR, ");
+ else if (sa.__sigaction_handler.__sa_handler == SIG_DFL)
+ tprintf("{SIG_DFL, ");
+ else if (sa.__sigaction_handler.__sa_handler == SIG_DFL)
+ tprintf("{SIG_IGN, ");
+ else
+ tprintf("{%#lx, ",
+ (long) sa.__sigaction_handler.__sa_handler);
+ sigemptyset(&sigset);
#ifdef LINUXSPARC
- if (tcp->u_arg[4] <= sizeof(sigset))
- memcpy(&sigset, &sa.sa_mask, tcp->u_arg[4]);
+ if (tcp->u_arg[4] <= sizeof(sigset))
+ memcpy(&sigset, &sa.sa_mask, tcp->u_arg[4]);
#else
- if (tcp->u_arg[3] <= sizeof(sigset))
- memcpy(&sigset, &sa.sa_mask, tcp->u_arg[3]);
+ if (tcp->u_arg[3] <= sizeof(sigset))
+ memcpy(&sigset, &sa.sa_mask, tcp->u_arg[3]);
#endif
- else
- memcpy(&sigset, &sa.sa_mask, sizeof(sigset));
- printsigmask(&sigset, 1);
- tprintf(", ");
- printflags(sigact_flags, sa.sa_flags, "SA_???");
+ else
+ memcpy(&sigset, &sa.sa_mask, sizeof(sigset));
+ printsigmask(&sigset, 1);
+ tprintf(", ");
+ printflags(sigact_flags, sa.sa_flags, "SA_???");
#ifdef SA_RESTORER
- if (sa.sa_flags & SA_RESTORER)
- tprintf(", %p", sa.sa_restorer);
+ if (sa.sa_flags & SA_RESTORER)
+ tprintf(", %p", sa.sa_restorer);
#endif
- tprintf("}");
- }
+ tprintf("}");
}
if (entering(tcp))
tprintf(", ");