aboutsummaryrefslogtreecommitdiff
path: root/src/libmach/elfcore.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmach/elfcore.h')
-rw-r--r--src/libmach/elfcore.h142
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;
+};