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