This is version 160906 of the
VMS Objects and Images Tools for Alpha and I64:

ADDSYN - add synonyms to universal symbols,
that is to the global symbol table of a shareable image.

CKSUMEOBJ - crc32 ChecKSUM of an Evax OBJect file,
calculates and displays checksums of an Alpha object file by excluding module header records.

ELFSYM - ELF SYMbols,
lists all symbols of an Elf file.

ELFSYMD - ELF SYMbols Demangled,
lists all symbols of an Elf file with source code names, if available.

GSDEOBJ - Global Symbol Directory of an Evax OBJect file,
lists the global symbol directory of an Alpha object file.
Use GSDEOBJ for STBs generated by compilers or macro.

GSDEOLB - Global Symbol Directory of an Evax Object (and image) LiBrary,
lists the elements of an Alpha library (objects or shareable images)
with their global symbol directory entries.

GSTESTB - Global Symbol Table of an Evax STB file,
lists the global symbol table of an Alpha symbol table file.
Use GSTESTB for STBs generated by the linker.

IMGCPY - IMaGe CoPY, removes all or selected symbols
from the global symbol table of an Elf shareable image file.

IMGEXP - IMaGe EXPorts,
lists all what a shareable image exports, PSECTs, data and procedures.

SHIML - SHareable IMage List,
lists all the shareable images an image depends on.

TIREOBJ - Text Information and Relocation records of an Evax OBJect file,
formats the TIR records of an Alpha object file.

XPD - eXternal Procedures and Data,
lists all the external procedures and data an image references in shareable images.


Known restriction

For SHIML and XPD, non-vms-supplied system images are not supported. That is, SHIML will report a GS mismatch and XPD will not process externals for that image.


Versions:
    Alpha - ADDSYN V0.9.1, CKSUMEOBJ V0.91, GSDEOBJ V0.94, GSDEOLB V0.94,
            GSTESTB V0.91, IMGEXP V1.8, SHIML V1.5, TIREOBJ V0.91, XPD V1.8
    I64 -   ADDSYN 0.9.4, ELFSYM V1.3, ELFSYMD V1.1, IMGCPY V0.9, IMGEXP V1.3,
            SHIML V1.5, XPD V1.7

Changes since version 150513:
new ADDSYN
new IMGCPY
add synonym support to IMGEXP

Files in the saveset:
README.TXT - This text file
[.ALPHA]ADDSYN.EXE
[.ALPHA]CKSUMEOBJ.EXE
[.ALPHA]GSDEOBJ.EXE
[.ALPHA]GSDEOLB.EXE
[.ALPHA]GSTESTB.EXE
[.ALPHA]IMGEXP.EXE
[.ALPHA]SHIML.EXE
[.ALPHA]TIREOBJ.EXE
[.ALPHA]XPD.EXE
[.I64]ADDSYN.EXE
[.I64]ELFSYM.EXE
[.I64]ELFSYMD.EXE
[.I64]IMGCPY.EXE
[.I64]IMGEXP.EXE
[.I64]SHIML.EXE
[.I64]XPD.EXE

ADDSYN usage, Alpha version

$ MCR your_disk:[your_dir]ADDSYN [-v] input_file synonym_file output_file
       -v     verbose output      

For a VMS shareable image, universal symbols in the global symbol table (GST)
represent the procedures and data available from the shareable image.
Usually the GST only contains uppercase symbol names. If an object was
compiled with case sensitive external symbol names, linking will usually fail.
Adding the apropriate names, only in the GST, to a copy of the image file can
solve the linking problem.

Example

$ pipe analyze/image shr|search sys$pipe "value:"/wind=(0,4)
                value: 16 (%X'00000010')
                symbol vector entry (data cell)
		        %X'00000000 00000000'
                        %X'00000000 00010004'
                symbol: "WORLD"
***************
                value: 0 (%X'00000000')
                symbol vector entry (data cell)
                        %X'00000000 00000000'
                        %X'00000000 00010000'
                symbol: "hello"
$
$ mcr sys$disk:[]addsyn shr.exe sys$input both-cases.exe
ADD SYNonyms to universal symbols (Alpha), version 0.9.1
hello=HELLO
WORLD=world
^Z
$
$ pipe analyze/image both-cases|search sys$pipe "value:"/wind=(0,4)
                value: 16 (%X'00000010')
                symbol vector entry (data cell)
                        %X'00000000 00000000'
                        %X'00000000 00010004'
                symbol: "WORLD"
***************
                value: 0 (%X'00000000')
                symbol vector entry (data cell)
                        %X'00000000 00000000'
                        %X'00000000 00010000'
                symbol: "hello"
