Document revision date: 30 March 2001

## OpenVMS Alpha System Analysis Tools Manual

Previous | Contents | Index

The MAP command identifies the address as being within a compressed data section. When an image is installed with the Install utility using the /RESIDENT qualifier, the code sections are mapped in system space. The data sections are compressed into process-private space to reduce null pages or holes in the address space left by the absence of the code section. The SHOW PROCESS/IMAGE=ALL display shows how the data has been compressed; the MAP command searches this information to map an address in a compressed data section to an offset in an image.

#7
    SDA> MAP 7FC06000
    Shareable Address Data Section          Base      End       Image Offset
    LIBRTL                                  7FC06000  7FC16800  00090000

> The MAP command identifies the address as an offset into a shareable address data section residing in P1 space.

#8
    SDA> MAP 7FC26000
    Read-Write Data Section                 Base      End       Image Offset
    LIBRTL                                  7FC26000  7FC27000  000B0000

> The MAP command identifies the address as an offset into a read-write data section residing in P1 space.

#9
    SDA> MAP 7FC36000
    Shareable Read-Only Data Section        Base      End       Image Offset
    LIBRTL                                  7FC36000  7FC3F600  000C0000

> The MAP command identifies the address as an offset into a shareable read-only data section residing in P1 space.

#10
    SDA> MAP 7FC56000
    Demand Zero Data Section                Base      End       Image Offset
    LIBRTL                                  7FC56000  7FC57000  000E0000

> The MAP command identifies the address as an offset into a demand zero data section residing in P1 space.

## MODIFY DUMP

> Allows a given byte, word, longword, or quadword in the dump to be modified.

### Format

> MODIFY DUMP {/BLOCK=n/OFFSET=n|/NEXT} [/CONFIRM=n] {/BYTE|/WORD|/LONGWORD (d)|/QUADWORD} value

### Parameter

> #### value

> The new value deposited in the specified location in the dump file.

### Qualifiers

> #### /BLOCK=n

> Indicates block number to be modified. Required unless the /NEXT qualifier is given.

> #### /OFFSET=n

> Indicates byte offset within block to be modified. Required unless the /NEXT qualifier is given.

> #### /CONFIRM=n

> Checks existing contents of location to be modified.

> #### /NEXT

> Indicates that the byte(s) immediately following the location altered by the previous MODIFY DUMP command is/are to be modified. Used instead of the /BLOCK=n and /OFFSET=n qualifiers.

> #### /BYTE

> Indicates that only a single byte is to be replaced.

> #### /WORD

> Indicates that a word is to be replaced.

> #### /LONGWORD

> Indicates that a longword is to be replaced. This is the default.

> #### /QUADWORD

> Indicates that a quadword is to be replaced.

### Description

> The MODIFY DUMP command is used on a dump file that cannot be analyzed without specifying the /OVERRIDE qualifier on the ANALYZE/CRASH_DUMP command. The MODIFY DUMP command can be used to correct the problem that prevents normal analysis of a dump file. The MODIFY DUMP command can only be used when SDA has been invoked with the ANALYZE/CRASH_DUMP/OVERRIDE command.

> Important This command is not intended for general use. It is provided for the benefit of Compaq support personnel when investigating crash dumps that cannot be analyzed in other ways.

> If the block being modified is part of either the dump header, the error log buffers, or the compression map, the changes made are not seen when you issue the appropriate SHOW DUMP command, unless you first exit from SDA and then reissue the ANALYZE/CRASH_DUMP command.

> The MODIFY DUMP command sets a bit in the dump header to indicate that the dump has been modified. Subsequent ANALYZE/CRASH_DUMP commands issued to that file produce the following warning message:

>     %SDA-W-DUMPMOD, dump has been modified

### Example

    SDA>> MODIFY DUMP/BLOCK=10/OFFSET=100/WORD FF

