![]() |
Software > OpenVMS Systems > Documentation > 82final > 6675 ![]() HP OpenVMS Systems Documentation |
![]() |
HP OpenVMS Version 8.2 New Features and Documentation Overview
4.6.2 OpenVMS I64 Language SupportOpenVMS I64 Debugger supports programs written in the following languages: BASIC 4.6.3 Heap Analyzer Available on OpenVMS I64 SystemsThe Heap Analyzer is now available on OpenVMS I64 systems and is activated differently than on Alpha systems. A new start command, START HEAP_ANALYZER, is available from the debugger command-line prompt (DBG>) to start the Heap Analyzer from the OpenVMS I64 Debugger. For complete information, refer to the Heap Analyzer chapter in the HP OpenVMS Debugger Manual. 4.7 Extended Lock Value BlockA lock value block is a feature of the OpenVMS Lock Manager that provides a type of synchronized interprocess/intracluster communication. In the past, OpenVMS applications using the Lock Manager have been able to store and retrieve up to 16 bytes of lock value block data during locking operations. In OpenVMS Version 8.2, applications may now optionally store up to 64 bytes of data in the lock value block. The $GETLKI system service has been modified to add two new item codes that this new feature requires. The purpose of the items codes is:
For more information, refer to HP OpenVMS Programming Concepts Manual and to the HP OpenVMS System Services Reference Manual. 4.8 Librarian Utility and Library Routines (I64 only)The following sections provide information about the Librarian utility and Library routines on OpenVMS I64 systems. On OpenVMS Alpha systems, the Librarian utility and Library routines are unchanged.
4.8.1 Librarian Usage SummaryYou can use the DCL command LIBRARY to invoke the Librarian utility (or use Library [LBR] routines) to create the following library types:
The LIBRARY command invokes the OpenVMS Librarian utility from which you can maintain library modules or simply display information about a library and its modules. The I64 Librarian utility provides the same features provided by the Alpha Librarian, except for the changes and restrictions specified in HP OpenVMS Version 8.2 Release Notes. Table 4-1 shows the libraries that are created by the Librarian utility for each OpenVMS platform.
4.8.2 Changes to the Librarian UtilityThis section describes changes and restrictions to the Librarian utility on OpenVMS I64 systems. 4.8.2.1 Librarian Defaults to IntelĀ® ItaniumĀ® ArchitectureThere is no architecture switch for the OpenVMS I64 Librarian utility. When used with the following qualifiers, the Librarian works on OpenVMS ELF object and image libraries: /OBJECT---Work on OpenVMS ELF object libraries (default) The default library type created is an object library if no OBJECT and SHARE qualifiers are specified. 4.8.2.2 No Support for /ALPHA and /VAX QualifiersThe /ALPHA and /VAX qualifiers are not supported in the I64 Librarian utility. The Librarian utility works on the following library types only: MACRO 4.8.2.3 Enhanced /REMOVE QualifierThe /REMOVE qualifier has been enhanced for the I64 Librarian. The format now allows you to specify the module of the instance of the symbol to be removed. Requests the LIBRARY command to delete one or more entries from the global symbol table in an object library.
symbol Description If you specify more than one symbol, separate the symbols with commas and enclose the list in parentheses. Wildcard characters are allowed in the symbol specification. To display the names of the deleted global symbols, you must also specify the /LOG qualifier. 4.8.3 Changes to the Library (LBR) RoutinesThe following sections describe changes and restrictions to the Library routines for OpenVMS I64 systems. All routines not listed here remain the same as on Alpha systems (and as documented in the OpenVMS Utility Routines Manual). 4.8.3.1 New Library Types AddedTwo new library types for the LBR$OPEN routine have been added: LBR$C_TYP_ELFOBJ (9)---Represents an ELF object library In addition, the following library types for the LBR$OPEN Library routine are not supported on OpenVMS I64: LBR$C_TYP_OBJ (1)---Represents a VAX object library
4.8.3.2 Accessing ELF Object LibrariesELF object modules are inherently random access modules, whereas OpenVMS Alpha objects, text modules, and so on, are sequential. To allow random access, a new library routine was created to map the ELF object modules into process P2 space so that applications can make random access queries. To recover virtual address space from this mapping another library routine was created to remove this mapping. These new routines (LBR$MAP_MODULE and LBR$UNMAP_MODULE) work only with ELF object libraries. These entry points are 64-bit interfaces since they refer to P2 space. Because of the random-access nature of ELF object files, the following operations are not be allowed on ELF object libraries: LBR$GET_RECORD Because inserting modules into the library is a sequential operation, LBR$PUT_RECORD is allowed on ELF object libraries. Since the ELF object modules are not segmented into records, the module's on-disk size needs to be provided upon the first call to LBR$PUT_RECORD when writing a module into the library. The C code fragment in the following example illustrates how to use LBR$PUT_RECORD to insert an object module:
To avoid making several calls to LBR$PUT_RECORD, a new library routine, LBR$PUT_MODULE, has been created (see Section 4.8.4). 4.8.4 New Librarian (LBR) Routines for ELF Object LibrariesThis section describes the following four new Library routines for ELF object libraries:
LBR$LOOKUP_TYPE
The LBR$LOOK_TYPE routine searches the index for the key from a particular module (RFA) and returns that key's type for that module. FormatLBR$LOOKUP_TYPE library_index, key_name, txtrfa, ret_types Arguments
DescriptionThis routine searches the index for the key from a particular module (RFA) and returns that key's type for that module, if present. Otherwise, it returns LBR$_KEYNOTFND. LBR$MAP_MODULE
The LBR$MAP_MODULE routine maps a module into process P2 space. FormatLBR$MAP_MODULE library_index, ret_va_addr, ret_mod_len, txtrfa Arguments
DescriptionThis routine maps a module, with the given txtrfa, into process P2 memory space and returns the virtual address where the module is mapped and the module size. LBR$PUT_MODULE
The LBR$PUT_MODULE routine puts an entire module, with the module's record file address (RFA), from memory space into the current library. FormatLBR$PUT_MODULE library_index, mod_addr, mod_len, txtrfa Arguments
DescriptionThe LBR$PUT_MODULE routine puts an entire module, with the module's record file address (RFA), from memory space into the current library. LBR$PUT_END is not required when you write an entire module to the current library. LBR$UNMAP_MODULE
The LBR$UNMAP_MODULE routine unmaps a module from process P2 space. FormatLBR$UNMAP_MODULE library_index, txtrfa Arguments
DescriptionUnmaps the module, with the record file address in txtrfa, from process P2 space. This releases the resources used to map the module. 4.8.5 Extended Library (LBR) Routines for ELF Object LibrariesThe Library routines described in the following section have changed for OpenVMS I64 systems. Because of extra information that needs to be passed due to the addition of ELF group symbols and UNIX-style weak definitions, the Library routines have been extended to take additional parameters. Extensions to the Library routines only affect ELF object and ELF shareable image libraries.The following Library routines are listed in this section:
Library routines not listed here remain the same for both OpenVMS I64 systems and OpenVMS Alpha systems and are documented in the OpenVMS Utility Routines Manual. LBR$DELETE_DATA
The LBR$DELETE_DATA routine deletes module data from the library. FormatLBR$DELETE_DATA library_index, txtrfa, [flags] RETURNS
Arguments
DescriptionIf you want to delete a library module, you must first call LBR$DELETE_KEY to delete all keys that point to it. If no library index keys are pointing to the module header, LBR$DELETE_DATA deletes the module header and associated data records; otherwise, this routine returns the error LBR$_STILLKEYS. Note that other library routines may reuse data blocks that contain no data. Condition Values Returned
|