• Home
  • Raw
  • Download

Lines Matching refs:pid

127 static size_t arch_getProcMem(pid_t pid, uint8_t* buf, size_t len, register_t pc) {  in arch_getProcMem()  argument
139 if (ptrace(PT_IO, pid, &io, 0) == -1) { in arch_getProcMem()
142 pid, io.piod_op, io.piod_offs, io.piod_addr, io.piod_len); in arch_getProcMem()
154 pid_t pid, lwpid_t lwp, register_t* pc, register_t* status_reg HF_ATTR_UNUSED) { in arch_getPC() argument
157 if (ptrace(PT_GETREGS, pid, &r, lwp) != 0) { in arch_getPC()
173 static void arch_getInstrStr(pid_t pid, lwpid_t lwp, register_t* pc, char* instr) { in arch_getInstrStr() argument
184 size_t pcRegSz = arch_getPC(pid, lwp, pc, &status_reg); in arch_getInstrStr()
190 if ((memsz = arch_getProcMem(pid, buf, sizeof(buf), *pc)) == 0) { in arch_getInstrStr()
268 pid_t pid, run_t* run, funcs_t* funcs, size_t funcCnt, siginfo_t* si, const char* instr) { in arch_traceGenerateReport() argument
272 util_ssnprintf(run->report, sizeof(run->report), "PID: %d\n", pid); in arch_traceGenerateReport()
289 static void arch_traceAnalyzeData(run_t* run, pid_t pid) { in arch_traceAnalyzeData() argument
293 if (ptrace(PT_GET_SIGINFO, pid, &info, sizeof(info)) == -1) { in arch_traceAnalyzeData()
294 PLOG_W("Couldn't get siginfo for pid %d", pid); in arch_traceAnalyzeData()
297 size_t pcRegSz = arch_getPC(pid, info.psi_lwpid, &pc, &status_reg); in arch_traceAnalyzeData()
332 static void arch_traceSaveData(run_t* run, pid_t pid) { in arch_traceSaveData() argument
342 if (ptrace(PT_GET_SIGINFO, pid, &info, sizeof(info)) == -1) { in arch_traceSaveData()
343 PLOG_W("Couldn't get siginfo for pid %d", pid); in arch_traceSaveData()
346 arch_getInstrStr(pid, info.psi_lwpid, &pc, instr); in arch_traceSaveData()
349 pid, info.psi_siginfo.si_signo, info.psi_siginfo.si_errno, info.psi_siginfo.si_code, in arch_traceSaveData()
486 info.psi_siginfo.si_code, sig_addr, instr, localtmstr, pid, run->global->io.fileExtn); in arch_traceSaveData()
518 arch_traceGenerateReport(pid, run, funcs, funcCnt, &info.psi_siginfo, instr); in arch_traceSaveData()
521 static void arch_traceEvent(run_t* run HF_ATTR_UNUSED, pid_t pid) { in arch_traceEvent() argument
526 if (ptrace(PT_GET_SIGINFO, pid, &info, sizeof(info)) == -1) { in arch_traceEvent()
527 PLOG_E("ptrace(PT_GET_SIGINFO, pid=%d)", (int)pid); in arch_traceEvent()
533 LOG_D("PID: %d breakpoint software trap (TRAP_BRKPT)", pid); in arch_traceEvent()
537 LOG_E("PID: %d unexpected single step trace trap (TRAP_TRACE)", pid); in arch_traceEvent()
541 LOG_D("PID: %d breakpoint software trap (TRAP_EXEC)", pid); in arch_traceEvent()
546 if (ptrace(PT_GET_PROCESS_STATE, pid, &state, sizeof(state)) != -1) { in arch_traceEvent()
549 LOG_D("PID: %d child trap (TRAP_CHLD) : fork", (int)pid); in arch_traceEvent()
552 LOG_D("PID: %d child trap (TRAP_CHLD) : vfork", (int)pid); in arch_traceEvent()
556 (int)pid); in arch_traceEvent()
561 (int)pid); in arch_traceEvent()
565 (int)pid); in arch_traceEvent()
570 (int)pid, state.pe_report_event); in arch_traceEvent()
577 LOG_E("PID: %d unexpected debug register trap (TRAP_DBREG)", pid); in arch_traceEvent()
581 LOG_E("PID: %d unexpected syscall enter trap (TRAP_SCE)", pid); in arch_traceEvent()
585 LOG_E("PID: %d unexpected syscall exit trap (TRAP_SCX)", pid); in arch_traceEvent()
590 LOG_D("PID: %d other trap si_code=%d", pid, info.psi_siginfo.si_code); in arch_traceEvent()
595 ptrace(PT_CONTINUE, pid, (void*)1, sig); in arch_traceEvent()
598 void arch_traceAnalyze(run_t* run, int status, pid_t pid) { in arch_traceAnalyze() argument
603 return arch_traceEvent(run, pid); in arch_traceAnalyze()
616 arch_traceSaveData(run, pid); in arch_traceAnalyze()
618 arch_traceAnalyzeData(run, pid); in arch_traceAnalyze()
623 ptrace(PT_CONTINUE, pid, (void*)1, sig); in arch_traceAnalyze()
648 bool arch_traceWaitForPidStop(pid_t pid) { in arch_traceWaitForPidStop() argument
649 LOG_D("Waiting for pid=%d to stop", (int)pid); in arch_traceWaitForPidStop()
653 pid_t ret = wait4(pid, &status, __WALL | WUNTRACED | WTRAPPED, NULL); in arch_traceWaitForPidStop()
658 PLOG_W("wait4(pid=%d) failed", pid); in arch_traceWaitForPidStop()
662 LOG_W("PID %d not in a stopped state - status:%d", pid, status); in arch_traceWaitForPidStop()
666 LOG_D("pid=%d stopped", (int)pid); in arch_traceWaitForPidStop()
672 if (!arch_traceWaitForPidStop(run->pid)) { in arch_traceAttach()
675 if (ptrace(PT_ATTACH, run->pid, NULL, 0) == -1) { in arch_traceAttach()
676 PLOG_W("Couldn't ptrace(PT_ATTACH) to pid: %d", (int)run->pid); in arch_traceAttach()
679 if (!arch_traceWaitForPidStop(run->pid)) { in arch_traceAttach()
690 if (ptrace(PT_SET_EVENT_MASK, run->pid, &event, sizeof(event)) == -1) { in arch_traceAttach()
691 PLOG_W("Couldn't ptrace(PT_SET_EVENT_MASK) to pid: %d", (int)run->pid); in arch_traceAttach()
695 LOG_D("Attached to PID: %d", run->pid); in arch_traceAttach()
697 if (ptrace(PT_CONTINUE, run->pid, (void*)1, 0) == -1) { in arch_traceAttach()
698 PLOG_W("Couldn't ptrace(PT_CONTINUE) to pid: (int)%d", run->pid); in arch_traceAttach()
705 void arch_traceDetach(pid_t pid) { in arch_traceDetach() argument
706 if (ptrace(PT_DETACH, pid, NULL, 0) == -1) { in arch_traceDetach()
707 PLOG_E("PID: %d ptrace(PT_DETACH) failed", pid); in arch_traceDetach()