***************
                value: 0 (%X'00000000')
                symbol vector entry (data cell)
                        %X'00000000 00000000'
                        %X'00000000 00010000'
                symbol: "HELLO"
***************
                value: 16 (%X'00000010')
                symbol vector entry (data cell)
                        %X'00000000 00000000'
                        %X'00000000 00010004'
                symbol: "world"
$

ADDSYN usage, I64 version

$ MCR your_disk:[your_dir]ADDSYN [-sv] input_file synonym_file output_file
       -s     strip the output image down to what is needed as linker input
       -v     verbose output
$

Example

$ pipe anal/image/section=symbol_vector data |search sys$pipe "SYMBOL VECTOR"/exact/wind=(0,4)
SYMBOL VECTOR                         1. Element
-------------                         ----------
FileAddr Offset     Index   Value                       Entry/GP or Size  Symbol or Section Name
---------------     -----   -----                       ----------------  ----------------------
00000400 00000000       0.  0000000000010000 DATA                         "DATA"
$
$ pipe anal/image/section=symtab data|search sys$pipe ")          ""","Symbol Value"
00001200 00000000  Symbol 0. (00000000)          ""
00001208 00000008    Symbol Value                0000000000000000       0.                              symtab$pq_st_value
00001218 00000018  Symbol 1. (00000001)          "DATA"
00001220 00000020    Symbol Value                0000000000000000       0.                              symtab$pq_st_value
$

$ mcr sys$disk:[]addsyn data.exe sys$input both-cases.exe
ADD SYNonyms to universal symbols (I64), version 0.9.4
DATA=data
^Z
$

$ pipe anal/image/section=symbol_vector both-cases |search sys$pipe "SYMBOL VECTOR"/exact/wind=(0,4)
SYMBOL VECTOR                         1. Element
-------------                         ----------
FileAddr Offset     Index   Value                       Entry/GP or Size  Symbol or Section Name
---------------     -----   -----                       ----------------  ----------------------
00000400 00000000       0.  0000000000010000 DATA                         "DATA"
$
$ pipe anal/image/section=symtab both-cases|search sys$pipe ")          ""","Symbol Value"
00001600 00000000  Symbol 0. (00000000)          ""
00001608 00000008    Symbol Value                0000000000000000       0.                              symtab$pq_st_value
00001618 00000018  Symbol 1. (00000001)          "DATA"
00001620 00000020    Symbol Value                0000000000000000       0.                              symtab$pq_st_value
00001630 00000030  Symbol 2. (00000002)          "data"
00001638 00000038    Symbol Value                0000000000000000       0.                              symtab$pq_st_value
$

CKSUMEOBJ usage

$ MCR your_disk:[your_dir]CKSUMEOBJ [-efqs] full_object_file_spec...
  -e  show excluded records
  -f  show file checksum
  -q  quiet: no headers
  -s  show record type checksums

The record type checksums, are checksums of all the GSD - the symbol, the
TIR - the code and data, the DBG - the debug and the TBT - the traceback records.
With the record type checksums one can verify an object file for the symbols,
code and data, regardless whether it is compiled with debug and/or traceback
records.

Examples

$ mcr sys$disk:[]cksumeobj hello.obj
CRC32-Checksum for OpenVMS/Alpha object files, V0.91
object checksum: 0x51d06ea5
$
$ mcr sys$disk:[]cksumeobj -e hello.obj
CRC32-Checksum for OpenVMS/Alpha object files, V0.91
-i-excluded, emh$c_mhd: HELLO
-i-excluded, emh$c_mhd: V1.0
-i-excluded, emh$c_mhd: 13-DEC-2005 14:42
-i-excluded, emh$c_lnm: HP C V7.1-015
object checksum: 0x51d06ea5
$
$ mcr sys$disk:[]cksumeobj -fs hello.obj
CRC32-Checksum for OpenVMS/Alpha object files, V0.91
gsd checksum: 0x5720f6f7
tir checksum: 0x91409529
dbg checksum: 0xf5306780
tbt checksum: 0x03a90f73
eom checksum: 0xe63ff7ab
object checksum: 0x51d06ea5
file checksum: 0x3cbc7f92
$
$ mcr sys$disk:[]cksumeobj hello.obj foo.obj
CRC32-Checksum for OpenVMS/Alpha object files, V0.91
hello.obj:
object checksum: 0x51d06ea5
foo.obj:
object checksum: 0xfa7de31b
$

ELFSYM usage

$ MCR your_disk:[your_dir]ELFSYM full_elf_file_spec

Example

