📄 process.c
字号:
else tprintf("{sys=\"%s\", node=\"%s\", ...}", uname.sysname, uname.nodename); } return 0;}#ifndef SVR4static struct xlat ptrace_cmds[] = {#ifndef FREEBSD { PTRACE_TRACEME, "PTRACE_TRACEME" }, { PTRACE_PEEKTEXT, "PTRACE_PEEKTEXT", }, { PTRACE_PEEKDATA, "PTRACE_PEEKDATA", }, { PTRACE_PEEKUSER, "PTRACE_PEEKUSER", }, { PTRACE_POKETEXT, "PTRACE_POKETEXT", }, { PTRACE_POKEDATA, "PTRACE_POKEDATA", }, { PTRACE_POKEUSER, "PTRACE_POKEUSER", }, { PTRACE_CONT, "PTRACE_CONT" }, { PTRACE_KILL, "PTRACE_KILL" }, { PTRACE_SINGLESTEP, "PTRACE_SINGLESTEP" }, { PTRACE_ATTACH, "PTRACE_ATTACH" }, { PTRACE_DETACH, "PTRACE_DETACH" },#ifdef SUNOS4 { PTRACE_GETREGS, "PTRACE_GETREGS" }, { PTRACE_SETREGS, "PTRACE_SETREGS" }, { PTRACE_GETFPREGS, "PTRACE_GETFPREGS", }, { PTRACE_SETFPREGS, "PTRACE_SETFPREGS", }, { PTRACE_READDATA, "PTRACE_READDATA" }, { PTRACE_WRITEDATA, "PTRACE_WRITEDATA" }, { PTRACE_READTEXT, "PTRACE_READTEXT" }, { PTRACE_WRITETEXT, "PTRACE_WRITETEXT" }, { PTRACE_GETFPAREGS, "PTRACE_GETFPAREGS" }, { PTRACE_SETFPAREGS, "PTRACE_SETFPAREGS" },#ifdef SPARC { PTRACE_GETWINDOW, "PTRACE_GETWINDOW" }, { PTRACE_SETWINDOW, "PTRACE_SETWINDOW" },#else /* !SPARC */ { PTRACE_22, "PTRACE_PTRACE_22" }, { PTRACE_23, "PTRACE_PTRACE_23" },#endif /* !SPARC */#endif /* SUNOS4 */ { PTRACE_SYSCALL, "PTRACE_SYSCALL" },#ifdef SUNOS4 { PTRACE_DUMPCORE, "PTRACE_DUMPCORE" },#ifdef I386 { PTRACE_SETWRBKPT, "PTRACE_SETWRBKPT" }, { PTRACE_SETACBKPT, "PTRACE_SETACBKPT" }, { PTRACE_CLRDR7, "PTRACE_CLRDR7" },#else /* !I386 */ { PTRACE_26, "PTRACE_26" }, { PTRACE_27, "PTRACE_27" }, { PTRACE_28, "PTRACE_28" },#endif /* !I386 */ { PTRACE_GETUCODE, "PTRACE_GETUCODE" },#endif /* SUNOS4 */#else /* FREEBSD */ { PT_TRACE_ME, "PT_TRACE_ME" }, { PT_READ_I, "PT_READ_I" }, { PT_READ_D, "PT_READ_D" }, { PT_WRITE_I, "PT_WRITE_I" }, { PT_WRITE_D, "PT_WRITE_D" }, { PT_READ_U, "PT_WRITE_U" }, { PT_CONTINUE, "PT_CONTINUE" }, { PT_KILL, "PT_KILL" }, { PT_STEP, "PT_STEP" }, { PT_ATTACH, "PT_ATTACH" }, { PT_DETACH, "PT_DETACH" }, { PT_GETREGS, "PT_GETREGS" }, { PT_SETREGS, "PT_SETREGS" }, { PT_GETFPREGS, "PT_GETFPREGS" }, { PT_SETFPREGS, "PT_SETFPREGS" }, { PT_GETDBREGS, "PT_GETDBREGS" }, { PT_SETDBREGS, "PT_SETDBREGS" },#endif /* FREEBSD */ { 0, NULL },};#ifndef FREEBSD#ifndef SUNOS4_KERNEL_ARCH_KLUDGEstatic#endif /* !SUNOS4_KERNEL_ARCH_KLUDGE */struct xlat struct_user_offsets[] = {#ifdef LINUX#ifdef S390 { PT_PSWMASK, "psw_mask" }, { PT_PSWADDR, "psw_addr" }, { PT_GPR0, "gpr0" }, { PT_GPR1, "gpr1" }, { PT_GPR2, "gpr2" }, { PT_GPR3, "gpr3" }, { PT_GPR4, "gpr4" }, { PT_GPR5, "gpr5" }, { PT_GPR6, "gpr6" }, { PT_GPR7, "gpr7" }, { PT_GPR8, "gpr8" }, { PT_GPR9, "gpr9" }, { PT_GPR10, "gpr10" }, { PT_GPR11, "gpr11" }, { PT_GPR12, "gpr12" }, { PT_GPR13, "gpr13" }, { PT_GPR14, "gpr14" }, { PT_GPR15, "gpr15" }, { PT_ACR0, "acr0" }, { PT_ACR1, "acr1" }, { PT_ACR2, "acr2" }, { PT_ACR3, "acr3" }, { PT_ACR4, "acr4" }, { PT_ACR5, "acr5" }, { PT_ACR6, "acr6" }, { PT_ACR7, "acr7" }, { PT_ACR8, "acr8" }, { PT_ACR9, "acr9" }, { PT_ACR10, "acr10" }, { PT_ACR11, "acr11" }, { PT_ACR12, "acr12" }, { PT_ACR13, "acr13" }, { PT_ACR14, "acr14" }, { PT_ACR15, "acr15" }, { PT_ORIGGPR2, "orig_gpr2" }, { PT_FPC, "fpc" }, { PT_FPR0_HI, "fpr0.hi" }, { PT_FPR0_LO, "fpr0.lo" }, { PT_FPR1_HI, "fpr1.hi" }, { PT_FPR1_LO, "fpr1.lo" }, { PT_FPR2_HI, "fpr2.hi" }, { PT_FPR2_LO, "fpr2.lo" }, { PT_FPR3_HI, "fpr3.hi" }, { PT_FPR3_LO, "fpr3.lo" }, { PT_FPR4_HI, "fpr4.hi" }, { PT_FPR4_LO, "fpr4.lo" }, { PT_FPR5_HI, "fpr5.hi" }, { PT_FPR5_LO, "fpr5.lo" }, { PT_FPR6_HI, "fpr6.hi" }, { PT_FPR6_LO, "fpr6.lo" }, { PT_FPR7_HI, "fpr7.hi" }, { PT_FPR7_LO, "fpr7.lo" }, { PT_FPR8_HI, "fpr8.hi" }, { PT_FPR8_LO, "fpr8.lo" }, { PT_FPR9_HI, "fpr9.hi" }, { PT_FPR9_LO, "fpr9.lo" }, { PT_FPR10_HI, "fpr10.hi" }, { PT_FPR10_LO, "fpr10.lo" }, { PT_FPR11_HI, "fpr11.hi" }, { PT_FPR11_LO, "fpr11.lo" }, { PT_FPR12_HI, "fpr12.hi" }, { PT_FPR12_LO, "fpr12.lo" }, { PT_FPR13_HI, "fpr13.hi" }, { PT_FPR13_LO, "fpr13.lo" }, { PT_FPR14_HI, "fpr14.hi" }, { PT_FPR14_LO, "fpr14.lo" }, { PT_FPR15_HI, "fpr15.hi" }, { PT_FPR15_LO, "fpr15.lo" }, { PT_CR_9, "cr9" }, { PT_CR_10, "cr10" }, { PT_CR_11, "cr11" },#endif#if defined(SPARC) /* XXX No support for these offsets yet. */#elif defined(HPPA) /* XXX No support for these offsets yet. */#elif defined(POWERPC) { 4*PT_R0, "4*PT_R0" }, { 4*PT_R1, "4*PT_R1" }, { 4*PT_R2, "4*PT_R2" }, { 4*PT_R3, "4*PT_R3" }, { 4*PT_R4, "4*PT_R4" }, { 4*PT_R5, "4*PT_R5" }, { 4*PT_R6, "4*PT_R6" }, { 4*PT_R7, "4*PT_R7" }, { 4*PT_R8, "4*PT_R8" }, { 4*PT_R9, "4*PT_R9" }, { 4*PT_R10, "4*PT_R10" }, { 4*PT_R11, "4*PT_R11" }, { 4*PT_R12, "4*PT_R12" }, { 4*PT_R13, "4*PT_R13" }, { 4*PT_R14, "4*PT_R14" }, { 4*PT_R15, "4*PT_R15" }, { 4*PT_R16, "4*PT_R16" }, { 4*PT_R17, "4*PT_R17" }, { 4*PT_R18, "4*PT_R18" }, { 4*PT_R19, "4*PT_R19" }, { 4*PT_R20, "4*PT_R20" }, { 4*PT_R21, "4*PT_R21" }, { 4*PT_R22, "4*PT_R22" }, { 4*PT_R23, "4*PT_R23" }, { 4*PT_R24, "4*PT_R24" }, { 4*PT_R25, "4*PT_R25" }, { 4*PT_R26, "4*PT_R26" }, { 4*PT_R27, "4*PT_R27" }, { 4*PT_R28, "4*PT_R28" }, { 4*PT_R29, "4*PT_R29" }, { 4*PT_R30, "4*PT_R30" }, { 4*PT_R31, "4*PT_R31" }, { 4*PT_NIP, "4*PT_NIP" }, { 4*PT_MSR, "4*PT_MSR" }, { 4*PT_ORIG_R3, "4*PT_ORIG_R3" }, { 4*PT_CTR, "4*PT_CTR" }, { 4*PT_LNK, "4*PT_LNK" }, { 4*PT_XER, "4*PT_XER" }, { 4*PT_CCR, "4*PT_CCR" }, { 4*PT_FPR0, "4*PT_FPR0" },#else #ifdef ALPHA { 0, "r0" }, { 1, "r1" }, { 2, "r2" }, { 3, "r3" }, { 4, "r4" }, { 5, "r5" }, { 6, "r6" }, { 7, "r7" }, { 8, "r8" }, { 9, "r9" }, { 10, "r10" }, { 11, "r11" }, { 12, "r12" }, { 13, "r13" }, { 14, "r14" }, { 15, "r15" }, { 16, "r16" }, { 17, "r17" }, { 18, "r18" }, { 19, "r19" }, { 20, "r20" }, { 21, "r21" }, { 22, "r22" }, { 23, "r23" }, { 24, "r24" }, { 25, "r25" }, { 26, "r26" }, { 27, "r27" }, { 28, "r28" }, { 29, "gp" }, { 30, "fp" }, { 31, "zero" }, { 32, "fp0" }, { 33, "fp" }, { 34, "fp2" }, { 35, "fp3" }, { 36, "fp4" }, { 37, "fp5" }, { 38, "fp6" }, { 39, "fp7" }, { 40, "fp8" }, { 41, "fp9" }, { 42, "fp10" }, { 43, "fp11" }, { 44, "fp12" }, { 45, "fp13" }, { 46, "fp14" }, { 47, "fp15" }, { 48, "fp16" }, { 49, "fp17" }, { 50, "fp18" }, { 51, "fp19" }, { 52, "fp20" }, { 53, "fp21" }, { 54, "fp22" }, { 55, "fp23" }, { 56, "fp24" }, { 57, "fp25" }, { 58, "fp26" }, { 59, "fp27" }, { 60, "fp28" }, { 61, "fp29" }, { 62, "fp30" }, { 63, "fp31" }, { 64, "pc" },#else /* !ALPHA */#ifdef IA64 { PT_F32, "f32" }, { PT_F33, "f33" }, { PT_F34, "f34" }, { PT_F35, "f35" }, { PT_F36, "f36" }, { PT_F37, "f37" }, { PT_F38, "f38" }, { PT_F39, "f39" }, { PT_F40, "f40" }, { PT_F41, "f41" }, { PT_F42, "f42" }, { PT_F43, "f43" }, { PT_F44, "f44" }, { PT_F45, "f45" }, { PT_F46, "f46" }, { PT_F47, "f47" }, { PT_F48, "f48" }, { PT_F49, "f49" }, { PT_F50, "f50" }, { PT_F51, "f51" }, { PT_F52, "f52" }, { PT_F53, "f53" }, { PT_F54, "f54" }, { PT_F55, "f55" }, { PT_F56, "f56" }, { PT_F57, "f57" }, { PT_F58, "f58" }, { PT_F59, "f59" }, { PT_F60, "f60" }, { PT_F61, "f61" }, { PT_F62, "f62" }, { PT_F63, "f63" }, { PT_F64, "f64" }, { PT_F65, "f65" }, { PT_F66, "f66" }, { PT_F67, "f67" }, { PT_F68, "f68" }, { PT_F69, "f69" }, { PT_F70, "f70" }, { PT_F71, "f71" }, { PT_F72, "f72" }, { PT_F73, "f73" }, { PT_F74, "f74" }, { PT_F75, "f75" }, { PT_F76, "f76" }, { PT_F77, "f77" }, { PT_F78, "f78" }, { PT_F79, "f79" }, { PT_F80, "f80" }, { PT_F81, "f81" }, { PT_F82, "f82" }, { PT_F83, "f83" }, { PT_F84, "f84" }, { PT_F85, "f85" }, { PT_F86, "f86" }, { PT_F87, "f87" }, { PT_F88, "f88" }, { PT_F89, "f89" }, { PT_F90, "f90" }, { PT_F91, "f91" }, { PT_F92, "f92" }, { PT_F93, "f93" }, { PT_F94, "f94" }, { PT_F95, "f95" }, { PT_F96, "f96" }, { PT_F97, "f97" }, { PT_F98, "f98" }, { PT_F99, "f99" }, { PT_F100, "f100" }, { PT_F101, "f101" }, { PT_F102, "f102" }, { PT_F103, "f103" }, { PT_F104, "f104" }, { PT_F105, "f105" }, { PT_F106, "f106" }, { PT_F107, "f107" }, { PT_F108, "f108" }, { PT_F109, "f109" }, { PT_F110, "f110" }, { PT_F111, "f111" }, { PT_F112, "f112" }, { PT_F113, "f113" }, { PT_F114, "f114" }, { PT_F115, "f115" }, { PT_F116, "f116" }, { PT_F117, "f117" }, { PT_F118, "f118" }, { PT_F119, "f119" }, { PT_F120, "f120" }, { PT_F121, "f121" }, { PT_F122, "f122" }, { PT_F123, "f123" }, { PT_F124, "f124" }, { PT_F125, "f125" }, { PT_F126, "f126" }, { PT_F127, "f127" }, /* switch stack: */ { PT_F2, "f2" }, { PT_F3, "f3" }, { PT_F4, "f4" }, { PT_F5, "f5" }, { PT_F10, "f10" }, { PT_F11, "f11" }, { PT_F12, "f12" }, { PT_F13, "f13" }, { PT_F14, "f14" }, { PT_F15, "f15" }, { PT_F16, "f16" }, { PT_F17, "f17" }, { PT_F18, "f18" }, { PT_F19, "f19" }, { PT_F20, "f20" }, { PT_F21, "f21" }, { PT_F22, "f22" }, { PT_F23, "f23" }, { PT_F24, "f24" }, { PT_F25, "f25" }, { PT_F26, "f26" }, { PT_F27, "f27" }, { PT_F28, "f28" }, { PT_F29, "f29" }, { PT_F30, "f30" }, { PT_F31, "f31" }, { PT_R4, "r4" }, { PT_R5, "r5" }, { PT_R6, "r6" }, { PT_R7, "r7" }, { PT_K_B0, "kb0" }, { PT_B1, "b1" }, { PT_B2, "b2" }, { PT_B3, "b3" }, { PT_B4, "b4" }, { PT_B5, "b5" }, { PT_K_AR_PFS, "kar.pfs" }, { PT_AR_LC, "ar.lc" }, { PT_K_AR_UNAT, "kar.unat" }, { PT_K_AR_RNAT, "kar.rnat" }, { PT_K_AR_BSPSTORE, "kar.bspstore" }, { PT_K_PR, "k.pr" }, /* pt_regs */ { PT_CR_IPSR, "cr.ipsr" }, { PT_CR_IIP, "cr.iip" }, { PT_CR_IFS, "cr.ifs" }, { PT_AR_UNAT, "ar.unat" }, { PT_AR_PFS, "ar.pfs" }, { PT_AR_RSC, "ar.rsc" }, { PT_AR_RNAT, "ar.rnat" }, { PT_AR_BSPSTORE, "ar.bspstore" }, { PT_PR, "pr" }, { PT_B6, "b6" }, { PT_AR_BSP, "ar.bsp" }, { PT_R1, "r1" }, { PT_R2, "r2" }, { PT_R3, "r3" }, { PT_R12, "r12" }, { PT_R13, "r13" }, { PT_R14, "r14" }, { PT_R15, "r15" }, { PT_R8, "r8" }, { PT_R9, "r9" }, { PT_R10, "r10" }, { PT_R11, "r11" }, { PT_R16, "r16" }, { PT_R17, "r17" }, { PT_R18, "r18" }, { PT_R19, "r19" }, { PT_R20, "r20" }, { PT_R21, "r21" }, { PT_R22, "r22" }, { PT_R23, "r23" }, { PT_R24, "r24" }, { PT_R25, "r25" }, { PT_R26, "r26" }, { PT_R27, "r27" }, { PT_R28, "r28" }, { PT_R29, "r29" }, { PT_R30, "r30" }, { PT_R31, "r31" }, { PT_AR_CCV, "ar.ccv" }, { PT_AR_FPSR, "ar.fpsr" }, { PT_B0, "b0" }, { PT_B7, "b7" }, { PT_F6, "f6" }, { PT_F7, "f7" }, { PT_F8, "f8" }, { PT_F9, "f9" },#else /* !IA64 */#ifdef I386 { 4*EBX, "4*EBX" }, { 4*ECX, "4*ECX" }, { 4*EDX, "4*EDX" }, { 4*ESI, "4*ESI" }, { 4*EDI, "4*EDI" }, { 4*EBP, "4*EBP" }, { 4*EAX, "4*EAX" }, { 4*DS, "4*DS" }, { 4*ES, "4*ES" }, { 4*FS, "4*FS" }, { 4*GS, "4*GS" }, { 4*ORIG_EAX, "4*ORIG_EAX" }, { 4*EIP, "4*EIP" }, { 4*CS, "4*CS" }, { 4*EFL, "4*EFL" }, { 4*UESP, "4*UESP" }, { 4*SS, "4*SS" },#else /* !I386 */#ifdef M68K { 4*PT_D1, "4*PT_D1" }, { 4*PT_D2, "4*PT_D2" }, { 4*PT_D3, "4*PT_D3" }, { 4*PT_D4, "4*PT_D4" }, { 4*PT_D5, "4*PT_D5" }, { 4*PT_D6, "4*PT_D6" }, { 4*PT_D7, "4*PT_D7" }, { 4*PT_A0, "4*PT_A0" }, { 4*PT_A1, "4*PT_A1" }, { 4*PT_A2, "4*PT_A2" }, { 4*PT_A3, "4*PT_A3" }, { 4*PT_A4, "4*PT_A4" }, { 4*PT_A5, "4*PT_A5" }, { 4*PT_A6, "4*PT_A6" }, { 4*PT_D0, "4*PT_D0" }, { 4*PT_USP, "4*PT_USP" }, { 4*PT_ORIG_D0, "4*PT_ORIG_D0" }, { 4*PT_SR, "4*PT_SR" }, { 4*PT_PC, "4*PT_PC" },#endif /* M68K */#endif /* !I386 */#if !defined(S390) && !defined(MIPS) { uoff(u_fpvalid), "offsetof(struct user, u_fpvalid)" },#endif#ifdef I386 { uoff(i387), "offsetof(struct user, i387)" },#else /* !I386 */#ifdef M68K { uoff(m68kfp), "offsetof(struct user, m68kfp)" },#endif /* M68K */#endif /* !I386 */ { uoff(u_tsize), "offsetof(struct user, u_tsize)" }, { uoff(u_dsize), "offsetof(struct user, u_dsize)" }, { uoff(u_ssize), "offsetof(struct user, u_ssize)" }, { uoff(start_code), "offsetof(struct user, start_code)" }, { uoff(start_stack), "offsetof(struct user, start_stack)" }, { uoff(signal), "offsetof(struct user, signal)" },#if !defined(S390) && !defined(MIPS) { uoff(reserved), "offsetof(struct user, reserved)" },#endif { uoff(u_ar0), "offsetof(struct user, u_ar0)" },#if !defined(ARM) && !defined(MIPS) && !defined(S390) { uoff(u_fpstate), "offsetof(struct user, u_fpstate)" },#endif { uoff(magic), "offsetof(struct user, magic)" }, { uoff(u_comm), "offsetof(struct user, u_comm)" },#ifdef I386 { uoff(u_debugreg), "offsetof(struct user, u_debugreg)" },#endif /* I386 */#endif /* !IA64 */#endif /* !ALPHA */#endif /* !POWERPC/!SPARC */#endif /* LINUX */#ifdef SUNOS4 { uoff(u_pcb), "offsetof(struct user, u_pcb)" }, { uoff(u_procp), "offsetof(struct user, u_procp)" }, { uoff(u_ar0), "offsetof(struct user, u_ar0)" }, { uoff(u_comm[0]), "offsetof(struct user, u_comm[0])" }, { uoff(u_arg[0]), "offsetof(struct user, u_arg[0])" }, { uoff(u_ap), "offsetof(struct user, u_ap)" }, { uoff(u_qsave), "offsetof(struct user, u_qsave)" }, { uoff(u_rval1), "offsetof(struct user, u_rval1)" }, { uoff(u_rval2), "offsetof(struct user, u_rval2)" }, { uoff(u_error), "offsetof(struct user, u_error)" }, { uoff(u_eosys), "offsetof(struct user, u_eosys)" }, { uoff(u_ssave), "offsetof(struct user, u_ssave)" }, { uoff(u_signal[0]), "offsetof(struct user, u_signal)" }, { uoff(u_sigmask[0]), "offsetof(struct user, u_sigmask)" }, { uoff(u_sigonstack), "offsetof(struct user, u_sigonstack)" }, { uoff(u_sigintr), "offsetof(struct user, u_sigintr)" }, { uoff(u_sigreset), "offsetof(struct user, u_sigreset)" }, { uoff(u_oldmask), "offsetof(struct user, u_oldmask)" }, { uoff(u_code), "offsetof(struct user, u_code)" }, { uoff(u_addr), "offsetof(struct user, u_addr)" }, { uoff(u_sigstack), "offsetof(struct user, u_sigstack)" }, { uoff(u_ofile), "offsetof(struct user, u_ofile)" }, { uoff(u_pofile), "offsetof(struct user, u_pofile)" }, { uoff(u_ofile_arr[0]), "offsetof(struct user, u_ofile_arr[0])" }, { uoff(u_pofile_arr[0]),"offsetof(struct user, u_pofile_arr[0])"}, { uoff(u_lastfile), "offsetof(struct user, u_lastfile)" }, { uoff(u_cwd), "offsetof(struct user, u_cwd)" }, { uoff(u_cdir), "offsetof(struct user, u_cdir)" }, { uoff(u_rdir), "offsetof(struct user, u_rdir)" }, { uoff(u_cmask), "offsetof(struct user, u_cmask)" }, { uoff(u_ru), "offsetof(struct user, u_ru)" }, { uoff(u_cru), "offsetof(struct user, u_cru)" }, { uoff(u_timer[0]), "offsetof(struct user, u_timer[0])" }, { uoff(u_XXX[0]), "offsetof(struct user, u_XXX[0])" }, { uoff(u_ioch), "offsetof(struct user, u_ioch)" }, { uoff(u_start), "offsetof(struct user, u_start)" }, { uoff(u_acflag), "offsetof(struct user, u_acflag)" }, { uoff(u_prof.pr_base), "offsetof(struct user, u_prof.pr_base)" }, { uoff(u_prof.pr_size), "offsetof(struct user, u_prof.pr_size)" }, { uoff(u_prof.pr_off), "offsetof(struct user, u_prof.pr_off)" }, { uoff(u_prof.pr_scale),"offsetof(struct user, u_prof.pr_scale)"}, { uoff(u_rlimit[0]), "offsetof(struct user, u_rlimit)" }, { uoff(u_exdata.Ux_A), "offsetof(struct user, u_exdata.Ux_A)" }, { uoff(u_exdata.ux_shell[0]),"offsetof(struct user, u_exdata.ux_shell[0])"}, { uoff(u_lofault), "offsetof(struct user, u_lofault)" },#endif /* SUNOS4 */#ifndef HPPA { sizeof(struct user), "sizeof(struct user)" },#endif { 0, NULL },};#endifintsys_ptrace(tcp)struct tcb *tcp;{ char *cmd; struct xlat *x; long addr; cmd = xlookup(ptrace_cmds, tcp->u_arg[0]); if (!cmd)#ifndef FREEBSD cmd = "PTRACE_???";#else cmd = "PT_???";#endif if (entering(tcp)) { tprintf("%s, %lu, ", cmd, tcp->u_arg[1]); addr = tcp->u_arg[2];#ifndef FREEBSD if (tcp->u_arg[0] == PTRACE_PEEKUSER || tcp->u_arg[0] == PTRACE_POKEUSER) { for (x = struct_user_offsets; x->str; x++) { if (x->val >= addr) break; } if (!x->str) tprintf("%#lx, ", addr); else if (x->val > addr && x != struct_user_offsets) { x--; tprintf("%s + %ld, ", x->str, addr - x->val); } else tprintf("%s, ", x->str); } else#endif tprintf("%#lx, ", tcp->u_arg[2]);#ifdef LINUX switch (tcp->u_arg[0]) { case PTRACE_PEEKDATA: case PTRACE_PEEKTEXT: case PTRACE_PEEKUSER: break; case PTRACE_CONT: case PTRACE_SINGLESTEP: case PTRACE_SYSCALL: case PTRACE_DETACH: printsignal(tcp->u_arg[3]); break; default: tprintf("%#lx", tcp->u_arg[3]); break; } } else { switch (tcp->u_arg[0]) { case PTRACE_PEEKDATA: case PTRACE_PEEKTEXT: case PTRACE_PEEKUSER: printnum(tcp, tcp->u_arg[3], "%#x"); break; } }#endif /* LINUX */#ifdef SUNOS4 if (tcp->u_arg[0] == PTRACE_WRITEDATA || tcp->u_arg[0] == PTRACE_WRITETEXT) { tprintf("%lu, ", tcp->u_arg[3]); printstr(tcp, tcp->u_arg[4], tcp->u_arg[3]); } else if (tcp->u_arg[0] != PTRACE_READDATA && tcp->u_arg[0] != PTRACE_READTEXT) { tprintf("%#lx", tcp->u_arg[3]); } } else { if (tcp->u_arg[0] == PTRACE_READDATA || tcp->u_arg[0] == PTRACE_READTEXT) { tprintf("%lu, ", tcp->u_arg[3]); printstr(tcp, tcp->u_arg[4], tcp->u_arg[3]); } }#endif /* SUNOS4 */#ifdef FREEBSD tprintf("%lu", tcp->u_arg[3]); }#endif /* FREEBSD */ return 0;}#endif /* !SVR4 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -