The structure of the module map begins with a header that specifies the number of class entries and the length of each:
Field Name | Field Type | Offset | Length | Description |
---|---|---|---|---|
BMMP_HEADER | Char | 0 | 24 | |
BMMP_EYE_CATCHER | Char | 0 | 8 | Constant 'IEWBMMP' |
BMMP_LENGTH | Binary | 8 | 4 | Length including header |
BMMP_VERSION | Binary | 12 | 1 | Structure version=1 or 2 |
* | 13 | 3 | *Reserved* | |
BMMP_HEADER_LENGTH | Binary | 15 | 2 | Length to BMMP_ENTRIES_ |
BMMP_ENTRY_LENGTH | Binary | 18 | 2 | Length of one entry |
BMMP_ENTRY_COUNT | Binary | 20 | 4 | Number of entries |
BMMP_ENTRIES | 24 | Start of entries |
Each of the map entries has the following format:
Field Name | Field Type | Offset | Length | Description |
---|---|---|---|---|
BMMP_ENTRY | 24 | |||
BMMP_TYPE | Char | 0 | 1 | Type of map entry (G=segment, C=class, S=section, E=entry point, P=part) |
BMMP_FLAGS | Binary | 1 | 1 | |
BMMP_XPLINK | Bit | 1.0 | 1 | 1=XPLINK (types E/P only) |
BMMP_DATA | Bit | 1.1 | 1 | 1=DATA (types E/P only) |
BMMP_TIME | Bit | 1.2 | 1 | 1=Timestamp present in compile unit information |
BMMP_AMODE | Binary | 2 | 1 | Amode (types E/P only) |
BMMP_RMODE | Binary | 2 | 1 | Rmode (types G/C only) |
* | 3 | 1 | *Reserved* | |
BMMP_SEGNUM | Binary | 4 | 2 | Segment Number |
BMMP_NAME_LEN | Binary | 6 | 2 | Length of name |
BMMP_NAME_OFF | Binary | 8 | 4 | Offset of name from start of map |
BMMP_OFF | Binary | 12 | 4 | Offset of the class/element from start of segment |
BMMP_CU_INFO_OFF | Binary | 16 | 4 | Offset to compile unit info from start of map. Zero if none. |
BMMP_NEXT | Binary | 20 | 4 | Offset from start of map to next entry of same type |
Each entry for compile unit information has the following format:
Field Name | Field Type | Offset | Length | Description |
---|---|---|---|---|
BMMP_CU_INFO | 0 | 20 | ||
BMMP_ORIG_NAME_LEN | Binary | 0 | 2 | Length of data set or path name |
BMMP_ORIG_MEM_LEN | Binary | 2 | 2 | Length of member name |
BMMP_ORIG_NAME_OFF | Binary | 4 | 4 | Offset to data set or path name from start of the map |
BMMP_ORIG_MEM_OFF | Binary | 8 | 4 | Offset to member name from start of the map |
BMMP_TS_DATE | Char | 12 | 7 | Compile date yyyyddd |
BMMP_TS_TIME | Char | 19 | 9 | Compile time hhmmssttt if BMMP_VERSION=2 and BMMP_TIME=1 |
* | 19 | 1 | *Reserved* if BMMP_VERSION = 1 |