$ mcr sys$disk:[]elfsym hello.obj
Elf symbols, version 1.3
Type    Bind       Vis       FuncType  Linkage  SectionNdx Name
FILE    LOCAL      DEFAULT             IGNORE          ABS SYS$SYSDEVICE:[HB]HELLO.C;1
SECTION LOCAL      DEFAULT             IGNORE            3
SECTION LOCAL      DEFAULT             IGNORE            4
SECTION LOCAL      DEFAULT             IGNORE            5
SECTION LOCAL      DEFAULT             IGNORE            6
SECTION LOCAL      DEFAULT             IGNORE            7
SECTION LOCAL      DEFAULT             IGNORE            8
SECTION LOCAL      DEFAULT             IGNORE           11
SECTION LOCAL      DEFAULT             IGNORE           13
SECTION LOCAL      DEFAULT             IGNORE           14
SECTION LOCAL      DEFAULT             IGNORE           16
SECTION LOCAL      DEFAULT             IGNORE           18
SECTION LOCAL      DEFAULT             IGNORE           19
SECTION LOCAL      DEFAULT             IGNORE           21
OBJECT  GLOBAL     DEFAULT             IGNORE       COMMON WORLD
FUNC    GLOBAL     DEFAULT   CODE_ADDR STD               3 HELLO
FUNC    VMS_WEAK   DEFAULT   CODE_ADDR IGNORE            3 ELF$TFRADR
FUNC    GLOBAL     DEFAULT   CODE_ADDR STD           UNDEF DECC$TXPRINTF
$

$ mcr sys$disk:[]elfsym minishr.exe
Elf symbols, version 1.3
Type    Bind       Vis       FuncType  Linkage  SectionNdx Name
OBJECT  GLOBAL     PROTECTED           IGNORE          ABS EXPORTED_CONST
OBJECT  GLOBAL     PROTECTED           IGNORE            8 EXPORTED_DATA
FUNC    GLOBAL     PROTECTED SYMV_IDX  STD               8 EXPORTED_PROCEDURE
$

ELFSYMD usage
$ MCR your_disk:[your_dir]ELFSYMD full_elf_file_spec

Example

$ mcr sys$disk:[]elfsymd hello.obj
ELF SYMbols Demangled, version 1.1
Type    Bind       Vis       FuncType  Linkage  SectionNdx Name
FILE    LOCAL      DEFAULT             IGNORE          ABS SYS$SYSDEVICE:[HB]HELLO.CXX;1
SECTION LOCAL      DEFAULT             IGNORE            1 .strtab
SECTION LOCAL      DEFAULT             IGNORE            2 .symtab
SECTION LOCAL      DEFAULT             IGNORE            3 .note
SECTION LOCAL      DEFAULT             IGNORE            4 .srodata
NOTYPE  LOCAL      DEFAULT             IGNORE            4 __STRING$0
SECTION LOCAL      DEFAULT             IGNORE            5 .text
NOTYPE  LOCAL      DEFAULT             IGNORE            5 MAIN??unw
SECTION LOCAL      DEFAULT             IGNORE            6 .IA_64.unwind_info
NOTYPE  LOCAL      DEFAULT             IGNORE            6 __udt_MAIN??unw
SECTION LOCAL      DEFAULT             IGNORE            7 .IA_64.unwind
NOTYPE  LOCAL      DEFAULT             IGNORE            5 ELF$TFRADR??unw
NOTYPE  LOCAL      DEFAULT             IGNORE            6 __udt_ELF$TFRADR??unw
SECTION LOCAL      DEFAULT             IGNORE            8 .debug_info
SECTION LOCAL      DEFAULT             IGNORE            9 .debug_line
SECTION LOCAL      DEFAULT             IGNORE           10 .debug_abbrev
NOTYPE  LOCAL      DEFAULT             IGNORE            5 DwArFiI_HiGh_Pc
NOTYPE  LOCAL      DEFAULT             IGNORE            8 .debug_info_seg
SECTION LOCAL      DEFAULT             IGNORE           11 .trace_abbrev
SECTION LOCAL      DEFAULT             IGNORE           12 .trace_info
SECTION LOCAL      DEFAULT             IGNORE           13 .trace_aranges
SECTION LOCAL      DEFAULT             IGNORE           14 .rela.text
SECTION LOCAL      DEFAULT             IGNORE           15 .rela.IA_64.unwind_info
SECTION LOCAL      DEFAULT             IGNORE           16 .rela.IA_64.unwind
SECTION LOCAL      DEFAULT             IGNORE           17 .rela.debug_info
SECTION LOCAL      DEFAULT             IGNORE           18 .rela.debug_line
SECTION LOCAL      DEFAULT             IGNORE           19 .rela.trace_info
SECTION LOCAL      DEFAULT             IGNORE           20 .rela.trace_aranges
NOTYPE  LOCAL      DEFAULT             IGNORE        UNDEF _ZN7ostreamlsEPKc
NOTYPE  LOCAL      DEFAULT             IGNORE        UNDEF _Z4endlR7ostream
SECTION LOCAL      DEFAULT             IGNORE           21 .vms_display_inf
NOTYPE  LOCAL      DEFAULT             IGNORE          ABS CX6L$__HP_DEMANGLER@CXXL$64_LANGRTL
NOTYPE  LOCAL      DEFAULT             IGNORE          ABS CX6L$__HP_NODEMANGLER@CXXL$64_LANGRTL
OBJECT  GLOBAL     DEFAULT             IGNORE        UNDEF CXXL$GA_COUT
FUNC    GLOBAL     DEFAULT   CODE_ADDR IGNORE            5 MAIN
FUNC    GLOBAL     DEFAULT   CODE_ADDR IGNORE        UNDEF CXXL$_ZN7OSTREAMLSEPKC27JOAMN
-> 'ostream::operator <<(const char *)'
FUNC    GLOBAL     DEFAULT   CODE_ADDR IGNORE        UNDEF CXXL$_Z4ENDLR7OSTREAM0C0N3I7
-> 'endl(ostream &)'
FUNC    GLOBAL     DEFAULT   CODE_ADDR IGNORE        UNDEF CXXL$MAIN_DISPATCH_ROUTINE
FUNC    GLOBAL     DEFAULT   CODE_ADDR IGNORE            5 ELF$TFRADR
FUNC    GLOBAL     DEFAULT   CODE_ADDR IGNORE        UNDEF DECC$MAIN
FUNC    GLOBAL     DEFAULT   CODE_ADDR IGNORE        UNDEF DECC$EXIT
FUNC    GLOBAL     DEFAULT   CODE_ADDR IGNORE        UNDEF DECC$$SHELL_HANDLER
NOTYPE  GLOBAL     DEFAULT             IGNORE        UNDEF MAIN
$