> This example shows the dump file modified with the word at offset 100 in block 00000010 replaced by 00FF.

    SDA>> MODIFY DUMP/BLOCK=10/OFFSET=100/WORD 0/CONFIRM=EE

> This example shows that the actual word value of 00FF at offset 100 in block 00000010 does not match the given value of 00EE. The following message is displayed:

    %SDA-E-NOMATCH, expected value does not match value in dump; dump not updated

    SDA>> MODIFY DUMP/BLOCK=10/OFFSET=100/WORD 0/CONFIRM=FF

> This example shows the dump file modified with a word value of 00FF at offset 100 in block 00000010 replaced by 0000.

## READ

> Loads the global symbols contained in the specified file into the SDA symbol table.

### Format

> READ [/[NO]LOG|/RELOCATE =expression|/SYMVA=expression]
> {/EXECUTIVE [directory spec]|/FORCE filespec
> |/IMAGE filespec|filespec}

### Parameters

> #### directory-spec

> The directory-spec is the name of the directory containing the loadable images of the executive. This parameter defaults to SDA$READ_DIR which is a search list of SYS$LOADABLE_IMAGES and SYS$LIBRARY.

> #### filespec

> Name of the device, directory, and file that contains the file from which you want to read global symbols. The filespec defaults to SYS$DISK:[default-dir]filename.type, where SYS$DISK and [default-dir] represent the disk and directory specified in your last DCL command SET DEFAULT. If no type has been given in filespec, SDA first tries .STB and then .EXE.

> If no device or directory is given in the file specification, and the file specification is not found in SYS$DISK:[default_dir], then SDA attempts to open the file SDA$READ_DIR:filename.type. If no type has been given in filespec, SDA first tries .STB and then .EXE.

> If the file name is the same as that of an execlet or image, but the symbols in the file are not those of the execlet or image, then you must use the /FORCE qualifier, and optionally /RELOCATE and /SYMVA qualifiers, to tell SDA how to interpret the symbols in the file.

### Qualifiers

> #### /EXECUTIVE directory-spec

> Reads into the SDA symbol table all global symbols and global entry points defined within all loadable images that make up the executive. For all the execlets in the system, SDA reads the .STB or .EXE files in the requested directory.

> #### /FORCE filespec

> Forces SDA to read the symbols file, regardless of what other information or qualifiers are specified. If you do not specify the /FORCE qualifier, SDA may not read the symbols file if the specified filespec matches the image name in either the executive loaded images or the current processes activated image list, and one of the following conditions is true:
> - The image has a symbols vector (is a shareable image), and a symbols vector was not specified with the /SYMVA or /IMAGE qualifier.
> - The image is sliced, and slicing information was not provided with the /IMAGE qualifier.
> - The shareable or executive image is not loaded at the same address it was linked at, and the relocation information was not provided with either the /IMAGE or /RELOCATE qualifier.

> The use of /FORCE [/SYMVA=addr][/RELOCATE=addr] file spec is a variant of the /IMAGE qualifier and avoids fixing up the symbols to match an image of the same name.

> #### /IMAGE filespec

> Searches the executive loaded image list and the current process activated image list for the image specified by filespec. If the image is found, the symbols are read in using the image symbol vector (if there is one) and either slicing or relocation information.

> This is the preferred way to read in the .STB files produced by the linker. These .STB files contain all universal symbols, unless SYMBOL_TABLE=GLOBAL is in the linker options file, in which case the .STB file contains all universal and global symbols.

> #### /LOG
> /NOLOG

> The /LOG qualifier causes SDA to output the %SDA-I-READSYM message for each symbol table file it reads. This is the default. The /LOG qualifier can be specified with any other combination of parameters and qualifiers.

> The /NOLOG qualifier suppresses the output of the %SDA-I-READSYM messages. The /NOLOG qualifier can be specified with any other combination of parameters and qualifiers.

> #### /RELOCATE=expression

> Changes the relative addresses of the symbols to absolute addresses by adding the value of expression to the value of each symbol in the symbol-table file to be read. This qualifier changes those addresses to absolute addresses in the address space into which the dump is mapped.

