4 * Copyright (c) 2000 Masaru OKI
7 #ifndef _PECOFF_EXEC_H_
8 #define _PECOFF_EXEC_H_
10 struct pecoff_dos_filehdr {
11 u_int16_t d_magic;/* +0x00 'MZ' */
12 u_int8_t d_stub[0x3a];
13 u_int32_t d_peofs;/* +0x3c */
16 #define PECOFF_DOS_MAGIC 0x5a4d
17 #define PECOFF_DOS_HDR_SIZE (sizeof(struct pecoff_dos_filehdr))
19 #define DOS_BADMAG(dp) ((dp)->d_magic != PECOFF_DOS_MAGIC)
26 u_short f_magic;/* magic number */
27 u_short f_nscns;/* # of sections */
28 long f_timdat; /* timestamp */
29 long f_symptr; /* file offset of symbol table */
30 long f_nsyms;/* # of symbol table entries */
31 u_short f_opthdr; /* size of optional header */
32 u_short f_flags;/* flags */
51 #define COFF_OMAGIC 0407 /* text not write-protected; data seg is
52 * contiguous with text */
53 #define COFF_NMAGIC 0410 /* text is write-protected; data starts at
54 * next seg following text */
55 #define COFF_ZMAGIC 0413 /* text and data segs are aligned for direct
57 #define COFF_SMAGIC 0443 /* shared lib */
59 struct pecoff_imghdr {
64 struct pecoff_opthdr {
83 struct pecoff_imghdr w_imghdr[16];
104 #define COFF_STYP_REG 0x00
105 #define COFF_STYP_DSECT 0x01
106 #define COFF_STYP_NOLOAD 0x02
107 #define COFF_STYP_GROUP 0x04
108 #define COFF_STYP_PAD 0x08
109 #define COFF_STYP_COPY 0x10
110 #define COFF_STYP_TEXT 0x20
111 #define COFF_STYP_DATA 0x40
112 #define COFF_STYP_BSS 0x80
113 #define COFF_STYP_INFO 0x200
114 #define COFF_STYP_OVER 0x400
115 #define COFF_STYP_SHLIB 0x800
117 #define COFF_STYP_DISCARD 0x2000000
118 #define COFF_STYP_EXEC 0x20000000
119 #define COFF_STYP_READ 0x40000000
120 #define COFF_STYP_WRITE 0x80000000
127 struct pecoff_imghdr a_imghdr[16];
132 #define COFF_LDPGSZ 4096
133 #define COFF_ALIGN(a) ((a) & ~(COFF_LDPGSZ - 1))
134 #define COFF_ROUND(a) COFF_ALIGN((a) + COFF_LDPGSZ - 1)
136 #define COFF_HDR_SIZE \
137 (sizeof(struct coff_filehdr) + sizeof(struct coff_aouthdr))
139 #define PECOFF_HDR_SIZE (COFF_HDR_SIZE + sizeof(struct pecoff_opthdr))