diff options
author | rsc <devnull@localhost> | 2004-04-19 19:29:25 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-04-19 19:29:25 +0000 |
commit | a84cbb2a17c9d0b88c561d5b7cb50d79a19e7c46 (patch) | |
tree | 59a0e921597e5aa53e83d487c16727a7bf01547a /src/libmach/elfcore.h | |
parent | 0e3cc9f456ea49919459bf1164d0c8309a6134fa (diff) | |
download | plan9port-a84cbb2a17c9d0b88c561d5b7cb50d79a19e7c46.tar.gz plan9port-a84cbb2a17c9d0b88c561d5b7cb50d79a19e7c46.tar.bz2 plan9port-a84cbb2a17c9d0b88c561d5b7cb50d79a19e7c46.zip |
libmach
Diffstat (limited to 'src/libmach/elfcore.h')
-rw-r--r-- | src/libmach/elfcore.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/src/libmach/elfcore.h b/src/libmach/elfcore.h new file mode 100644 index 00000000..f1e953fb --- /dev/null +++ b/src/libmach/elfcore.h @@ -0,0 +1,142 @@ +/* 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; +}; |