GSDEOBJ usage

$ MCR your_disk:[your_dir]GSDEOBJ [-qv] full_object_file_spec...
  -q  quiet: no headers
  -v  verbose

Examples

$ mcr sys$disk:[]gsdeobj foo.obj hello.obj
GSD for OpenVMS/Alpha object files, V0.94
foo.obj:
Type      Flags         caPSIndx PSIndx Name
PSECT     ---r---RW----               0 $DATA$
DATA      -D-R----                    0 FOO
hello.obj:
Type      Flags         caPSIndx PSIndx Name
PSECT     P--r-SE------               0 $CODE$
PSECT     P--r-S-R--N--               1 $LITERAL$
PSECT     ---r---R-----               2 $LINK$
PROCEDURE -D-R--N-             0      2 MAIN
PROCEDURE -D-R--N-             0      2 __MAIN
UDFSYM    --------                      DECC$GXPRINTF
UDFSYM    --------                      DECC$MAIN
UDFSYM    --------                      DECC$EXIT
UDFSYM    --------                      DECC$$SHELL_HANDLER
$
$ mcr sys$disk:[]gsdeobj -v foo.obj hello.obj
GSD for OpenVMS/Alpha object files, V0.94
foo.obj:
EMH:
  name: FOO
  version: V1.0
  date:  9-DEC-2005 10:36
LNM:
  HP C V7.1-015
Type      Flags         caPSIndx PSIndx Name
PSECT     ---r---RW----               0 $DATA$
DATA      -D-R----                    0 FOO
EOM:
  total linkage pairs: 0
  completion code: 0x0
	SUCCESS
Record summary:
  emh: 2, eom: 1, gsd: 1, tir: 1, dbg: 0, tbt: 2
  psc: 1, sym: 1
hello.obj:
EMH:
  name: HELLO
  version: V1.0
  date: 13-DEC-2005 14:42
LNM:
  HP C V7.1-015
Type      Flags         caPSIndx PSIndx Name
PSECT     P--r-SE------               0 $CODE$
PSECT     P--r-S-R--N--               1 $LITERAL$
PSECT     ---r---R-----               2 $LINK$
PROCEDURE -D-R--N-             0      2 MAIN
PROCEDURE -D-R--N-             0      2 __MAIN
UDFSYM    --------                      DECC$GXPRINTF
UDFSYM    --------                      DECC$MAIN
UDFSYM    --------                      DECC$EXIT
UDFSYM    --------                      DECC$$SHELL_HANDLER
EOM:
  total linkage pairs: 3
  completion code: 0x0
	SUCCESS
  transfer address flag: 0x0
  transfer address PSECT index: 2
  transfer address: 0x40
