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
27typedef 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}
37COFF_filehdr;
38
39/*
40 * Optional header.
41 */
42typedef 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}
53COFF_opthdr;
54
55/*
56 * Section header.
57 */
58typedef 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}
71COFF_scnhdr;
72
73#endif /* COFF_H */
74