blob: f1e953fbef91237c7c92474c942456b24ac8259d [file] [log] [blame]
/* 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;
};