Record summary:
  emh: 2, eom: 1, gsd: 2, tir: 2, dbg: 8, tbt: 7
  psc: 3, sym: 7
Keys to PSECT flags:
  P - PIC, position independent    L - LIB, from shareable image
  O - OVR, overlaid allocation     r - REL, relocatable
  G - GBL, global                  S - SHR, shareable
  E - EXE, executable              R - RD, readable
  W - WRT, writeable               V - VEC, vector
  N - NOMOD, not stored into       C - COM, allocation for common symbol
  A - ALLOC_64BIT, allocate in 64-bit space
Keys to symbol flags:
  W - WEAK, weak                   D - DEF, definition
  U - UNI, universal               R - REL, relocatable
  C - COMM, common                 V - VECEP, vectored entry point
  N - NORM, procedure              Q - QUAD_VAL, value is 64 bits
$
$ mcr sys$disk:[]gsdeobj -q foo.obj hello.obj
PSECT     ---r---RW----               0 $DATA$
DATA      -D-R----                    0 FOO
PSECT     P--r-SE------               0 $CODE$
PSECT     P--r-S-R--N--               1 $LITERAL$
PSECT     ---r---R-----               2 $LINK$
PROCEDURE -D-R--N-             0      2 MAIN
PROCEDURE -D-R--N-             0      2 __MAIN
UDFSYM    --------                      DECC$GXPRINTF
UDFSYM    --------                      DECC$MAIN
UDFSYM    --------                      DECC$EXIT
UDFSYM    --------                      DECC$$SHELL_HANDLER
$

GSDEOLB usage

$ MCR your_disk:[your_dir]GSDEOLB [-lnqvx -mMOD] full_old_file_spec...
  -l     list: print only library module names
  -mMOD  module: print the information only for the specified module
  -n     names: print library GSD names
  -q     quiet: no headers
  -v     verbose
  -x     extended: print object GSD for each/specified module
	                                       
Examples
					       
$ mcr sys$disk:[]gsdeolb three-modules.olb
GSD for OpenVMS/Alpha library, V0.94
Module CODE
MCODE
Module DATA
MDATA
Module MAIN
MMAIN
$

$ mcr sys$disk:[]gsdeolb -nq three-modules.olb
MCODE
MDATA
MMAIN
$

$ mcr sys$disk:[]gsdeolb -xmDATA three-modules.olb
GSD for OpenVMS/Alpha library, V0.94
Module DATA
Type      Flags         caPSIndx PSIndx Name
PSECT     -------------               0 .  ABS  .
PSECT     ---r--ERW----               1 . BLANK .
PSECT     --Or-SERW----               2 DATA
DATA      -D-R----                    2 MDATA
$

$ mcr sys$disk:[]gsdeolb -vxmDATA three-modules.olb
GSD for OpenVMS/Alpha library, V0.94
Type of library: EOBJ
Number of indices: 2
ID for sanity check: 0x0dec2581
Format level ID, major: 3
Format level ID, minor: 0
Librarian version: Librarian A09-31
Creation time: Thu Apr  8 12:56:09 2010
Update time: Thu Apr  8 12:56:09 2010
Size of additional module header data: 33
Number of blocks in index segment : 0
Close error: 0
VBN of 1st deleted block: 0
Number of deleted blocks: 0
Next free RFA for data: 0x0x01fe,0x000000d9 -> 0x000000000001b1fe
Next free VBN: 218
Number of free index blocks: 211
Listhead for free index blocks: 4
VBN of highest free index block: 214
VBN of highest used block: 3
Number of used index blocks: 2
Number of index entries: 6
Number of modules (index 1): 3
Number of module headers: 3
Number of overhead index pointers: 0
Max number of history records: 20
Number of history records: 0
RFA of beginning of history: 0x0x0000,0x00000000 -> 0x0000000000000000
RFA of end of library update history: 0x0x0000,0x00000000 -> 0x0000000000000000
VBN of DCX map: 0
Freed list header structure in RFA structure format: 0x0x0000,0x00000000 -> 0x0000000000000000
Freed list nodes structure in RFA structure format: 0x0x0000,0x00000000 -> 0x0000000000000000
VBN of third index block: 0
VBN of the free symbol block (index 2): 0
Index descriptor 1:
Flags word: 0x0000001d
	ASCII
	VARLENIDX
	NOCASECMP
	NOCASENTR
