Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / include / coff.h
1 #ifndef COFF_H
2 #define COFF_H
3 /* Based on the elf.h file
4  * Changed accordingly to support COFF file support
5  */
6
7
8 /* Values for f_flags. */
9 #define F_RELFLG        0x0001  /* If set, not reloc. info. Clear for executables */
10 #define F_EXEC          0x0002  /* No unresolved symbols. Executable file ! */
11 #define F_LNNO          0x0004  /* If set, line information numbers removed  */
12 #define F_LSYMS         0x0008  /* If set, local symbols removed  */
13 #define F_AR32WR        0x0100  /* Indicates little endian file */
14
15 /* Values for e_machine (architecute). */
16 #define EM_E1           0x17a   /* Magic number for Hyperstone. Big endian format */
17
18 /* Values for f_flags. */
19 #define O_MAGIC         0x017c  /* Optional's header magic number for Hyperstone */
20
21 /* Values for s_flags. */
22 #define S_TYPE_TEXT     0x0020  /* If set, the section contains only executable */
23 #define S_TYPE_DATA     0x0040  /* If set, the section contains only initialized data */
24 #define S_TYPE_BSS      0x0080  /* If set, the section is BSS no data stored */
25
26
27 typedef struct
28 {
29         unsigned short  f_magic;        /* magic number                         */
30         unsigned short  f_nscns;        /* number of sections           */
31         unsigned long   f_timdat;       /* time & date stamp            */
32         unsigned long   f_symptr;       /* file pointer to symtab       */
33         unsigned long   f_nsyms;        /* number of symtab entries     */
34         unsigned short  f_opthdr;       /* sizeof(optional hdr)         */
35         unsigned short  f_flags;        /* flags                                        */
36 }
37 COFF_filehdr;
38
39 /*
40  * Optional header.
41  */
42 typedef struct 
43 {
44   unsigned short        magic;          /* type of file                         */
45   unsigned short        vstamp;         /* version stamp                        */
46   unsigned long         tsize;          /* text size in bytes, padded to FW bdry*/
47   unsigned long         dsize;          /* initialized data "  "                */
48   unsigned long         bsize;          /* uninitialized data "   "             */
49   unsigned long         entry;          /* entry pt.                            */
50   unsigned long         text_start;     /* base of text used for this file */
51   unsigned long         data_start;     /* base of data used for this file */
52 }       
53 COFF_opthdr;
54
55 /*
56  * Section header.
57  */
58 typedef struct 
59 {
60         char                            s_name[8];      /* section name                 */
61         unsigned long           s_paddr;        /* physical address, aliased s_nlib */
62         unsigned long           s_vaddr;        /* virtual address              */
63         unsigned long           s_size;         /* section size                 */
64         unsigned long           s_scnptr;       /* file ptr to raw data for section */
65         unsigned long           s_relptr;       /* file ptr to relocation       */
66         unsigned long           s_lnnoptr;      /* file ptr to line numbers     */
67         unsigned short          s_nreloc;       /* number of relocation entries */
68         unsigned short          s_nlnno;        /* number of line number entries*/
69         unsigned long           s_flags;        /* flags                        */
70 }
71 COFF_scnhdr;
72
73 #endif /* COFF_H */