home *** CD-ROM | disk | FTP | other *** search
-
- Documentation for OBJSCN.C Version 1.01
-
-
- This program is based on information from the article ".OBJ LESSON" in
- the October 1985 PCTJ, and uses the notation from that article. Certain
- errors in the article, however, became apparent while implementing the
- program, so be cautious in drawing conclusions when the program code and
- the article appear to contradict each other.
-
- The rather cryptic notation used in the FIXUPP record translations refers
- to the "frame" location to undergo the fix, the "target" location involved,
- and the method used by the linker to determine these. In the report, the
- "ofs=" value is the offset within the previous LEDATA record to which this
- FIXUPP refers.
-
- Fx and Tx refer to Frame and Target methods respectively. T0-T3 indicate
- index/displacement; T4-T7 and F0-F3 indicate index only. The low two bits
- indicate SEG if 00, GRP if 01, or EXT if 10; that is, T6 indicates that the
- target is specified by an index into the EXT name list.
-
- The "fi" and "ti" entries refer to Frame/Target index values if the method
- involves a GRP, SEG, or EXT reference, or to the thread ID number if the
- method indicates a previous-thread reference (method>7). The "tos=" field,
- if present, is the target displacement within the segment indicated by the
- "ti" index or the thread ID number.
-
- The GRPDEF record is not decoded in this version. The first value shown is
- the LNAMES index of the name of the group being defined. The "ff" bytes
- indicate nothing; the bytes following each "ff" are the SEG indices of the
- segments which constitute the group.
-
- Neither is the MODEND record decoded. A 2-byte record with value "00 74"
- is normal end-of-module with no specified entry address. A longer record with
- initial byte "c1" indicates that an entry address is specified. The last
- three bytes of the record (before the checksum byte) indicate the segment
- index and offset of the entry point.
-
- Any record type not recognized by the program will be reported as a 2-digit
- hex value, followed by the decimal length of the record. The bytes of the
- record will then be reported as a stream of hex values. The sole exception is
- a record type of "00"; this value, not used by any OBJ format, is ignored by
- the program, to permit skipping over null filler in MS-format LIB files.
-
- Direct questions and comments to Jim Kyle, 76703,762.
- ..jk.. 12/02/86
-
- addendum--
-
- After the package was uploaded to MSOFT, I received the following message
- from Daniel Cerutti. His additions have been included in this new version
- (version 1.01) with much gratitude!
-
- Date: 04-Jan-87 07:22 CST
- From: Daniel Cerutti [76267,426]
- Subj: OBJSCN - Object file dump
-
- Jim --
-
- I have downloaded OBJSCN.ARC. This is a very useful tool for
- examining object files. I have started a similar development
- as yours a few weeks ago, but I had no time to continue it.
- So may be I can help you continuing the development of OBJSCN.
- The reference document I use is the Microsoft MS-DOS Programmer's
- Reference (Document no. 8411-310-02, part no. 036-014-012) which
- includes the description of Intel Object Module Format as used
- by the Microsoft linker.
-
- Below is additional code to handle comment records class used
- by the linker. I have included support for the dynamic link
- records used by the DOS 4 / Windows linker (was documented
- in the material from the Microsoft Windows developer's conference).
-
- I would like to include code for the new records type used by
- Microsoft C 4.0 (type B0 hex), but have no doc on it. These
- records define global data, including data size definitions,
- but I am not sure of the format.
-
- Sorry for my english (I am swiss). I hope this is helpful
- to you. Regards.
- Daniel Cerutti.
-
- Compuserve: 76267,426
- BIX: dcerutti
-