plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

elfcore.h (2565B)


      1 /* Copyright (c) 2002, 2003 William Josephson */
      2 
      3 enum {
      4 	CoremapMagic	= 0xba5eba11,
      5 	CoremapMax	= 128,
      6 };
      7 #undef MAXCOMLEN
      8 #define MAXCOMLEN 16
      9 #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 */
     12 
     13 
     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;
     21 
     22 struct CoremapHeader {
     23 	u32int	magic;
     24 	u32int	counter;
     25 	u32int	maxelem;
     26 };
     27 
     28 struct CoremapItem {
     29 	u32int	address;
     30 	u32int	size;
     31 };
     32 
     33 struct Coremap {
     34 	CoremapHeader	header;
     35 	CoremapItem	map[CoremapMax];
     36 };
     37 
     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 };
     46 
     47 enum
     48 {
     49 	NotePrStatus = 1,
     50 	NotePrFpreg = 2,
     51 	NotePrPsinfo = 3,
     52 	NotePrTaskstruct = 4,
     53 	NotePrAuxv = 6,
     54 	NotePrXfpreg = 0x46e62b7f,	/* according to gdb */
     55 };
     56 #if 0
     57 struct Reg386
     58 {
     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 #endif
     80 
     81 struct Reg386
     82 {
     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 };
    101 
    102 #if 0
    103 struct PrStatus386
    104 {
    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 #endif
    115 
    116 struct PrPsinfo
    117 {
    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 };
    123 
    124 struct PrStatus386
    125 {
    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 };