> The relocation only applies to symbols with the relocate flag set. All universal symbols must be found in the symbol vector for the image. All constants are read in without any relocation.

> If the image is sliced (image sections are placed in memory at different relative offsets than how the image is linked), then the /RELOCATE qualifier does not work. SDA compares the file name used as a parameter to the READ command against all the image names in the executive loaded image list and the current processes activated image list. If a match is found, and that image contains a symbol vector, an error results. At this point you can either use the /FORCE qualifier or the /IMAGE qualifier to override the error.

> #### /SYMVA=expression

> Informs SDA whether the absolute symbol vector address is for a shareable image (SYS$PUBLIC_VECTORS.EXE) or base system image (SYS$BASE_IMAGE.EXE). All symbols found in the file with the universal flag are found by referencing the symbol vector (that is, the symbol value is a symbol vector offset).

### Description

> The READ command symbolically identifies locations in memory and the definitions used by SDA for which the default files (SDA$READ_DIR:SYS$BASE_IMAGE.EXE and SDA$READ_DIR:REQSYSDEF.STB) provide no definition. In other words, the required global symbols are located in modules and symbol tables that have been compiled and/or linked separately from the executive. SDA extracts no local symbols from the files.

> The file specified in the READ command can be the output of a compiler or assembler (for example, an .OBJ file).

> Note READ can read both OpenVMS VAX and OpenVMS Alpha format files. READ should not be used to read OpenVMS VAX format files that contain VAX specific symbols, as this might change the behavior of other OpenVMS Alpha SDA commands.

> Most often the file is provided in SYS$LOADABLE_IMAGES. Many SDA applications, for instance, need to load the definitions of system data structures by issuing a READ command specifying SYSDEF.STB. Others require the definitions of specific global entry points within the executive image.

> The files in SYS$LOADABLE_IMAGES define global locations within executive images, including those listed in Table 4-1. The actual list of executive images used varies, depending on platform type, devices, and the settings of several system parameters.

