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 */
|
---|