

  TYPE
    llt$code_element = array [ * ] of 0 .. 255;


  { Original version }

  TYPE
    llt$info_element_hdr = record
      relocation_ptr: REL (llt$object_library) ^llt$relocation,
      number_of_rel_items: 0 .. llc$max_rel_items,
      component_ptr: REL (llt$object_library) ^llt$component_information,
      number_of_components: 0 .. llc$max_components,
      binding_template_ptr: REL (llt$object_library)
        ^llt$binding_section_template,
      number_of_template_items: 0 .. llc$max_binding_items,
    recend;


  CONST
    llc$info_element_version_1_0 = 'V1.0';

  TYPE
    llt$info_element_header_1_0 = record
      version: llt$version,
      relocation_ptr: REL (llt$object_library) ^llt$relocation,
      number_of_rel_items: 0 .. llc$max_rel_items,
      component_ptr: REL (llt$object_library) ^llt$component_information,
      number_of_components: 0 .. llc$max_components,
      binding_template_ptr: REL (llt$object_library)
        ^llt$binding_section_template,
      number_of_template_items: 0 .. llc$max_binding_items,
      section_maps: REL (llt$object_library) ^llt$section_maps,
      number_of_section_maps: llt$number_of_sections,
    recend;


  CONST
    llc$info_element_version = 'V1.1';

  TYPE
    llt$info_element_header = record
      version: llt$version,
      relocation_ptr: REL (llt$object_library) ^llt$relocation,
      number_of_rel_items: llt$number_of_info_elements,
      component_ptr: REL (llt$object_library) ^llt$component_information,
      number_of_components: 0 .. llc$max_components,
      binding_template_ptr: REL (llt$object_library)
        ^llt$binding_section_template,
      number_of_template_items: llt$number_of_info_elements,
      section_maps: REL (llt$object_library) ^llt$section_maps,
      number_of_section_maps: llt$number_of_sections,
    recend;


  CONST
*IF $true(osv$unix)
    llc$max_info_elements = 7fffffff(16),
*ELSE
    llc$max_info_elements = 0ffffffff(16),
*IFEND
    llc$max_components = 0ffff(16),
    llc$max_binding_items = 0ffff(16);

  TYPE
    llt$version = string ( 4 ),
    llt$number_of_info_elements = 0 .. llc$max_info_elements;


  TYPE
    llt$component_information = array [1 .. * ] of llt$component_description,

    llt$component_description = record
      name: pmt$program_name,
      time_created: ost$time,
      date_created: ost$date,
      generator_id: llt$module_generator,
      generator_name_vers: string (40),
      commentary: string (40),
    recend;


  TYPE
    llt$binding_section_template = array [1 .. * ] of llt$binding_template;


  TYPE
    llt$number_of_sections = 0 .. llc$max_section_ordinal + 1;

  TYPE
    llt$section_maps = array [0 .. *] of llt$section_map;

  TYPE
    llt$section_map = record
      number_of_items: llt$number_of_sections,
      map: REL (llt$object_library) ^llt$section_map_items,
    recend;

  TYPE
    llt$section_map_items = array [1 .. *] of llt$section_map_item;

  TYPE
    llt$section_map_item = record
      original_section_ordinal: llt$section_ordinal,
      offset: llt$section_offset,
      length: llt$section_length,
      name: pmt$program_name,
      component: 1 .. llc$max_components,
    recend;


*copyc OSD$VIRTUAL_ADDRESS
*copyc LLT$OBJECT_TEXT_DESCRIPTOR
*copyc llt$object_library
*copyc PMT$PROGRAM_NAME
*copyc OST$TIME
*copyc OST$DATE
*copyc LLT$MODULE_GENERATOR
*copyc LLT$BINDING_TEMPLATE
*copyc llt$relocation