> Table 4-1 Modules Defining Global Locations Within Executive Image
> File | Contents
> --- | ---
> ACME.EXE | $ACM system service
> CNX$DEBUG.EXE | Connection Manager trace routines
> DDIF$RMS_EXTENSION.EXE | Support for Digital Document Interchange Format (DDIF) file operations
> ERRORLOG.STB | Error-logging routines and system services
> EXCEPTION.STB 1 | Bugcheck and exception-handling routines and those system services that declare condition and exit handlers
> EXEC_INIT.STB | Initialization code
> F11BXQP.STB | File system support
> FC$GLOGALS.STB | Fibrechannel symbols
> IMAGE_MANAGEMENT.STB | Image activator and the related system services
> IO_ROUTINES.STB 1 | $QIO system service, related system services (for example, $CANCEL and $ASSIGN), and supporting routines
> LAT$RATING.EXE | CPU load balancing routines for LAT
> LCK$DEBUG.EXE | Lock manager trace routines
> LMF$GROUP_TABLE.EXE | Data structures for licensed product groups
> LOCKING.STB | Lock management routines and system services
> LOGICAL_NAMES.STB | Logical name routines and system services
> MESSAGE_ROUTINES.STB | System message routines and system services (including $SNDJBC and $GETTIM)
> MSCP.EXE | Disk MSCP server
> MULTIPATH.STB 1 | Fibrechannel multipath support routines
> NET$CSMACD.EXE | CSMA/CD LAN management module
> NET$FDDI.EXE | FDDI LAN management module
> NT_EXTENSION.EXE | NT extensions for persona system services
> PROCESS_MANAGEMENT.STB 1 | Scheduler, report system event, and supporting routines and system services
> QSRV$GLOBALS.STB | QIOserver symbols
> RECOVERY_UNIT_SERVICES.STB | Recovery unit system services
> RMS.EXE | Global symbols and entry points for RMS
> SECURITY.STB 1 | Security management routines and system services
> SHELL xxK.STB | Process shell
> SPL$DEBUG.EXE | Spinlock trace routines
> SSPI.EXE | Security Support Provider Interface
> SYS$ xxDRIVER.EXE | Run-time device drivers
> SYS$ATMWORKS351.EXE | PCI-ATM driver
> SYS$CLUSTER.EXE | OpenVMS Cluster support routines
> SYS$CPU_ROUTINES_ xxxx.EXE | Processor-specific data and initialization routines
> SYS$EW1000A.EXE | Gigabit Ethernet driver
> SYS$GALAXY.STB | OpenVMS Galaxy support routines
> SYS$IPC_SERVICES.EXE | Interprocess communication for DECdtm and Batch/Print
> SYS$LAN.EXE | Common LAN routines
> SYS$LAN_ATM.EXE | LAN routines for ATM
> SYS$LAN_ATM4.EXE | LAN routines for ATM (ForeThought)
> SYS$LAN_CSMACD.EXE | LAN routines for CSMA/CD
> SYS$LAN_FDDI.EXE | LAN routines for FDDI
> SYS$LAN_TR.EXE | LAN routines for Token Ring
> SYS$MME_SERVICES.STB | Media Management Extensions
> SYS$NETWORK_SERVICES.EXE | DECnet support
> SYS$NTA.STB | NT affinity routines and services
> SYS$PUBLIC_VECTORS.EXE 2 | System service vector base image
> SYS$QIOSERVER_KCLIENT.EXE 1 | QIOserver client
> SYS$QIOSERVER_KSERVER.EXE | QIOserver server
> SYS$SCS.EXE | System Communication Services
> SYS$TRANSACTION_SERVICES.EXE | DECdtm services
> SYS$UTC_SERVICES.EXE | Universal Coordinated Time services
> SYS$VCC.STB 1 | Virtual I/O cache
> SYS$VM.STB | System pager and swapper, along with their supporting routines, and management system services
> SYS$XFCACHE.STB 1 | Extented File Cache
> SYSDEVICE.STB | Mailbox driver and null driver
> SYSGETSYI.STB | Get System Information system service ($GETSYI)
> SYSLDR_DYN.STB | Dynamic executive image loader
> SYSLICENSE.STB | Licensing system service ($LICENSE)
> SYSTEM_DEBUG.EXE | XDelta and SCD routines
> SYSTEM_PRIMITIVES.STB 1 | Miscellaneous basic system routines, including those that allocate system memory, maintain system time, create fork processes, and control mutex acquisition
> SYSTEM_SYNCHRONIZATION.STB 1 | Routines that enforce synchronization
> TCPIP$BGDRIVER.STB 3 | TCP/IP internet driver
> TCPIP$INETACP.STB 3 | TCP/IP internet ACP
> TCPIP$INETDRIVER.STB 3 | TCP/IP internet driver
> TCPIP$INTERNET_SERVICES.STB 3 | TCP/IP internet execlet
> TCPIP$NFS_SERVICES.STB 3 | Symbols for the TCP/IP NFS server
> TCPIP$PROXY_SERVICES.STB 3 | Symbols for the TCP/IP proxy execlet
> TCPIP$PWIPACP.STB 3 | TCP/IP PWIP ACP
> TCPIP$PWIPDRIVER.STB 3 | TCP/IP PWIP driver
> TCPIP$TNDRIVER.STB 3 | TCP/IP TELNET/RLOGIN server driver
> TMSCP.EXE | Tape MSCP server
> VMS_EXTENSION.EXE | VMS extensions for persona system services

1Variations of these files also exist, for example where the file name ends "_MON." System parameters such as SYSTEM_CHECK determine which image is loaded.
2This file is located in SYS$LIBRARY.
3Only available if TCP/IP has been installed. These are found in SYS$SYSTEM, and are not automatically read in when you issue a READ/EXEC command.

