Blob
1 /* Copyright (c) 2002, 2003 William Josephson */3 enum {4 CoremapMagic = 0xba5eba11,5 CoremapMax = 128,6 };7 #undef MAXCOMLEN8 #define MAXCOMLEN 169 #define PRSTATUS_VERSION 1 /* Current version of prstatus_t */10 #define PRPSINFO_VERSION 1 /* Current version of prpsinfo_t */11 #define PRARGSZ 80 /* Maximum argument bytes saved */14 typedef struct Coremap Coremap;15 typedef struct CoremapItem CoremapItem;16 typedef struct CoremapHeader CoremapHeader;17 typedef struct ElfNote ElfNote;18 typedef struct Reg386 Reg386;19 typedef struct PrStatus386 PrStatus386;20 typedef struct PrPsinfo PrPsinfo;22 struct CoremapHeader {23 u32int magic;24 u32int counter;25 u32int maxelem;26 };28 struct CoremapItem {29 u32int address;30 u32int size;31 };33 struct Coremap {34 CoremapHeader header;35 CoremapItem map[CoremapMax];36 };38 struct ElfNote {39 u32int namesz;40 u32int descsz;41 u32int type;42 char *name;43 uchar *desc;44 u32int offset; /* in-memory only */45 };47 enum48 {49 NotePrStatus = 1,50 NotePrFpreg = 2,51 NotePrPsinfo = 3,52 NotePrTaskstruct = 4,53 NotePrAuxv = 6,54 NotePrXfpreg = 0x46e62b7f, /* according to gdb */55 };56 #if 057 struct Reg38658 {59 u32int fs;60 u32int es;61 u32int ds;62 u32int edi;63 u32int esi;64 u32int ebp;65 u32int isp;66 u32int ebx;67 u32int edx;68 u32int ecx;69 u32int eax;70 u32int trapno;71 u32int err;72 u32int eip;73 u32int cs;74 u32int eflags;75 u32int esp;76 u32int ss;77 u32int gs;78 };79 #endif81 struct Reg38682 {83 u32int ebx;84 u32int ecx;85 u32int edx;86 u32int esi;87 u32int edi;88 u32int ebp;89 u32int eax;90 u32int ds;91 u32int es;92 u32int fs;93 u32int gs;94 u32int origeax;95 u32int eip;96 u32int cs;97 u32int eflags;98 u32int esp;99 u32int ss;100 };102 #if 0103 struct PrStatus386104 {105 u32int version; /* Version number of struct (1) */106 u32int statussz; /* sizeof(prstatus_t) (1) */107 u32int gregsetsz; /* sizeof(gregset_t) (1) */108 u32int fpregsetsz; /* sizeof(fpregset_t) (1) */109 int osreldate; /* Kernel version (1) */110 int cursig; /* Current signal (1) */111 pid_t pid; /* Process ID (1) */112 Reg386 reg; /* General purpose registers (1) */113 };114 #endif116 struct PrPsinfo117 {118 int version; /* Version number of struct (1) */119 u32int psinfosz; /* sizeof(prpsinfo_t) (1) */120 char fname[MAXCOMLEN+1]; /* Command name, null terminated (1) */121 char psargs[PRARGSZ+1]; /* Arguments, null terminated (1) */122 };124 struct PrStatus386125 {126 u32int signo;127 u32int code;128 u32int errno;129 u32int cursig;130 u32int sigpend;131 u32int sighold;132 u32int pid;133 u32int ppid;134 u32int pgrp;135 u32int sid;136 u32int utime[2];137 u32int stime[2];138 u32int cutime[2];139 u32int cstime[2];140 Reg386 reg;141 u32int fpvalid;142 };