Module map format

The structure of the module map begins with a header that specifies the number of class entries and the length of each:

Table 1. Module map header
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:

Table 2. Map entry 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:

Table 3. Compile unit information
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