Total length of key: 129
VBN of first block of index: 3
Index descriptor 2:
Flags word: 0x0000001d
	ASCII
	VARLENIDX
	NOCASECMP
	NOCASENTR
Total length of key: 129
VBN of first block of index: 2
Module DATA, RFA of data: 0x00c0,0x000000d9 -> 0x000000000001b0c0
Module DATA
MHD:
  control flag: 0x00
  ident: 173
  reference count: 2
  date/time inserted: Thu Apr  8 12:56:09 2010
  status of object module: 0x02
	TIR records
	module ident: V1
EMH:
  name: DATA
  version: V1
  date:  8-APR-2010 10:52
LNM:
  AMAC V5.0-120-4
Type      Flags         caPSIndx PSIndx Name
PSECT     -------------               0 .  ABS  .
PSECT     ---r--ERW----               1 . BLANK .
PSECT     --Or-SERW----               2 DATA
DATA      -D-R----                    2 MDATA
EOM:
  total linkage pairs: 0
  completion code: 0x0
	SUCCESS
Record summary:
  emh: 2, eom: 1, gsd: 1, tir: 1, dbg: 0, tbt: 0
  psc: 3, sym: 1
Key to PSECT flags:
  P - PIC, position independent    L - LIB, from shareable image
  O - OVR, overlaid allocation     r - REL, relocatable
  G - GBL, global                  S - SHR, shareable
  E - EXE, executable              R - RD, readable
  W - WRT, writeable               V - VEC, vector
  N - NOMOD, not stored into       C - COM, allocation for common symbol
  A - ALLOC_64BIT, allocate in 64-bit space
Key to symbol flags:
  W - WEAK, weak                   D - DEF, definition
  U - UNI, universal               R - REL, relocatable
  C - COMM, common                 V - VECEP, vectored entry point
  N - NORM, procedure              Q - QUAD_VAL, value is 64 bits
$

GSTESTB usage

$ MCR your_disk:[your_dir]GSTESTB [-qv] full_stb_file_spec...
  -q  quiet: no headers
  -v  verbose
       
Example

$ mcr sys$disk:[]gstestb hello.stb
GST for OpenVMS/Alpha STB files, V0.91
Type      Flags                  PSIndx Name
PROCEDURE -D-R--N-                    0 __MAIN
PROCEDURE -D-R--N-                    0 MAIN

IMGCPY usage

$ MCR your_disk:[your_dir]IMGCPY [-NSv] shareable_image_file output_file
       -N name remove symbol <name>
       -S      remove all symbols
       -v      verbose output

Example

$ pipe anal/image/section=symbol_vector both-cases |search sys$pipe "SYMBOL VECTOR"/exact/wind=(0,4)
SYMBOL VECTOR                         1. Element
-------------                         ----------
FileAddr Offset     Index   Value                       Entry/GP or Size  Symbol or Section Name
---------------     -----   -----                       ----------------  ----------------------
00000400 00000000       0.  0000000000010000 DATA                         "DATA"
$
$ pipe anal/image/section=symtab both-cases|search sys$pipe ")          ""","Symbol Value"
00001600 00000000  Symbol 0. (00000000)          ""
00001608 00000008    Symbol Value                0000000000000000       0.                              symtab$pq_st_value
00001618 00000018  Symbol 1. (00000001)          "DATA"
00001620 00000020    Symbol Value                0000000000000000       0.                              symtab$pq_st_value
00001630 00000030  Symbol 2. (00000002)          "data"
00001638 00000038    Symbol Value                0000000000000000       0.                              symtab$pq_st_value
$

$ mcr sys$disk:[]imgcpy -NDATA both-cases.exe lowercase.exe
IMaGe CoPY (I64), version 0.9
$

$ pipe anal/image/section=symbol_vector lowercase |search sys$pipe "SYMBOL VECTOR"/exact/wind=(0,4)
SYMBOL VECTOR                         1. Element
-------------                         ----------
FileAddr Offset     Index   Value                       Entry/GP or Size  Symbol or Section Name
---------------     -----   -----                       ----------------  ----------------------
00000400 00000000       0.  0000000000010000 DATA                         "data"
$
$ pipe anal/image/section=symtab lowercase|search sys$pipe ")          ""","Symbol Value"
00001600 00000000  Symbol 0. (00000000)          ""
00001608 00000008    Symbol Value                0000000000000000       0.                              symtab$pq_st_value
00001618 00000018  Symbol 1. (00000001)          "data"
00001620 00000020    Symbol Value                0000000000000000       0.                              symtab$pq_st_value
$

