| /* 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; |
| }; |