/* Copyright (c) 2002, 2003 William Josephson */ enum { CoremapMagic = 0xba5eba11, CoremapMax = 128, }; #undef MAXCOMLEN #define MAXCOMLEN 16 #define PRSTATUS_VERSION 1 /* Current version of prstatus_t */ #define PRPSINFO_VERSION 1 /* Current version of prpsinfo_t */ #define PRARGSZ 80 /* Maximum argument bytes saved */ typedef struct Coremap Coremap; typedef struct CoremapItem CoremapItem; typedef struct CoremapHeader CoremapHeader; typedef struct ElfNote ElfNote; typedef struct Reg386 Reg386; typedef struct PrStatus386 PrStatus386; typedef struct PrPsinfo PrPsinfo; struct CoremapHeader { u32int magic; u32int counter; u32int maxelem; }; struct CoremapItem { u32int address; u32int size; }; struct Coremap { CoremapHeader header; CoremapItem map[CoremapMax]; }; struct ElfNote { u32int namesz; u32int descsz; u32int type; char *name; uchar *desc; u32int offset; /* in-memory only */ }; enum { NotePrStatus = 1, NotePrFpreg = 2, NotePrPsinfo = 3, NotePrTaskstruct = 4, NotePrAuxv = 6, NotePrXfpreg = 0x46e62b7f, /* according to gdb */ }; #if 0 struct Reg386 { u32int fs; u32int es; u32int ds; u32int edi; u32int esi; u32int ebp; u32int isp; u32int ebx; u32int edx; u32int ecx; u32int eax; u32int trapno; u32int err; u32int eip; u32int cs; u32int eflags; u32int esp; u32int ss; u32int gs; }; #endif struct Reg386 { u32int ebx; u32int ecx; u32int edx; u32int esi; u32int edi; u32int ebp; u32int eax; u32int ds; u32int es; u32int fs; u32int gs; u32int origeax; u32int eip; u32int cs; u32int eflags; u32int esp; u32int ss; }; #if 0 struct PrStatus386 { u32int version; /* Version number of struct (1) */ u32int statussz; /* sizeof(prstatus_t) (1) */ u32int gregsetsz; /* sizeof(gregset_t) (1) */ u32int fpregsetsz; /* sizeof(fpregset_t) (1) */ int osreldate; /* Kernel version (1) */ int cursig; /* Current signal (1) */ pid_t pid; /* Process ID (1) */ Reg386 reg; /* General purpose registers (1) */ }; #endif struct PrPsinfo { int version; /* Version number of struct (1) */ u32int psinfosz; /* sizeof(prpsinfo_t) (1) */ char fname[MAXCOMLEN+1]; /* Command name, null terminated (1) */ char psargs[PRARGSZ+1]; /* Arguments, null terminated (1) */ }; struct PrStatus386 { u32int signo; u32int code; u32int errno; u32int cursig; u32int sigpend; u32int sighold; u32int pid; u32int ppid; u32int pgrp; u32int sid; u32int utime[2]; u32int stime[2]; u32int cutime[2]; u32int cstime[2]; Reg386 reg; u32int fpvalid; };