Lines Matching +full:protect +full:- +full:exec
66 const lwpstatus_t *Lsp = pri->lwpstat; in report_sleeping()
67 int sys = Lsp->pr_syscall; in report_sleeping()
70 !(Lsp->pr_flags & (PR_ASLEEP|PR_VFORKP))) { in report_sleeping()
76 pri->length = 0; in report_sleeping()
77 pri->Errno = 0; in report_sleeping()
78 pri->ErrPriv = PRIV_NONE; in report_sleeping()
79 pri->Rval1 = pri->Rval2 = 0; in report_sleeping()
84 pri->length += printf("%s", pri->sys_string); in report_sleeping()
85 pri->sys_leng = 0; in report_sleeping()
86 *pri->sys_string = '\0'; in report_sleeping()
87 pri->length >>= 3; in report_sleeping()
88 if (Lsp->pr_flags & PR_VFORKP) in report_sleeping()
89 pri->length += 2; in report_sleeping()
90 if (pri->length >= 4) in report_sleeping()
92 for (; pri->length < 4; pri->length++) in report_sleeping()
94 if (Lsp->pr_flags & PR_VFORKP) in report_sleeping()
95 (void) fputs("(waiting for child to exit()/exec()...)\n", in report_sleeping()
99 pri->length = 0; in report_sleeping()
102 pri->Errno = 1; in report_sleeping()
104 pri->Errno = 0; in report_sleeping()
120 const lwpstatus_t *Lsp = pri->lwpstat; in requested()
121 int sig = Lsp->pr_cursig; in requested()
130 pri->length = 0; in requested()
135 if (Lsp->pr_action.sa_handler == SIG_DFL) in requested()
137 else if (Lsp->pr_action.sa_handler == SIG_IGN) in requested()
160 const lwpstatus_t *Lsp = pri->lwpstat; in jobcontrol()
170 pri->length = 0; in jobcontrol()
175 if ((Lsp->pr_flags & PR_ASLEEP) && in jobcontrol()
176 (sys = Lsp->pr_syscall) > 0 && sys <= PRMAXSYS) in jobcontrol()
194 const lwpstatus_t *Lsp = pri->lwpstat; in stopsig()
197 if (Lsp->pr_flags & PR_STOPPED) { in stopsig()
198 switch (Lsp->pr_why) { in stopsig()
200 sig = Lsp->pr_what; in stopsig()
206 if (Lsp->pr_action.sa_handler == SIG_DFL) { in stopsig()
207 switch (Lsp->pr_cursig) { in stopsig()
214 if (!(Lsp->pr_flags & PR_ORPHAN)) in stopsig()
215 sig = Lsp->pr_cursig; in stopsig()
229 const lwpstatus_t *Lsp = pri->lwpstat; in signalled()
230 int sig = Lsp->pr_what; in signalled()
237 Cp->sigcount[sig]++; in signalled()
248 pri->length = 0; in signalled()
253 if ((Lsp->pr_flags & PR_ASLEEP) && in signalled()
254 (sys = Lsp->pr_syscall) > 0 && sys <= PRMAXSYS) in signalled()
257 if (Lsp->pr_action.sa_handler == SIG_DFL) in signalled()
259 else if (Lsp->pr_action.sa_handler == SIG_IGN) in signalled()
264 if (Lsp->pr_info.si_code != 0 || in signalled()
265 Lsp->pr_info.si_pid != 0) in signalled()
266 print_siginfo(pri, &Lsp->pr_info); in signalled()
278 const lwpstatus_t *Lsp = pri->lwpstat; in faulted()
279 int flt = Lsp->pr_what; in faulted()
285 Cp->fltcount[flt]++; in faulted()
291 pri->length = 0; in faulted()
296 flt, proc_fltname(flt, pri->flt_name, sizeof (pri->flt_name)), in faulted()
297 (long)Lsp->pr_reg[R_PC]); in faulted()
301 (long)Lsp->pr_info.si_addr); in faulted()
303 if (Lsp->pr_info.si_signo != 0) in faulted()
304 print_siginfo(pri, &Lsp->pr_info); in faulted()
310 * Set up pri->sys_nargs and pri->sys_args[] (syscall args).
315 const lwpstatus_t *Lsp = pri->lwpstat; in setupsysargs()
321 pri->sys_indirect = (Lsp->pr_reg[R_G1] == SYS_syscall)? 1 : 0; in setupsysargs()
323 pri->sys_indirect = 0; in setupsysargs()
326 (void) memset(pri->sys_args, 0, sizeof (pri->sys_args)); in setupsysargs()
327 if (what != Lsp->pr_syscall) { /* assertion */ in setupsysargs()
329 pri->pname, what, Lsp->pr_syscall); in setupsysargs()
331 nargs = Lsp->pr_nsysarg; in setupsysargs()
333 i < nargs && i < sizeof (pri->sys_args) / sizeof (pri->sys_args[0]); in setupsysargs()
335 pri->sys_args[i] = Lsp->pr_sysarg[i]; in setupsysargs()
336 pri->sys_nargs = nargs; in setupsysargs()
354 pid_t pid = Pstatus(Proc)->pr_pid; in sysentry()
355 const lwpstatus_t *Lsp = pri->lwpstat; in sysentry()
363 int what = Lsp->pr_what; in sysentry()
369 if (what == 0 && (Lsp->pr_flags & (PR_ASLEEP|PR_VFORKP))) in sysentry()
370 what = Lsp->pr_syscall; in sysentry()
372 /* protect ourself from operating system error */ in sysentry()
377 * Set up the system call arguments (pri->sys_nargs & pri->sys_args[]). in sysentry()
380 nargs = pri->sys_nargs; in sysentry()
386 if (nargs > stp->nargs) in sysentry()
387 nargs = stp->nargs; in sysentry()
388 pri->sys_nargs = nargs; in sysentry()
394 pri->sys_valid = FALSE; in sysentry()
395 if ((nargs > 0 && stp->arg[0] == STG) || in sysentry()
401 * Special case for exit from exec(). in sysentry()
402 * The address in pri->sys_args[0] refers to the old process in sysentry()
405 if (Lsp->pr_why == PR_SYSEXIT && what == SYS_execve) { in sysentry()
432 } else if (stp->arg[0] == STG) { in sysentry()
433 offset = pri->sys_args[0]; in sysentry()
435 offset = pri->sys_args[1]; in sysentry()
438 pri->sys_valid = TRUE; in sysentry()
441 while (len >= pri->sys_psize) { in sysentry()
442 free(pri->sys_path); in sysentry()
443 pri->sys_path = my_malloc(pri->sys_psize *= 2, in sysentry()
446 (void) strcpy(pri->sys_path, s); /* remember pathname */ in sysentry()
455 int fdp1 = (int)pri->sys_args[0] + 1; in sysentry()
466 pri->sys_leng = 0; in sysentry()
468 *pri->sys_string = 0; in sysentry()
473 name = sysname(pri, what, raw? -1 : subcode); in sysentry()
475 pri->sys_leng = snprintf(pri->sys_string, pri->sys_ssize, in sysentry()
478 arg = pri->sys_args[i]; in sysentry()
479 x = stp->arg[i]; in sysentry()
481 if (!raw && pri->sys_valid && in sysentry()
487 escape_string(pri, pri->sys_path); in sysentry()
494 pri->sys_args[++i]); in sysentry()
509 * sysexit() returns non-zero if anything was printed.
514 const lwpstatus_t *Lsp = pri->lwpstat; in sysexit()
515 int what = Lsp->pr_what; in sysexit()
522 /* protect ourself from operating system error */ in sysexit()
536 /* pick up registers & set pri->Errno before anything else */ in sysexit()
537 pri->Errno = Lsp->pr_errno; in sysexit()
538 pri->ErrPriv = Lsp->pr_errpriv; in sysexit()
539 pri->Rval1 = Lsp->pr_rval1; in sysexit()
540 pri->Rval2 = Lsp->pr_rval2; in sysexit()
550 if (pri->exec_string && *pri->exec_string) { in sysexit()
551 if (!cflag && istraced) { /* print exec() string now */ in sysexit()
552 if (pri->exec_pname[0] != '\0') in sysexit()
553 (void) fputs(pri->exec_pname, stdout); in sysexit()
555 (void) fputs(pri->exec_string, stdout); in sysexit()
557 pri->exec_pname[0] = '\0'; in sysexit()
558 pri->exec_string[0] = '\0'; in sysexit()
569 pri->length = 0; in sysexit()
573 pri->length += printf("%s", pri->sys_string); in sysexit()
575 pri->sys_leng = 0; in sysexit()
576 *pri->sys_string = '\0'; in sysexit()
586 scp = Cp->syscount[what]; in sysexit()
588 scp += subcode - 3; in sysexit()
589 else if (subcode != -1 && in sysexit()
594 scp->count++; in sysexit()
595 accumulate(&scp->stime, &Lsp->pr_stime, &pri->syslast); in sysexit()
596 accumulate(&Cp->usrtotal, &Lsp->pr_utime, &pri->usrlast); in sysexit()
597 pri->syslast = Lsp->pr_stime; in sysexit()
598 pri->usrlast = Lsp->pr_utime; in sysexit()
606 pri->Errno == 0 && pri->Rval2 != 0) { in sysexit()
607 pri->length &= ~07; in sysexit()
608 if (strlen(sysname(pri, what, raw? -1 : subcode)) < 6) { in sysexit()
610 pri->length += 8; in sysexit()
612 pri->length += in sysexit()
616 pri->Errno == 0 && pri->Rval1 == 0) { in sysexit()
617 pri->length &= ~07; in sysexit()
618 pri->length += in sysexit()
621 if (pri->Errno != 0 || what != SYS_execve) { in sysexit()
623 pri->length >>= 3; in sysexit()
624 if (pri->length >= 6) in sysexit()
626 for (; pri->length < 6; pri->length++) in sysexit()
630 pri->length = 0; in sysexit()
632 if (pri->Errno != 0) { /* error in syscall */ in sysexit()
635 scp->error++; in sysexit()
637 const char *ename = errname(pri->Errno); in sysexit()
640 (void) printf("Err#%d", pri->Errno); in sysexit()
645 switch (pri->ErrPriv) { in sysexit()
659 privname = priv_getbynum(pri->ErrPriv); in sysexit()
669 /* show arguments on successful exec */ in sysexit()
675 long rv1 = pri->Rval1; in sysexit()
676 long rv2 = pri->Rval2; in sysexit()
679 * 32-bit system calls return 32-bit values. We in sysexit()
733 switch (stp->rval[0]) { in sysexit()
762 switch (stp->rval[1]) { in sysexit()
797 if (pri->Rval2 == 0) /* child was created */ in sysexit()
798 pri->child = pri->Rval1; in sysexit()
800 scp->count--; in sysexit()
802 if (what == SYS_lwp_create && pri->Rval1 == 0 && in sysexit()
804 scp->count--; in sysexit()
815 int fdp1 = (int)pri->sys_args[0] + 1; /* filedescriptor + 1 */ in sysexit()
821 if (pri->iob_buf[0] != '\0') in sysexit()
823 pri->pname, pri->sys_args[1], in sysexit()
824 pri->iob_buf); in sysexit()
833 if ((ISREAD(what) && pri->Errno == 0 && in sysexit()
836 long nb = ISWRITE(what) ? pri->sys_args[2] : pri->Rval1; in sysexit()
843 showbuffer(pri, pri->sys_args[1], nb); in sysexit()
859 pri->Errno == 0 && prismember(&readfd, fdp1)) || in sysexit()
863 expound(pri, pri->Rval1, raw); in sysexit()
872 int what = pri->lwpstat->pr_what; in showpaths()
875 for (i = 0; i < pri->sys_nargs; i++) { in showpaths()
876 if (stp->arg[i] == ATC && (int)pri->sys_args[i] == AT_FDCWD) { in showpaths()
878 pri->pname, AT_FDCWD); in showpaths()
879 } else if ((stp->arg[i] == STG) || in showpaths()
880 (stp->arg[i] == RST && !pri->Errno) || in showpaths()
881 (stp->arg[i] == RLK && !pri->Errno && pri->Rval1 > 0)) { in showpaths()
882 long addr = pri->sys_args[i]; in showpaths()
884 (stp->arg[i] == RLK)? (int)pri->Rval1 : PATH_MAX; in showpaths()
887 if (pri->sys_valid && in showpaths()
888 ((i == 0 && stp->arg[0] == STG) || in showpaths()
891 s = pri->sys_path; in showpaths()
898 pri->pname, addr, s); in showpaths()
904 * Display arguments to successful exec().
909 const lwpstatus_t *Lsp = pri->lwpstat; in showargs()
915 pri->length = 0; in showargs()
919 ap = (long)Lsp->pr_reg[R_SP]; in showargs()
927 ap = (long)(Lsp->pr_reg[R_SP]) + 16 * sizeof (int64_t) in showargs()
933 ap = (long)(Lsp->pr_reg[R_SP]) + 16 * sizeof (int32_t); in showargs()
941 (void) printf("\n%s\t*** Bad argument list? ***\n", pri->pname); in showargs()
999 pri->pname); in dumpargs()
1041 count -= nbytes; in showbuffer()
1054 nbytes -= n; in showbuffer()
1065 while (--n >= 0) { in showbytes()
1097 c1 += (c1 < 10)? '0' : 'A'-10; in showbytes()
1099 c2 += (c2 < 10)? '0' : 'A'-10; in showbytes()