xref: /minix3/minix/include/sys/elf_core.h (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1 /*
2  * This file mainly provides a definition of the structures used
3  * to describe the notes section of an ELF file.
4  *
5  * It is the interface between MINIX core dump and GDB
6  */
7 
8 #ifndef _SYS_ELF_CORE_H_
9 #define _SYS_ELF_CORE_H_
10 
11 #include <sys/param.h>
12 #include <machine/stackframe.h>
13 
14 /* MINIX core file format:
15  *
16  * The core file is in ELF format. Besides the regular program segments,
17  * it has a NOTE segment which contains two NOTE entries
18  * - one containing a minix_elfcore_info_t and the other one containing
19  * the general purpose registers (a stackframe_s structure)
20  */
21 
22 typedef struct stackframe_s gregset_t; /* General purpose registers */
23 
24 /*
25  * A lot more things should be added to these structures.  At present,
26  * they contain the absolute bare minimum required to allow GDB to work
27  * with MINIX ELF core dumps.
28  */
29 
30 #define ELF_NOTE_MINIX_ELFCORE_NAME	"MINIX-CORE"
31 #define NT_MINIX_ELFCORE_INFO		1
32 #define NT_MINIX_ELFCORE_GREGS		2
33 
34 #define MINIX_ELFCORE_VERSION		1  /* Current version of minix_elfcore_info_t */
35 #define RESERVED_SIZE                   5
36 
37 typedef struct minix_elfcore_info {
38   /* Version 1 fields */
39   uint32_t	mei_version;		/* Version number of struct */
40   uint32_t	mei_meisize;		/* sizeof(minix_elfcore_info_t) */
41   uint32_t	mei_signo;		/* killing signal */
42   int32_t	mei_pid;		/* Process ID */
43   int8_t        mei_command[MAXCOMLEN]; /* Command */
44   uint32_t      flags;                  /* Flags */
45   int32_t       reserved[RESERVED_SIZE];/* Reserved space*/
46   /* Put below version 2 fields */
47 } minix_elfcore_info_t;
48 
49 #endif /* _SYS_ELF_CORE_H_ */
50 
51