Lines Matching refs:xp
507 xsu_proc_bkpt(xsu_proc_t *xp) in xsu_proc_bkpt() argument
511 char *const argv[3] = { xp->xp_prog, xp->xp_arg, NULL }; in xsu_proc_bkpt()
514 P = Pcreate(xp->xp_prog, argv, &perr, NULL, 0); in xsu_proc_bkpt()
516 errx(EXIT_FAILURE, "failed to create %s: %s", xp->xp_prog, in xsu_proc_bkpt()
520 xp->xp_proc = P; in xsu_proc_bkpt()
528 if (Pxlookup_by_name(P, LM_ID_BASE, xp->xp_object, xp->xp_symname, &sym, in xsu_proc_bkpt()
530 err(EXIT_FAILURE, "failed to find %s`%s", xp->xp_object, in xsu_proc_bkpt()
531 xp->xp_symname); in xsu_proc_bkpt()
538 xp->xp_addr = sym.st_value; in xsu_proc_bkpt()
539 if (Psetbkpt(P, sym.st_value, &xp->xp_instr) != 0) { in xsu_proc_bkpt()
558 xsu_proc_finish(xsu_proc_t *xp) in xsu_proc_finish() argument
560 pid_t pid = Ppsinfo(xp->xp_proc)->pr_pid; in xsu_proc_finish()
562 if (Pdelbkpt(xp->xp_proc, xp->xp_addr, xp->xp_instr) != 0) { in xsu_proc_finish()
564 xp->xp_object, xp->xp_symname); in xsu_proc_finish()
567 if (Psetrun(xp->xp_proc, 0, PRCFAULT) != 0) { in xsu_proc_finish()
571 if (waitpid(pid, &xp->xp_wait, 0) != pid) { in xsu_proc_finish()
576 if (WIFEXITED(xp->xp_wait) == 0) { in xsu_proc_finish()
580 Pfree(xp->xp_proc); in xsu_proc_finish()
581 xp->xp_proc = NULL; in xsu_proc_finish()