From 80d468b4fefe2cafd096c14de63e6770cd2601f6 Mon Sep 17 00:00:00 2001 From: Tomas Hajny Date: Sun, 3 Sep 2000 19:02:03 +0000 Subject: [PATCH] + exe386 merged into Exe --- rtl/os2/exe.pas | 251 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 231 insertions(+), 20 deletions(-) diff --git a/rtl/os2/exe.pas b/rtl/os2/exe.pas index 1e35b53738..7b85de1928 100644 --- a/rtl/os2/exe.pas +++ b/rtl/os2/exe.pas @@ -1,31 +1,242 @@ -unit exe; +unit Exe; interface type exe = record - eid : WORD; - elast : WORD; - epagsiz : WORD; - erelcnt : WORD; - ehdrsiz : WORD; - eminfre : WORD; - emaxfre : WORD; - eiSS : WORD; - eiSP : WORD; - enegsum : WORD; - eiIP : WORD; - eiCS : WORD; - ereloff : WORD; - eovlnum : WORD; - ever : WORD; - dumy : WORD; - ebb : WORD; - dumy2 : array[0..7-1] of WORD; + eid : word; + elast : word; + epagsiz : word; + erelcnt : word; + ehdrsiz : word; + eminfre : word; + emaxfre : word; + eiSS : word; + eiSP : word; + enegsum : word; + eiIP : word; + eiCS : word; + ereloff : word; + eovlnum : word; + ever : word; + dumy : word; + ebb : word; + dumy2 : array[0..6] of word; end; const - EXEID = $5a4d; + EXEID = $5A4D; + +{ Declarations specific for LX-type executables follow } + const + BITPERword = 16; + BITPERBYTE = 8; + OBJPAGELEN = 4096; + E32MAGIC = $584C; + E32RESBYTES1 = 0; + E32RESBYTES2 = 0; + E32RESBYTES3 = 24; + E32LEBO = $00; + E32BEBO = $01; + E32LEWO = $00; + E32BEWO = $01; + E32LEVEL = 0; + E32CPU286 = $001; + E32CPU386 = $002; + E32CPU486 = $003; + + type + e32_exe = record + e32_magic : array[0..1] of byte; + e32_border : byte; + e32_worder : byte; + e32_level : longint; + e32_cpu : word; + e32_os : word; + e32_ver : longint; + e32_mflags : longint; + e32_mpages : longint; + e32_startobj : longint; + e32_eip : longint; + e32_stackobj : longint; + e32_esp : longint; + e32_pagesize : longint; + e32_pageshift : longint; + e32_fixupsize : longint; + e32_fixupsum : longint; + e32_ldrsize : longint; + e32_ldrsum : longint; + e32_objtab : longint; + e32_objcnt : longint; + e32_objmap : longint; + e32_itermap : longint; + e32_rsrctab : longint; + e32_rsrccnt : longint; + e32_restab : longint; + e32_enttab : longint; + e32_dirtab : longint; + e32_dircnt : longint; + e32_fpagetab : longint; + e32_frectab : longint; + e32_impmod : longint; + e32_impmodcnt : longint; + e32_impproc : longint; + e32_pagesum : longint; + e32_datapage : longint; + e32_preload : longint; + e32_nrestab : longint; + e32_cbnrestab : longint; + e32_nressum : longint; + e32_autodata : longint; + e32_debuginfo : longint; + e32_debuglen : longint; + e32_instpreload : longint; + e32_instdemand : longint; + e32_heapsize : longint; + e32_res3 : array[0..E32RESBYTES3-1] of byte; + end; + + const + E32NOTP = $8000; + E32NOLOAD = $2000; + E32PMAPI = $0300; + E32PMW = $0200; + E32NOPMW = $0100; + E32NOEXTFIX = $0020; + E32NOINTFIX = $0010; + E32LIBINIT = $0004; + E32LIBTERM = $40000000; + E32APPMASK = $0700; + E32PROTDLL = $10000; + E32DEVICE = $20000; + E32MODEXE = $00000; + E32MODDLL = $08000; + E32MODPROTDLL = $18000; + E32MODPDEV = $20000; + E32MODVDEV = $28000; + E32MODMASK = $38000; + RINTSIZE16 = 8; + RINTSIZE32 = 10; + RORDSIZE = 8; + RNAMSIZE16 = 8; + RNAMSIZE32 = 10; + RADDSIZE16 = 10; + RADDSIZE32 = 12; + NRSTYP = $0f; + NRSBYT = $00; + NRSSEG = $02; + NRSPTR = $03; + NRSOFF = $05; + NRPTR48 = $06; + NROFF32 = $07; + NRSOFF32 = $08; + NRSRCMASK = $0f; + NRALIAS = $10; + NRCHAIN = $20; + NRRTYP = $03; + NRRINT = $00; + NRRORD = $01; + NRRNAM = $02; + NRADD = $04; + NRRENT = $03; + NR32BITOFF = $10; + NR32BITADD = $20; + NR16OBJMOD = $40; + NR8BITORD = $80; + PAGEPERDIR = 62; + LG2DIR = 7; + + type + OBJPAGEDIR = record + next : longint; + ht : array[0..PAGEPERDIR-1] of word; + end; + + e32_obj = record + o32_size : longint; + o32_base : longint; + o32_flags : longint; + o32_pagemap : longint; + o32_mapsize : longint; + o32_reserved : longint; + end; + + const + OBJREAD = $0001; + OBJWRITE = $0002; + OBJRSRC = $0008; + OBJINVALID = $0080; + LNKNONPERM = $0600; + OBJNONPERM = $0000; + OBJPERM = $0100; + OBJRESIDENT = $0200; + OBJCONTIG = $0300; + OBJDYNAMIC = $0400; + OBJTYPEMASK = $0700; + OBJALIAS16 = $1000; + OBJBIGDEF = $2000; + OBJIOPL = $8000; + NSDISCARD = $0010; + NSMOVE = NSDISCARD; + NSSHARED = $0020; + NSPRELOAD = $0040; + NSEXRD = $0004; + NSCONFORM = $4000; + + type + o32_map = record + o32_pagedataoffset : longint; + o32_pagesize : word; + o32_pageflags : word; + end; + + const + VALID = $0000; + ITERDATA = $0001; + INVALID = $0002; + ZEROED = $0003; + RANGE = $0004; + ITERDATA2 = $0005; + + type + rsrc32 = record + _type : word; + name : word; + cb : longint; + obj : word; + offset : longint; + end; + +{$PACKRECORDS 1} + + LX_Iter = record + LX_nIter : word; + LX_nBytes : word; + LX_Iterdata : byte; + end; + + b32_bundle = record + b32_cnt : byte; + b32_type : byte; + b32_obj : word; + end; + +{$PACKRECORDS NORMAL} + const + FIXENT16 = 3; + FIXENT32 = 5; + GATEENT16 = 5; + FWDENT = 7; + EMPTY = $00; + ENTRY16 = $01; + GATE16 = $02; + ENTRY32 = $03; + ENTRYFWD = $04; + TYPEINFO = $80; + E32EXPORT = $01; + E32SHARED = $02; + E32PARAMS = $f8; + FWD_ORDINAL = $01; implementation