Extended object module (XOBJ)

Some compilers may create a modified object module. The z/OS® C compiler, for example, may create this modified object module format when LONGNAME or RENT is in effect as a compile option. The modified object module consists of several subfiles, each of which has the form of an ordinary object module, except that the ESD records will generally be replaced by XSD records. The first subfile consists of two records. The first record is an ESD record containing a single ESD item: a 0-length section definition (SD) for the name @@DOPLNK. The second record is an END record with the appropriate product and date information. It is this subfile which triggers the recognition of this module as an XOBJ module.

XOBJ modules can be processed by either the Language Environment® prelinker or the binder. XOBJ modules (input to the binder) which contain an XSD record for symbol @@XINIT@ can be saved only in a PO3 (or greater) format program object. XOBJ modules containing an XSD record for @@XINIT@ are those which use C-style reentrancy.

When XOBJ input modules are saved in a PO3 or higher format program object, the sections in the program object will not always correspond to CSECTS defined by SD records in the input module. CSECTS with compiler-generated names (those beginning with @@) may be renamed, or combined with other CSECTs into a single output section. The @@DOPLNK csect will not appear in the output module.

The remainder of this appendix defines the XSD record format.