diff options
Diffstat (limited to '')
-rw-r--r-- | private/windbg/osdebug/newexe.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/private/windbg/osdebug/newexe.h b/private/windbg/osdebug/newexe.h new file mode 100644 index 000000000..69c81a5b8 --- /dev/null +++ b/private/windbg/osdebug/newexe.h @@ -0,0 +1,105 @@ +/* SCCSID = @(#)newexe.h 4.6 86/09/10 */ +/* + * Title + * + * newexe.h + * Pete Stewart + * (C) Copyright Microsoft Corp 1984-1987 + * 17 August 1984 + * + * Description + * + * Data structure definitions for the DOS 4.0/Windows 2.0 + * executable file format. + * + * Modification History + * + * 84/08/17 Pete Stewart Initial version + * 84/10/17 Pete Stewart Changed some constants to match OMF + * 84/10/23 Pete Stewart Updates to match .EXE format revision + * 84/11/20 Pete Stewart Substantial .EXE format revision + * 85/01/09 Pete Stewart Added constants ENEWEXE and ENEWHDR + * 85/01/10 Steve Wood Added resource definitions + * 85/03/04 Vic Heller Reconciled Windows and DOS 4.0 versions + * 85/03/07 Pete Stewart Added movable entry count + * 85/04/01 Pete Stewart Segment alignment field, error bit + * 85/10/03 Reuben Borman Removed segment discard priority + * 85/10/11 Vic Heller Added PIF header fields + * 86/03/10 Reuben Borman Changes for DOS 5.0 + * 86/09/02 Reuben Borman NSPURE ==> NSSHARED + * 87/05/04 Reuben Borman Added ne_cres and NSCONFORM + * 87/07/08 Reuben Borman Added NEAPPTYPE definitions + * 87/10/28 Wieslaw Kalkus Added ne_exetyp + * 89/03/23 Wieslaw Kalkus Added ne_flagsothers for OS/2 1.2 + */ + + + + /*_________________________________________________________________* + | | + | | + | DOS3 .EXE FILE HEADER DEFINITION | + | | + |_________________________________________________________________| + * */ + + +#define EMAGIC 0x5A4D /* Old magic number */ +#define ENEWEXE sizeof(struct exe_hdr) + /* Value of E_LFARLC for new .EXEs */ +#define ENEWHDR 0x003C /* Offset in old hdr. of ptr. to new */ +#define ERESWDS 0x000d /* No. of reserved words (OLD) */ +#define ERES2WDS 0x000A /* No. of reserved words in e_res2 */ +#define ECP 0x0004 /* Offset in struct of E_CP */ +#define ECBLP 0x0002 /* Offset in struct of E_CBLP */ +#define EMINALLOC 0x000A /* Offset in struct of E_MINALLOC */ +#define EKNOWEAS 0x0001 /* e_flags - program understands EAs */ +#define EDOSEXTENDED 0x0002 /* e_flags - program runs under DOS extender */ + +struct exe_hdr /* DOS 1, 2, 3 .EXE header */ + { + unsigned short e_magic; /* Magic number */ + unsigned short e_cblp; /* Bytes on last page of file */ + unsigned short e_cp; /* Pages in file */ + unsigned short e_crlc; /* Relocations */ + unsigned short e_cparhdr; /* Size of header in paragraphs */ + unsigned short e_minalloc; /* Minimum extra paragraphs needed */ + unsigned short e_maxalloc; /* Maximum extra paragraphs needed */ + unsigned short e_ss; /* Initial (relative) SS value */ + unsigned short e_sp; /* Initial SP value */ + unsigned short e_csum; /* Checksum */ + unsigned short e_ip; /* Initial IP value */ + unsigned short e_cs; /* Initial (relative) CS value */ + unsigned short e_lfarlc; /* File address of relocation table */ + unsigned short e_ovno; /* Overlay number */ + unsigned long e_sym_tab; /* offset of symbol table file */ + unsigned short e_flags; /* old exe header flags */ + unsigned short e_res; /* Reserved words */ + unsigned short e_oemid; /* OEM identifier (for e_oeminfo) */ + unsigned short e_oeminfo; /* OEM information; e_oemid specific */ + unsigned short e_res2[ERES2WDS];/* Reserved words */ + long e_lfanew; /* File address of new exe header */ + }; + +#define E_MAGIC(x) (x).e_magic +#define E_CBLP(x) (x).e_cblp +#define E_CP(x) (x).e_cp +#define E_CRLC(x) (x).e_crlc +#define E_CPARHDR(x) (x).e_cparhdr +#define E_MINALLOC(x) (x).e_minalloc +#define E_MAXALLOC(x) (x).e_maxalloc +#define E_SS(x) (x).e_ss +#define E_SP(x) (x).e_sp +#define E_CSUM(x) (x).e_csum +#define E_IP(x) (x).e_ip +#define E_CS(x) (x).e_cs +#define E_LFARLC(x) (x).e_lfarlc +#define E_OVNO(x) (x).e_ovno +#define E_SYM_TAB(x) (x).e_sym_tab +#define E_FLAGS(x) (x).e_flags +#define E_RES(x) (x).e_res +#define E_OEMID(x) (x).e_oemid +#define E_OEMINFO(x) (x).e_oeminfo +#define E_RES2(x) (x).e_res2 +#define E_LFANEW(x) (x).e_lfanew + |