$ mcr sys$disk:[]imgcpy -S both-cases.exe nogst.exe
IMaGe CoPY (I64), version 0.9
shareable image file: both-cases.exe
output file: nogst.exe
1 symbol vector entry
2 symbol table entries
all symbols removed
$

$ pipe anal/image/section=symbol_vector nogst |search sys$pipe "SYMBOL VECTOR"/exact/wind=(0,4)
SYMBOL VECTOR                         1. Element
-------------                         ----------
FileAddr Offset     Index   Value                       Entry/GP or Size  Symbol or Section Name
---------------     -----   -----                       ----------------  ----------------------
%ANALYZE-I-ELFSYV_NOSYMTB, Unable to find symbol table section
$
$ pipe anal/image/section=symtab nogst|search sys$pipe ")          ""","Symbol Value"
%SEARCH-I-NOMATCHES, no strings matched
$

IMGEXP usage

$ MCR your_disk:[your_dir]IMGEXP [OPTION] full_image_file_spec
  -v     verbose output

Except for absolute data, all values are VA offsets into the image. The
procedure value is the address of the procedure descriptor, not the code
address. The printed symbols are in the same order as their entries in the
symbol vector. Verbose output additionally prints the GS match info, the
symbol vector offsets and SPARE/PRIVATE entries.

Example

$ mcr sys$disk:[]imgexp minishr.exe
Image Exports (Alpha), version 1.8
EXPORTED_PSECT, type is program section, value: 0x30000
EXPORTED_RDONLY_PSECT, type is program section, value: 0x0
EXPORTED_PROCEDURE, type is procedure, value: 0x10000
EXPORTED_DATA, type is data, value: 0x20000
EXPORTED_RDONLY, type is data, value: 0x40000
EXPORTED_CONST, type is absolute data, value: 0x4711
$

SHIML usage

$ MCR your_disk:[your_dir]SHIML [OPTION]... full_image_file_spec
   -u  list of unique shareable images
   -i  list of unique shareable images with identification information

Examples

$ mcr sys$disk:[]shiml miniref.exe
recursive SHareable IMage dependency List (Alpha), version 1.5
 [ -> translated logical name ] required match: ID [ / actual match: ID ]
 [ (self) - relf reference;  (dnf) - duplicate, not followed ]

MINISHR -> SYS$DISK:[]MINISHR.EXE - MATLEQ: 1,2 / MATLEQ: 1,2
    SYS$PUBLIC_VECTORS
SYS$PUBLIC_VECTORS (dnf)
$
$ mcr sys$disk:[]shiml -u miniref.exe
SHareable IMage dependency List (Alpha), version 1.5
 [ -> translated logical name ]
 [ (self) - self reference ]

MINISHR -> SYS$DISK:[]MINISHR.EXE
SYS$PUBLIC_VECTORS
$
$ mcr sys$disk:[]shiml -i miniref.exe
SHareable IMage dependency List (Alpha), version 1.5
 [ -> translated logical name ] 
 [ (self) - self reference ]
! imgid           imgbid          linkid          linktime
MINISHR -> SYS$DISK:[]MINISHR.EXE
! V1.0                            A13-02          20-MAR-2006 10:49:25.49
SYS$PUBLIC_VECTORS
$
$ define minishr sys$disk:[]minishr.exe;17
%DCL-I-SUPERSEDE, previous value of MINISHR has been superseded
$ mcr sys$disk:[]shiml miniref.exe
recursive SHareable IMage dependency List (Alpha), version 1.5
 [ -> translated logical name ] required match: ID [ / actual match: ID ]
 [ (self) - self reference;  (dnf) - duplicate, not followed ]

MINISHR -> SYS$DISK:[]MINISHR.EXE;17 - MATLEQ: 1,2
-w-slt, sublist terminated, SYS$DISK:[]MINISHR.EXE;17 not found or other error
SYS$PUBLIC_VECTORS
$
$ mcr sys$disk:[]shiml self.exe
recursive SHareable IMage dependency List (Alpha), version 1.5
 [ -> translated logical name ] required match: ID [ / actual match: ID ]
 [ (self) - self reference;  (dnf) - duplicate, not followed ]

SELF (self)
SYS$PUBLIC_VECTORS
$
$ def/user x sys$disk:[]x.exe
$ def/user y sys$disk:[]y.exe
$ def/user z sys$disk:[]z.exe
$ mcr sys$disk:[]shiml xyz.exe
recursive SHareable IMage dependency List (Alpha), version 1.5
 [ -> translated logical name ] required match: ID [ / actual match: ID ]
 [ (self) - self reference;  (dnf) - duplicate, not followed ]

