Subj : IOPL code with Watcom C
To   : Vitus Jensen
From : Jonathan de Boyne Pollard
Date : Sat Dec 16 2000 08:32 am

VJ>>>                 mov     eax,INB                ; 0x000E0000

JdBP>> If that really *isn't* a call gate (double-check it) then I suspect
JdBP>> a linker problem.  Dump the executable and look at the fixups for
JdBP>> the page containing that particular piece of code.

VJ> There is only one answer: how?

You picked the right tool, EXEHDR, anyway, so I won't bother answering that
question. (-:

VJ> Watcom debugger, expect memory: entering 0x000E:0000 tells me I'm at
VJ> INB+0  and the hex dump shows all the correct opcodes.

That would indicate that 0x000E is the actual code selector for that segment
rather than a call gate.  So the next thing to find is the part of the LX file
that represents the above MOV instruction.

VJ> Now I need to check where the calls to INB are located?  Inside page 4.
VJ> exehdr mmpdemo.exe /v:

VJ> page 4            type         offset     target
VJ> obj  4:0000       16:16 PTR    0033       object    1 offset 0000 alias
VJ>                   16:16 PTR    005a       object    1 offset 0028 alias
VJ>                   16:16 PTR    0075       object    1 offset 0000 alias
VJ>                   16:16 PTR    0099       object    1 offset 0028 alias

I'll have to double-check, but that doesn't look like a correct fixup.

� JdeBP �

--- FleetStreet 1.22 NR
* Origin: JdeBP's point, using Squish <yuk!> (2:257/609.3)