Language Environment prelinker map

The Language Environment prelinker produces a listing file called the prelinker map when you use the MAP prelinker option (which is the default). As the following example shows, the prelinker map contains several individual sections that are only generated if they are applicable.
========================================================================
|                            Prelinker Map                   1         |
|                                                                      |
| CPLINK:5647A01 V2 R9 M00 IBM Language Environment 2000/01/20 13:45:16|
========================================================================

Command Options. . . . . : NONCAL   NOMEMORY ER       DUP      MAP
                         : NOOMVS   NOUPCASE DYNAM


========================================================================
|                      Object Resolution Warnings            2         |
========================================================================

WARNING EDC4015: Unresolved references are detected:
CEESTART @@TRGLOR CEESG003


========================================================================
|                               File Map                     3         |
========================================================================

*ORIGIN  FILE ID  FILE NAME

   P      00001   DD:SYSIN
   IN     00002   *** DESCRIPTORS ***

*ORIGIN:  P=primary input     PI=primary INCLUDE    SI=secondary INCLUDE
          A=automatic call     R=RENAME card         L=C Library
         IN=internal


========================================================================
|                         Writable Static Map                4          |
========================================================================

  OFFSET    LENGTH  FILE ID  INPUT NAME

       0         4   00001   this_int_is_in_writable_static
       8        10   00002   <year>


========================================================================
|                           Load Module Map                  5         |
========================================================================

MODULE ID  MODULE NAME

  00001    EXPONLY


========================================================================
|                          Import Symbol Map                 6         |
========================================================================

*TYPE    FILE ID  MODULE ID  NAME

   D      00001     00001    year

*TYPE:  D=imported data  C=imported code
========================================================================
|                          Export Symbol Map                 7         |
========================================================================

*TYPE    FILE ID  NAME

   C      00001   get_year
   C      00001   next_year
   D      00001   this_int_is_in_writable_static
   C      00001   Name_Collision_In_First_Eight
   C      00001   Name_Collision_In_First8

*TYPE:  D=exported data  C=exported code


========================================================================
|                  ESD Map of Defined and Long Names         8         |
========================================================================

                   OUTPUT
*REASON  FILE ID  ESD NAME   INPUT NAME

   P              CEESTART   CEESTART
   D      00001   @ST00002   Name_Collision_In_First_Eight
   D      00001   @ST00001   Name_Collision_In_First8
   D      00001   NEXT@YEA   next_year
   D      00001   GET@YEAR   get_year
   D      00001   THIS@INT   this_int_not_in_writable_static
   P              @@TRGLOR   @@TRGLOR
   P              CEESG003   CEESG003

*REASON: P=#pragma or reserved    S=matches short name    R=RENAME card
         L=C Library              U=UPCASE option         D=Default


============  E N D   O F   P R E - L I N K A G E   M A P  =============
The numbers in the following text correspond to the numbers shown in the map.
 1  Heading
The heading is always generated and contains the product number, the library release number, the library version number, the date and the time the prelink step began, followed by a list of the prelinker options in effect for the step.
 2  Object Resolution Warnings
This section is generated if objects remained undefined at the end of the prelink step or if duplicate objects were detected during the step. The names of the applicable objects are listed.
 3  File Map
This section lists the object modules that were included in input. An object module consisting only of RENAME control statements, for example, is not shown. Also provided in this section are source origin (*ORIGIN), name (FILE NAME), and identifier (FILE ID) information. *ORIGIN indicates that the object module came from primary input because of:
  • An INCLUDE control statement in primary or secondary input.
  • A RENAME control statement.
  • The resolution of L-name library references.
  • The object module was internal and self-generated by the prelink step.

The FILE ID can be found in other sections and is used as a cross-reference to the object module.

The FILE NAME can be either the data set name and, if applicable, the member name, or the ddname and, if applicable, the member name.

If you are prelinking an application that imports variables or functions from a DLL, the variable descriptors and function descriptors are defined in a file called *** DESCRIPTORS ***. This file has an origin of internal.

 4  Writable Static Map
This section is generated if an object module was encountered that contains defined static external data. This area also contains variable descriptors for any imported variables and, if required, function descriptors. This section lists the names of such objects, their lengths, their relative offset within the writable static area, and a FILE ID for the file containing the object's definition.

Imported variables and DLL-referenced functions have angular brackets (<>) around their names in this section.

 5  Load Module Map
This section is generated if the application imports symbols from other load modules. This section lists the names of the load modules.
 6  Import Symbol Map
This section lists the symbols that are imported from other load modules. These otherwise unresolved DLL references are resolved through IMPORT control statements. It describes the type of symbol, that is, D (variable) or C (function). It also lists the file ID of the object module containing the corresponding IMPORT control statements, the module ID of the load module on that control statement, and the symbol name.

A DLL application would generate this section.

 7  Export Symbol Map
This section lists the symbols generated by an object module that exports symbols. It describes the type of symbol, that is, D (variable) or C (function). It also lists the file ID of the object where the symbol is defined and the symbol name. Only externally defined data objects in writable static or externally defined functions can be exported.

Code that is compiled with the C, C++, or COBOL EXPORTALL compiler option or C/C++ code containing the #pragma export directive generates an object module that exports symbols.

Note: The export symbol map will NOT be produced if the NODYNAM option is in effect.
 8  ESD Map of Defined and Longnames
This section lists the names of external symbols that are not in writable static. It also shows a mapping of input L-names to output S-names.

If the object is defined, the FILE ID indicates the file that contains the definition. Otherwise, this field is left blank. For any name, the input name and output S-name are listed. If the input name is an L-name, the rule used to map the L-name to the S-name is applied. If the name is not an L-name, this field is left blank.