X -> SYS$DISK:[]X.EXE - MATALL: 1,1 / MATALL: 1,1
    Y -> SYS$DISK:[]Y.EXE - MATALL: 1,1 / MATALL: 1,1
        Z -> SYS$DISK:[]Z.EXE - MATALL: 1,1 / MATALL: 1,1
            X - MATALL: 1,1 (dnf)
            SYS$PUBLIC_VECTORS
        SYS$PUBLIC_VECTORS (dnf)
    SYS$PUBLIC_VECTORS (dnf)
DECC$SHR -> SYS$SHARE:DECC$SHR_EV56 - MATLEQ: 1,1 / MATLEQ: 1,1
    LIBRTL - MATLEQ: 1,1 / MATLEQ: 1,1
        SYS$PUBLIC_VECTORS (dnf)
    CMA$TIS_SHR - MATLEQ: 1,4 / MATLEQ: 1,4
        CMA$TIS_SHR (self)
        LIBRTL - MATLEQ: 1,1 (dnf)
        LIBOTS - MATLEQ: 1,3 / MATLEQ: 1,3
            SYS$PUBLIC_VECTORS (dnf)
        SYS$PUBLIC_VECTORS (dnf)
    LIBOTS - MATLEQ: 1,3 (dnf)
    DPML$SHR - MATLEQ: 1,0 / MATLEQ: 1,0
        DPML$SHR (self)
        LIBOTS - MATLEQ: 1,3 (dnf)
        LIBRTL - MATLEQ: 1,1 (dnf)
        CMA$TIS_SHR - MATLEQ: 1,4 (dnf)
        SYS$PUBLIC_VECTORS (dnf)
    SYS$PUBLIC_VECTORS (dnf)
SYS$PUBLIC_VECTORS (dnf)
$


TIREOBJ usage

$ MCR your_disk:[your_dir]TIREOBJ [-dtqv] full_obj_file_spec...
  -d  show debug TIRs
  -t  show traceback TIRs
  -q  quiet: no headers
  -v  verbose
	
Examples (for a very simple object)

$ mcr sys$disk:[]tireobj foo.obj
TIR for OpenVMS/Alpha object files, V0.91
Type      Flags         caPSIndx PSIndx Name
PSECT     ---r---RW----               0 $DATA$
DATA      -D-R----                    0 FOO
Text Information/Relocation
Type Size Command with Arguments (byte stream)
0003 0010 ETIR$C_STA_PQ 00 00 00 00 00 00 00 00 00 00 00 00
0096 0004 ETIR$C_CTL_SETRB
003d 000c ETIR$C_STO_IMM 04 00 00 00 67 12 00 00
$

$ mcr sys$disk:[]tireobj -t foo.obj
TIR for OpenVMS/Alpha object files, V0.91
Type      Flags         caPSIndx PSIndx Name
PSECT     ---r---RW----               0 $DATA$
DATA      -D-R----                    0 FOO
Text Information/Relocation
Type Size Command with Arguments (byte stream)
0003 0010 ETIR$C_STA_PQ 00 00 00 00 00 00 00 00 00 00 00 00
0096 0004 ETIR$C_CTL_SETRB
003d 000c ETIR$C_STO_IMM 04 00 00 00 67 12 00 00
Traceback Information
Type Size Command with Arguments (byte stream)
0001 0008 ETIR$C_STA_LW 00 00 00 00
0098 0004 ETIR$C_CTL_DFLOC
003d 0028 ETIR$C_STO_IMM 20 00 00 00 1f 00 bc 00 02 00 07 00 00 00 01 00 12 00 
03 46 4f 4f 0d 48 50 20 43 20 56 37 2e 31 2d 30 31 35
003d 000c ETIR$C_STO_IMM 04 00 00 00 03 00 bd 00
$

XPD usage

$ MCR your_disk:[your_dir]XPD full_image_file_spec

Example

$ mcr sys$disk:[]xpd miniref.exe
eXternal Procedure and Data list (I64), version 1.7
MINISHR -> SYS$DISK:[]MINISHR.EXE:
index 3 maps to EXPORTED_CONST, type is absolute data
index 2 maps to EXPORTED_DATA, type is data
index 0 maps to EXPORTED_PSECT, type is section
index 1 maps to EXPORTED_PROCEDURE, type is procedure
$
$ mcr sys$disk:[]xpd self.exe
eXternal Procedure and Data list (I64), version 1.7
SELF:
index 0 maps to ALIAS, type is procedure
$