Home | History | Annotate | Download | only in coregrind

Lines Matching full:signo

236 static void sync_signalhandler  ( Int sigNo, vki_siginfo_t *info,
238 static void async_signalhandler ( Int sigNo, vki_siginfo_t *info,
240 static void sigvgkill_handler ( Int sigNo, vki_siginfo_t *info,
653 static Bool is_sig_ign(Int sigNo, ThreadId tid)
655 vg_assert(sigNo >= 1 && sigNo <= _VKI_NSIG);
657 return scss.scss_per_sig[sigNo].scss_handler == VKI_SIG_IGN
658 || !VG_(gdbserver_report_signal) (sigNo, tid);
1041 SysRes VG_(do_sys_sigaction) ( Int signo,
1046 VG_(dmsg)("sys_sigaction: sigNo %d, "
1048 signo, (UWord)new_act, (UWord)old_act,
1056 if (signo < 1 || signo > VG_(max_signal)) goto bad_signo;
1059 if ( (signo > VG_SIGVGRTUSERMAX)
1066 if ( (signo == VKI_SIGKILL || signo == VKI_SIGSTOP)
1074 old_act->ksa_handler = scss.scss_per_sig[signo].scss_handler;
1075 old_act->sa_flags = scss.scss_per_sig[signo].scss_flags;
1076 old_act->sa_mask = scss.scss_per_sig[signo].scss_mask;
1078 old_act->sa_restorer = scss.scss_per_sig[signo].scss_restorer;
1084 scss.scss_per_sig[signo].scss_handler = new_act->ksa_handler;
1085 scss.scss_per_sig[signo].scss_flags = new_act->sa_flags;
1086 scss.scss_per_sig[signo].scss_mask = new_act->sa_mask;
1088 scss.scss_per_sig[signo].scss_restorer = NULL;
1090 scss.scss_per_sig[signo].scss_restorer = new_act->sa_restorer;
1093 scss.scss_per_sig[signo].scss_sa_tramp = NULL;
1095 scss.scss_per_sig[signo].scss_sa_tramp = new_act->sa_tramp;
1098 VG_(sigdelset)(&scss.scss_per_sig[signo].scss_mask, VKI_SIGKILL);
1099 VG_(sigdelset)(&scss.scss_per_sig[signo].scss_mask, VKI_SIGSTOP);
1110 VG_(umsg)("Warning: bad signal number %d in sigaction()\n", signo);
1117 VG_(signame)(signo));
1119 VG_(signame)(signo));
1126 VG_(signame)(signo));
1128 VG_(signame)(signo));
1286 Int sigNo = siginfo->si_signo;
1288 vg_assert(sigNo >= 1 && sigNo <= VG_(max_signal));
1293 VG_(dmsg)("push_signal_frame (thread %d): signal %d\n", tid, sigNo);
1298 (scss.scss_per_sig[sigNo].scss_flags & VKI_SA_ONSTACK )
1309 sigNo, VG_(signame)(sigNo), tid, tst->altstack.ss_sp,
1314 VG_TRACK( pre_deliver_signal, tid, sigNo, /*alt_stack*/True );
1320 VG_TRACK( pre_deliver_signal, tid, sigNo, /*alt_stack*/False );
1323 vg_assert(scss.scss_per_sig[sigNo].scss_handler != VKI_SIG_IGN);
1324 vg_assert(scss.scss_per_sig[sigNo].scss_handler != VKI_SIG_DFL);
1330 scss.scss_per_sig[sigNo].scss_handler,
1331 scss.scss_per_sig[sigNo].scss_flags,
1333 scss.scss_per_sig[sigNo].scss_restorer);
1337 const Char *VG_(signame)(Int sigNo)
1341 switch(sigNo) {
1382 VG_(sprintf)(buf, "SIGRT%d", sigNo-VKI_SIGRTMIN);
1387 VG_(sprintf)(buf, "SIG%d", sigNo);
1393 void VG_(kill_self)(Int sigNo)
1407 VG_(sigaction)(sigNo, &sa, &origsa);
1410 VG_(sigaddset)(&mask, sigNo);
1413 r = VG_(kill)(VG_(getpid)(), sigNo);
1420 VG_(sigaction)(sigNo, &origsa2, NULL);
1488 Int sigNo = info->si_signo;
1496 switch(sigNo) {
1536 sigNo, info->si_code, terminate ? "terminate" : "ignore",
1555 (could_core && is_signal_from_kernel(tid, sigNo, info->si_code))
1561 sigNo, VG_(signame)(sigNo), core ? ": dumping core" : "");
1564 if (is_signal_from_kernel(tid, sigNo, info->si_code)) {
1568 switch(sigNo) {
1627 } /* switch (sigNo) */
1662 if (sigNo == VKI_SIGILL) {
1683 if (sigNo == VKI_SIGSEGV
1684 && info && is_signal_from_kernel(tid, sigNo, info->si_code)
1715 //VG_(threads)[VG_(master_tid)].os_state.fatalsig = sigNo;
1720 VG_(threads)[tid].os_state.fatalsig = sigNo;
1734 Int sigNo = info->si_signo;
1735 SCSS_Per_Signal *handler = &scss.scss_per_sig[sigNo];
1741 sigNo, VG_(signame)(sigNo), info->si_code, tid );
1743 if (sigNo == VG_SIGVGKILL) {
1793 Handler gets a mask of tmp_sig_mask|handler_mask|signo
1798 VG_(sigaddset)(&tst->sig_mask, sigNo);
2078 void async_signalhandler ( Int sigNo,
2093 sigNo, tid, info->si_code);
2136 !!(scss.scss_per_sig[sigNo].scss_flags & VKI_SA_RESTART)
2236 Int sigNo, vki_siginfo_t *info, struct vki_ucontext *uc )
2251 sigNo);
2253 async_signalhandler(sigNo, info, uc);
2262 VG_(dmsg)("Routing user-sent sync signal %d via queue\n", sigNo);
2279 "I can't go on.\n", sigNo, VG_(signame)(sigNo));
2293 VG_(set_default_handler)(sigNo);
2383 Int sigNo, vki_siginfo_t *info, struct vki_ucontext *uc )
2392 (*fault_catcher)(sigNo, (Addr)info->VKI_SIGINFO_si_addr);
2407 if (VG_(sigismember)(&tst->sig_mask, sigNo)) {
2409 VG_(set_default_handler)(sigNo);
2413 if (VG_(gdbserver_report_signal) (sigNo, tid)
2414 || VG_(sigismember)(&tst->sig_mask, sigNo)) {
2431 sigNo, VG_(signame)(sigNo));
2438 VG_(kill_self)(sigNo); /* generate a core dump */
2456 void sync_signalhandler ( Int sigNo,
2463 VG_(printf)("sync_sighandler(%d, %p, %p)\n", sigNo, info, uc);
2466 vg_assert(info->si_signo == sigNo);
2467 vg_assert(sigNo == VKI_SIGSEGV ||
2468 sigNo == VKI_SIGBUS ||
2469 sigNo == VKI_SIGFPE ||
2470 sigNo == VKI_SIGILL ||
2471 sigNo == VKI_SIGTRAP);
2475 from_user = !is_signal_from_kernel(tid, sigNo, info->si_code);
2480 sigNo, info->si_code, VG_(get_IP)(tid),
2484 vg_assert(sigNo >= 1 && sigNo <= VG_(max_signal));
2503 sync_signalhandler_from_user( tid, sigNo, info, uc);
2505 sync_signalhandler_from_kernel(tid, sigNo, info, uc);
2515 static void sigvgkill_handler(int signo, vki_siginfo_t *si,
2526 vg_assert(signo == VG_SIGVGKILL);
2527 vg_assert(si->si_signo == signo);
2571 void VG_(set_default_handler)(Int signo)
2582 VG_(do_sys_sigaction)(signo, &sa, NULL);