Skip to content
Permalink
Browse files

LX loader: Code formatting and style fixes.

  • Loading branch information
valerius2k committed Nov 22, 2019
1 parent de9ed06 commit 2a3cf7dee03de10101c29c99972044ad793d7f34
Showing with 2,239 additions and 1,981 deletions.
  1. +6 −6 shared/lib/ixf/lx/allocmem.c
  2. +143 −114 shared/lib/ixf/lx/debug.c
  3. +496 −413 shared/lib/ixf/lx/fixup.c
  4. +168 −151 shared/lib/ixf/lx/load.c
  5. +453 −417 shared/lib/ixf/lx/loadobj.c
  6. +360 −345 shared/lib/ixf/lx/lx.c
  7. +613 −535 shared/lib/ixf/lx/mod.c
@@ -29,15 +29,15 @@ void *allocmem(unsigned long long area,

if (rc)
{
return NULL;
return NULL;
}

rc = RegAreaAttach(&addr, size, (unsigned long)area,
rights, *ds, 0, 0);

if (rc)
{
return NULL;
return NULL;
}

return addr;
@@ -52,22 +52,22 @@ int translate_os2_flags(int flags)

if (flags & PAG_COMMIT)
{
rights |= DATASPACE_MAP;
rights |= DATASPACE_MAP;
}

if (flags & PAG_EXECUTE)
{
rights |= DATASPACE_READ;
rights |= DATASPACE_READ;
}

if ( (flags & PAG_READ) && ! (flags & PAG_WRITE) )
{
rights |= DATASPACE_WRITE;
rights |= DATASPACE_WRITE;
}

if (flags & PAG_WRITE)
{
rights |= DATASPACE_WRITE;
rights |= DATASPACE_WRITE;
}

return rights;
@@ -8,122 +8,151 @@

void dump_header_mz(struct exe hdr)
{
io_log("\t\t\tDOS 2.0 EXE Header\n");
io_log("==============================================================================\n");
io_log("length of load module mod 200H = %04XH\n", hdr.elast);
io_log("number of 200H pages in load module = %04XH\n", hdr.epagsiz);
io_log("number of relocation items = %04XH\n", hdr.erelcnt);
io_log("size of header in paragraphs = %04XH\n", hdr.ehdrsiz);
io_log("minimum number of paragraphs required above load mod = %04XH\n", hdr.eminfre);
io_log("maximum number of paragraphs required above load mod = %04XH\n", hdr.emaxfre);
io_log("offset of stack segment in load module = %04XH\n", hdr.eiSS);
io_log("initial value of SP = %04XH\n", hdr.eiSP);
io_log("checksum = %04XH\n", hdr.enegsum);
io_log("initial value of IP = %04XH\n", hdr.eiIP);
io_log("offset of code segment within load module (segment) = %04XH\n", hdr.eiCS);
io_log("file offset of first relocation item = %04XH\n", hdr.ereloff);
io_log("overlay number = %04XH\n", hdr.eovlnum);
io_log("load module length = %08XH\n", hdr.elast);
io_log("\n");
io_log("\t\t\tDOS 2.0 EXE Header\n");
io_log("==============================================================================\n");
io_log("length of load module mod 200H = %04XH\n", hdr.elast);
io_log("number of 200H pages in load module = %04XH\n", hdr.epagsiz);
io_log("number of relocation items = %04XH\n", hdr.erelcnt);
io_log("size of header in paragraphs = %04XH\n", hdr.ehdrsiz);
io_log("minimum number of paragraphs required above load mod = %04XH\n", hdr.eminfre);
io_log("maximum number of paragraphs required above load mod = %04XH\n", hdr.emaxfre);
io_log("offset of stack segment in load module = %04XH\n", hdr.eiSS);
io_log("initial value of SP = %04XH\n", hdr.eiSP);
io_log("checksum = %04XH\n", hdr.enegsum);
io_log("initial value of IP = %04XH\n", hdr.eiIP);
io_log("offset of code segment within load module (segment) = %04XH\n", hdr.eiCS);
io_log("file offset of first relocation item = %04XH\n", hdr.ereloff);
io_log("overlay number = %04XH\n", hdr.eovlnum);
io_log("load module length = %08XH\n", hdr.elast);
io_log("\n");
}

void dump_header_lx(struct e32_exe hdr)
{
io_log("\t\tLinear EXE Header (OS/2 V2.x) - LX\n");
io_log("==============================================================================\n");
io_log("file offset = 00000080H\n");
io_log("\n");
io_log("byte order (0==little endian, 1==big endian) = %02XH\n", E32_BORDER(hdr));
io_log("word order \" \" = %02XH\n", E32_WORDER(hdr));
io_log("linear EXE format level = %08XH\n", E32_LEVEL(hdr));
io_log("cpu type = %04XH\n", E32_CPU(hdr));
io_log("os type (1==OS/2, 2==Windows, 3==DOS4, 4==Win386) = %04XH\n", E32_OS(hdr));
io_log("module version = %08XH\n", E32_VER(hdr));
io_log("module flags = %08XH\n", E32_MFLAGS(hdr));
io_log("# module pages = %08XH\n", E32_MPAGES(hdr));
io_log("object # for initial EIP = %08XH\n", E32_STARTOBJ(hdr));
io_log("initial EIP = %08XH\n", E32_EIP(hdr));
io_log("object # for initial ESP = %08XH\n", E32_STACKOBJ(hdr));
io_log("initial ESP = %08XH\n", E32_ESP(hdr));
io_log("page size = %08XH\n", E32_PAGESIZE(hdr));
io_log("last page size (LE)/page shift (LX) = %08XH\n", E32_PAGESHIFT(hdr));
io_log("fixup section size = %08XH\n", E32_FIXUPSIZE(hdr));
io_log("fixup section checksum = %08XH\n", E32_FIXUPSUM(hdr));
io_log("loader section size = %08XH\n", E32_LDRSIZE(hdr));
io_log("loader section checksum = %08XH\n", E32_LDRSUM(hdr));
io_log("object table offset = %08XH\n", E32_OBJTAB(hdr));
io_log("# of objects in module = %08XH\n", E32_OBJCNT(hdr));
io_log("object page map offset = %08XH\n", E32_OBJMAP(hdr));
io_log("object iterated data map offset = %08XH\n", E32_ITERMAP(hdr));
io_log("offset of resource table = %08XH\n", E32_RSRCTAB(hdr));
io_log("# of resource entries = %08XH\n", E32_RSRCCNT(hdr));
io_log("offset of resident name table = %08XH\n", E32_RESTAB(hdr));
io_log("offset of entry table = %08XH\n", E32_ENTTAB(hdr));
io_log("offset of module directive table = %08XH\n", E32_DIRTAB(hdr));
io_log("# of module directives = %08XH\n", E32_DIRCNT(hdr));
io_log("offset of fixup page table = %08XH\n", E32_FPAGETAB(hdr));
io_log("offset of fixup record table = %08XH\n", E32_FRECTAB(hdr));
io_log("offset of import module name table = %08XH\n", E32_IMPMOD(hdr));
io_log("# of entries in import module name table = %08XH\n", E32_IMPMODCNT(hdr));
io_log("offset of import procedure name table = %08XH\n", E32_IMPPROC(hdr));
io_log("offset of per-page checksum table = %08XH\n", E32_PAGESUM(hdr));
io_log("offset of enumerated data pages = %08XH\n", E32_DATAPAGE(hdr));
io_log("# of pre-load pages = %08XH\n", E32_PRELOAD(hdr));
io_log("offset of non-resident names table (rel file) = %08XH\n", E32_NRESTAB(hdr));
io_log("size of non-resident names table = %08XH\n", E32_CBNRESTAB(hdr));
io_log("non-resident names table checksum = %08XH\n", E32_NRESSUM(hdr));
io_log("object # for automatic data object = %08XH\n", E32_AUTODATA(hdr));
io_log("offset of the debugging information = %08XH\n", E32_DEBUGINFO(hdr));
io_log("size of the debugging information = %08XH\n", E32_DEBUGLEN(hdr));
io_log("# of instance pages in the preload section = %08XH\n", E32_INSTPRELOAD(hdr));
io_log("# of instance pages in the demand load section = %08XH\n", E32_INSTDEMAND(hdr));
io_log("size of heap (for 16-bit apps) = %08XH\n", E32_HEAPSIZE(hdr));
io_log("size of stack = %08XH\n", E32_STACKSIZE(hdr));
io_log("Module Flags = ");
if( (E32_MFLAGS(hdr) & E32MODMASK) == E32MODVDEV ) {
io_log( "VIRTDEVICE" );
} else if( (E32_MFLAGS(hdr) & E32MODMASK) == E32MODPDEV ) {
io_log( "PHYSDEVICE" );
} else if( (E32_MFLAGS(hdr) & E32MODMASK) == E32MODDLL ) {
io_log( "LIBRARY" );
} else {
io_log( "PROGRAM" );
}
if( E32_MFLAGS(hdr) & 0x0001 ) {
io_log( " | SINGLEDATA" );
}
if( E32_MFLAGS(hdr) & E32LIBINIT ) {
io_log( " | INITINSTANCE" );
}
if( E32_MFLAGS(hdr) & E32LIBTERM ) {
io_log( " | TERMINSTANCE" );
}
if( E32_MFLAGS(hdr) & E32PROTDLL ) {
io_log( " | PROTDLL" );
}
if( E32_MFLAGS(hdr) & E32NOINTFIX ) {
io_log( " | NO_INT_FIXUPS" );
}
if( E32_MFLAGS(hdr) & E32NOEXTFIX ) {
io_log( " | NO_EXT_FIXUPS" );
}
if( E32_MFLAGS(hdr) & E32NOLOAD ) {
io_log( " | LINKERRORSDETECTED" );
}
switch( E32_MFLAGS(hdr) & E32APPMASK ) {
case E32NOPMW:
io_log( " | NOTWINDOWCOMPAT" );
break;
case E32PMW:
io_log( " | WINDOWCOMPAT" );
break;
case E32PMAPI:
io_log( " | WINDOWAPI" );
break;
}
if( E32_MFLAGS(hdr) & 0x80000 ) {
io_log( " | MPUNSAFE" );
}
io_log( "\n" );
io_log( "\n" );
io_log("\t\tLinear EXE Header (OS/2 V2.x) - LX\n");
io_log("==============================================================================\n");
io_log("file offset = 00000080H\n");
io_log("\n");
io_log("byte order (0==little endian, 1==big endian) = %02XH\n", E32_BORDER(hdr));
io_log("word order \" \" = %02XH\n", E32_WORDER(hdr));
io_log("linear EXE format level = %08XH\n", E32_LEVEL(hdr));
io_log("cpu type = %04XH\n", E32_CPU(hdr));
io_log("os type (1==OS/2, 2==Windows, 3==DOS4, 4==Win386) = %04XH\n", E32_OS(hdr));
io_log("module version = %08XH\n", E32_VER(hdr));
io_log("module flags = %08XH\n", E32_MFLAGS(hdr));
io_log("# module pages = %08XH\n", E32_MPAGES(hdr));
io_log("object # for initial EIP = %08XH\n", E32_STARTOBJ(hdr));
io_log("initial EIP = %08XH\n", E32_EIP(hdr));
io_log("object # for initial ESP = %08XH\n", E32_STACKOBJ(hdr));
io_log("initial ESP = %08XH\n", E32_ESP(hdr));
io_log("page size = %08XH\n", E32_PAGESIZE(hdr));
io_log("last page size (LE)/page shift (LX) = %08XH\n", E32_PAGESHIFT(hdr));
io_log("fixup section size = %08XH\n", E32_FIXUPSIZE(hdr));
io_log("fixup section checksum = %08XH\n", E32_FIXUPSUM(hdr));
io_log("loader section size = %08XH\n", E32_LDRSIZE(hdr));
io_log("loader section checksum = %08XH\n", E32_LDRSUM(hdr));
io_log("object table offset = %08XH\n", E32_OBJTAB(hdr));
io_log("# of objects in module = %08XH\n", E32_OBJCNT(hdr));
io_log("object page map offset = %08XH\n", E32_OBJMAP(hdr));
io_log("object iterated data map offset = %08XH\n", E32_ITERMAP(hdr));
io_log("offset of resource table = %08XH\n", E32_RSRCTAB(hdr));
io_log("# of resource entries = %08XH\n", E32_RSRCCNT(hdr));
io_log("offset of resident name table = %08XH\n", E32_RESTAB(hdr));
io_log("offset of entry table = %08XH\n", E32_ENTTAB(hdr));
io_log("offset of module directive table = %08XH\n", E32_DIRTAB(hdr));
io_log("# of module directives = %08XH\n", E32_DIRCNT(hdr));
io_log("offset of fixup page table = %08XH\n", E32_FPAGETAB(hdr));
io_log("offset of fixup record table = %08XH\n", E32_FRECTAB(hdr));
io_log("offset of import module name table = %08XH\n", E32_IMPMOD(hdr));
io_log("# of entries in import module name table = %08XH\n", E32_IMPMODCNT(hdr));
io_log("offset of import procedure name table = %08XH\n", E32_IMPPROC(hdr));
io_log("offset of per-page checksum table = %08XH\n", E32_PAGESUM(hdr));
io_log("offset of enumerated data pages = %08XH\n", E32_DATAPAGE(hdr));
io_log("# of pre-load pages = %08XH\n", E32_PRELOAD(hdr));
io_log("offset of non-resident names table (rel file) = %08XH\n", E32_NRESTAB(hdr));
io_log("size of non-resident names table = %08XH\n", E32_CBNRESTAB(hdr));
io_log("non-resident names table checksum = %08XH\n", E32_NRESSUM(hdr));
io_log("object # for automatic data object = %08XH\n", E32_AUTODATA(hdr));
io_log("offset of the debugging information = %08XH\n", E32_DEBUGINFO(hdr));
io_log("size of the debugging information = %08XH\n", E32_DEBUGLEN(hdr));
io_log("# of instance pages in the preload section = %08XH\n", E32_INSTPRELOAD(hdr));
io_log("# of instance pages in the demand load section = %08XH\n", E32_INSTDEMAND(hdr));
io_log("size of heap (for 16-bit apps) = %08XH\n", E32_HEAPSIZE(hdr));
io_log("size of stack = %08XH\n", E32_STACKSIZE(hdr));
io_log("Module Flags = ");

if ( (E32_MFLAGS(hdr) & E32MODMASK) == E32MODVDEV )
{
io_log( "VIRTDEVICE" );
}
else if ( (E32_MFLAGS(hdr) & E32MODMASK) == E32MODPDEV )
{
io_log( "PHYSDEVICE" );
}
else if ( (E32_MFLAGS(hdr) & E32MODMASK) == E32MODDLL )
{
io_log( "LIBRARY" );
}
else
{
io_log( "PROGRAM" );
}

if ( E32_MFLAGS(hdr) & 0x0001 )
{
io_log( " | SINGLEDATA" );
}

if ( E32_MFLAGS(hdr) & E32LIBINIT )
{
io_log( " | INITINSTANCE" );
}

if ( E32_MFLAGS(hdr) & E32LIBTERM )
{
io_log( " | TERMINSTANCE" );
}

if ( E32_MFLAGS(hdr) & E32PROTDLL )
{
io_log( " | PROTDLL" );
}

if ( E32_MFLAGS(hdr) & E32NOINTFIX )
{
io_log( " | NO_INT_FIXUPS" );
}

if ( E32_MFLAGS(hdr) & E32NOEXTFIX )
{
io_log( " | NO_EXT_FIXUPS" );
}

if ( E32_MFLAGS(hdr) & E32NOLOAD )
{
io_log( " | LINKERRORSDETECTED" );
}

switch ( E32_MFLAGS(hdr) & E32APPMASK )
{
case E32NOPMW:
io_log( " | NOTWINDOWCOMPAT" );
break;

case E32PMW:
io_log( " | WINDOWCOMPAT" );
break;

case E32PMAPI:
io_log( " | WINDOWAPI" );
break;
}

if ( E32_MFLAGS(hdr) & 0x80000 )
{
io_log( " | MPUNSAFE" );
}

io_log( "\n" );
io_log( "\n" );
}

0 comments on commit 2a3cf7d

Please sign in to comment.