General User Release Notes
3.19 HP OpenVMS DELTA/XDELTA Debugger Manual Update
3.19.1.1 /REMOVE Qualifier Correction
In Section 4.8.2.3 of the HP OpenVMS Version 8.2 New Features and
Documentation Overview, the description of the enhanced library /REMOVE
qualifier is incorrect. The correct information is as follows:
The /REMOVE qualifier has been enhanced for the Integrity servers Librarian
utility. The format now allows you to specify the module instance of the symbol
to be removed. The enhanced /REMOVE qualifier requests that the LIBRARY
command delete one or more entries from the global symbol table of an object
library.
3.19.1.2 Accessing ELF Object Libraries Correction
Section 4.8.3.2 of the HP OpenVMS Version 8.2 New Features and Documentation
Overview contains incorrect information. The following text replaces information
in that section:
Accessing ELF Object Libraries
ELF 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 because they refer to P2 space.
Because of the random-access nature of ELF object files, the following operations
are not allowed on ELF object libraries:
LBR$GET_RECORD
LBR$SET_LOCATE
LBR$SET_MOVE
Because inserting modules into the library is a sequential operation, LBR$PUT_
RECORD is allowed on ELF object libraries. Because the ELF object modules are
not segmented into records, you need to provide the module’s on-disk size when
calling LBR$PUT_MODULE or 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:
bufdesc->dsc$a_pointer = &p0_buffer ;
bytes_to_transfer = module_size ;
while ( bytes_to_transfer ) {
transfer = MIN ( bytes_to_transfer ,
ELBR$C_MAXRECSIZ ) ;
bufdesc->dsc$w_length = transfer ;
status = lbr$put_record ( library_index ,
& bufdesc ,
& txtrfa ,
module_size ) ;
if ( (status & 1) == 0 )
break ;
bytes_to_transfer -= transfer ;
bufdesc->dsc$a_pointer += transfer ;
};
General User Release Notes 3–19