[alt.msdos.programmer] Object Module Format Details

wiml@blake.acs.washington.edu (William Lewis) (05/08/90)

     I'm writing a set of routines to read/write/otherwise manipulate
object modules... unfortunately, the definition of the format I have
(Microsoft Relocatable Object Module Formats, Feb '86...) is less than clear
on a few points. I'd appreciate any explanations or pointers anyone
could give ...


  1. THEADR and LHEADR records. What's the difference? When is one used
instead of the other? Also, the syntax description seems to imply that
any number of THEADR and LHEADR records may occur at the beginning of
the module. Does this ever really happen, and what should be done with
the extras if it does? Should they be discarded? Concatenated? 

  2. TYPDEF records:
      Is there a reason for the single NUL (0x00) byte at the beginning
of a TYPDEF record?
      What does it mean when a leaf is EASY vs. NICE?
      Since, according to this, LINK ignores all the type information
in an object module anyway, can TYPDEFS be safely ignored or
discarded? (I hope =8) )
      My compiler regularly outputs a TYPDEF with the contents
0x00 0x00 0x80. This doesn't seem to parse according to the definition
in this reference (which only gives leaf types that start with
0x62 or 0x61, NEAR or FAR.) I'd assume the format has been extended
since 1986... is this one such?

   Thanks in advance for any help or info ...

-- 
JESUS SAVES   |  wiml@blake.acs.washington.edu       Seattle, Washington
but Clones 'R' Us makes backups!  |  47 41' 15" N   122 42' 58" W