listelb utility
WSupported on Windows
|
USupported on Unix
|
|
|
The listelb utility displays information about the routines and global data (including initial contents) contained in the specified executable library or libraries. It also displays the names of external routines and global data referenced by each of those routines. (On OpenVMS, the ANALYZE/IMAGE utility is equivalent to listelb.)
You must run the version of listelb that has the same bitness as the ELB you are examining; else, you’ll get the error “Library elbname built with opposite bit size.”
Listelb has the following syntax:
listelb [option] elb_file [...]
Options
option
(optional) One or more of the following:
-e
Display a list of linked ELB names only.
-f
For each routine, show the MDB flags, the compilation version, and all routines that are called, as well as the link version, endian type (LTLNDN or BIGNDN), and bit size of the ELB file. (See Synergex KnowledgeBase article 2324 for more information about MDB flags.)
-h
Display usage information.
-i
Display the version of the linker (in the file header) used to create the ELB.
-l
Include information for each of the ELBs linked to the specified ELB.
-v
Turn off verbose output. Use -v by itself to provide an abbreviated list of the ELB’s contents or use with -l to include the linked ELBs.
elb_file
One or more .elb files for which you want to display information.
Discussion
When run without any options, listelb outputs the methods, subroutines, and functions in the specified ELB (along with details about them), followed by the global symbol definitions and the names of any linked ELBs. Use -l to include this level of detail about the linked ELBs also.
The excerpts below are from the listelb output for tklib.elb.
c:\myelbs>listelb tklib.elb [tklib.elb] "tklib.elb" latest ELB structure 18SYNERGEX_PRIVATE11SYNERGYDE11UITOOLKIT18IBU_SYNCHRONIZER5LOAD_IBAAAAAAAA size 792, pos 541368, ext refs 0, gnamsiz 0 LDXREF 18SYNERGEX_PRIVATE11SYNERGYDE11UITOOLKIT18IBU_SYNCHRONIZER5SAVE_XBAAAAAAAA LDXREF 18SYNERGEX_PRIVATE11SYNERGYDE11UITOOLKIT18IBU_SYNCHRONIZER6ALLOC_I 18SYNERGEX_PRIVATE11SYNERGYDE11UITOOLKIT18IBU_SYNCHRONIZER5SAVE_XBAAAAAAAA size 760, pos 542307, ext refs 0, gnamsiz 0 . . . AXU_GETSINGLECTLS size 536, pos 544175, ext refs 19, gnamsiz 0 AX_INPUT size 1672, pos 544730, ext refs 157, gnamsiz 125 AX_REGISTER size 752, pos 546684, ext refs 66, gnamsiz 0
The entries that begin with numbers are methods; the ones without numbers are subroutines or functions. Here’s how to “read” the above method entry:
- The fully-qualified name of the first method is Synergex_Private.SynergyDE.UIToolkit.IBU_Synchronizer.Load.
- Each identifier in the method name is delimited by numerals that indicate the number of characters in that identifier, including the places taken up by the numeral itself. So, for example, in 18SYNERGEX_PRIVATE, there are 16 characters in Synergex_Private and 2 characters in 18.
- The underscore at the end of the method name separates the method from information about its return value and parameters. The first character tells you the type of the return value (or _X if the method is void), followed by the parameters. For example, _IBAAAAAAAA indicates that this method returns an integer, and that there are nine parameters: a Boolean and eight alphas.
- LDXREF indicates the external routines that this method calls. The LDXREF indicator is not limited to methods; you may see it for subroutines and functions as well.
The following are displayed for methods, subroutines, and functions:
- size is the size of the routine in bytes.
- pos is the offset in bytes in the file where the routine resides.
- ext refs is the number of external references in the routine.
- gnamsiz is the size of the table for the globals in the routine.
After the list of routines, you’ll see the global symbol definitions:
40 global symbol definitions $GDS_DTK_AXSINGLE GLOBAL, "<0><0><0><0><0><0><0><0>" $GDS_DTK_BLDINP GLOBAL, "<0><0><0><0><0><0><0><0><0><0><0><0><0><0><0><0>..." . . . $SR_AX_TKWIN060F1652 GLOBAL, "<0><0><0><0><0><0><0><0>" $SR_CU_STAMPCHILD060F1B25 GLOBAL, "<0><0><0><0><0><0><0><0>"
- Entries that begin with $GDS are global data sections; entries that begin with $SR are static records.
- The characters between the quotation marks are the initial contents.
- The series of numbers and letters at the end of a static record, such as 060F1652, is a qualifier to make the name unique. When the static qualifier is in a method, the value is a CRC checksum of the name; when it’s in a function or subroutine, the value is a timestamp of when it was compiled in the format HHMMSSuu.
The format and output of listelb data is subject to change without notice. |