SDA can also read symbols from an image .EXE or .STB produced by the linker. The STB and EXE files only contain universal symbols. The STB file, however, can be forced to have global symbols for the image if you use the SYMBOL_TABLE=GLOBAL option in the linker options file.

A number of ready-built symbol table files ship with OpenVMS Alpha. They can be found in the directory SYS$LOADABLE_IMAGES, and all have names of the form xyzDEF.STB. Of these files, SDA automatically reads REQSYSDEF.STB on activation. You can add the symbols in the other files to SDA's symbol table using the READ command. Table 2-4 lists the files that OpenVMS Alpha provides in SYS$LOADABLE_IMAGES that define data structure offsets.

The following MACRO program, GLOBALS.MAR, shows how to obtain symbols in addition to those in SYS$BASE_IMAGE.EXE, other executive images listed in Table 4-1, and the symbol table files that are listed in Table 2-4.

    .TITLE GLOBALS
    $PHDDEF GLOBAL          ; Process header definitions
    $DDBDEF GLOBAL          ; Device data block
    $UCBDEF GLOBAL          ; Unit control block
    $VCBDEF GLOBAL          ; Volume control block
    $ACBDEF GLOBAL          ; AST control block
    $IRPDEF GLOBAL          ; I/O request packet
    ; more can be inserted here
    .END

Use the command below to generate an object module file containing the globals defined in the program.

    $MACRO GLOBALS+SYS$LIBRARY:LIB/LIBRARY /OBJECT=GLOBALS.STB

### Examples

#1
    SDA>  READ SDA$READ_DIR:SYSDEF.STB
    %SDA-I-READSYM, 10010 symbols read from SYS$COMMON:[SYSEXE]SYSDEF.STB;1

> The READ command causes SDA to add all the global symbols in SDA$READ_DIR:SYSDEF.STB to the SDA symbol table. Such symbols are useful when you are formatting an I/O data structure, such as a unit control block or an I/O request packet.

#2
    SDA> SHOW STACK
    Process stacks (on CPU 00)
    --------------------------
    Current operating stack (KERNEL):

            00000000.7FF95CD0  FFFFFFFF.80430CE0  SCH$STATE_TO_COM+00040
            00000000.7FF95CD8  00000000.00000000
            00000000.7FF95CE0  FFFFFFFF.81E9CB04  LNM$SEARCH_ONE_C+000E4
            00000000.7FF95CE8  FFFFFFFF.8007A988  PROCESS_MANAGEMENT_NPRO+0E988
       SP =>00000000.7FF95CF0  00000000.00000000
            00000000.7FF95CF8  00000000.006080C1
            00000000.7FF95D00  FFFFFFFF.80501FDC
            00000000.7FF95D08  FFFFFFFF.81A5B720
       .
       .
       .

    SDA>  READ/IMAGE SYS$LOADABLE_IMAGES:PROCESS_MANAGEMENT
    %SDA-I-READSYM, 767 symbols read from SYS$COMMON:[SYS$LDR]PROCESS_MANAGEMENT.STB;1
    SDA>  SHOW STACK
    Process stacks (on CPU 00)
    --------------------------
    Current operating stack (KERNEL):

            00000000.7FF95CD0  FFFFFFFF.80430CE0  SCH$FIND_NEXT_PROC
            00000000.7FF95CD8  00000000.00000000
            00000000.7FF95CE0  FFFFFFFF.81E9CB04  LNM$SEARCH_ONE_C+000E4
            00000000.7FF95CE8  FFFFFFFF.8007A988  SCH$INTERRUPT+00068
       SP =>00000000.7FF95CF0  00000000.00000000
            00000000.7FF95CF8  00000000.006080C1
            00000000.7FF95D00  FFFFFFFF.80501FDC
            00000000.7FF95D08  FFFFFFFF.81A5B720
       .
       .
       .

> Previous | Next | Contents | Index

> | privacy and legal statement |
> 6549PRO_007.HTML