Allegro: AVATAR for HP-UX
AVATAR
AVATAR is a disassembler/patcher/code-explorer for 32-bit code on PA-RISC based
HP-UX systems.
NOTE: AVATAR does NOT work on Intel x86 code!
NOTE: AVATAR does NOT work with 64-bit ("wide") PA-RISC code!
NOTE: AVATAR does NOT work well with PA-RISC 2.0 code! (It's an old product :)
NOTE: AVATAR on HP-UX has problems, and may find it difficult to locate procedures in your program by name.
(Did we mention that it's an old product?)
(The main development thrust of AVATAR has been MPE/iX.)
A semi-functional demo version (20051129) is available by clicking:
here . That
version displays about 50% of all assembler opcodes as "xxx".
(It also truncates the source files names in the COMPILER command's output.)
((uncompressed version))
Things AVATAR can do:
disassemble (sample)
re-assemble (mini-assembler built in)
code patch
data patch
extract into .S (assembler source) (sample)
search for symbols (sample)
display SOM info
display compiler info (sample)
display procedure header information (when available)
(see the "look"
command in the attached sample output)
display who calls a particular routine (sample)
display what routines a particular routine calls
patch kernel (create a patched copy of /hp-ux)
[MPE] patch kernel "in-place" (i.e., can edit NL.PUB.SYS)
[MPE] extract from PDC into .S file (assembly source)
[MPE] build a file of caller/callee data for analysis by a separate tool
The relatively crude help file
(for HP-UX version) is attached after the sample output below.
AVATAR is US$2000, which includes the first year of support.
An MPE/iX version of AVATAR
is also available.
For more information, contact
Stan Sieler (sieler@allegro.com).
---------------------------------cut here -----------------------------
Sample AVATAR session, decompiling /hp-ux on HP-UX A.09.00 (9000/720):
AVATAR 95A Copyright (c) 1995 Allegro Consultants, Inc.
Email: support@allegro.com; WWW: ; Voice: (408) 252-2330
For help, type: HELP
AVATAR: open /hp-ux
opening file: /hp-ux ...
FILE TYPE : non-sharable, executable SOM
Found 4035 unwind entries.
Searching 10753 symbol dictionary entries
Sorting 10753 symbols
Sample of a disassemble (Display Code) command:
AVATAR[/hp-ux]: dc netisr
netisr 3 0 ENTRY UNIVERSAL 6280 751c4
; *********************************************************************
[C] 751c4: 6bc23fd9 STW 2,-20(0,30) ; $ffffffec, sp-20
[C] 751c8: 6fc30180 STWM 3,192(0,30) ; $c0, sp+192
[C] 751cc: 6bc43e89 STW 4,-188(0,30) ; $ffffff44, sp-188
[C] 751d0: 6bc53e91 STW 5,-184(0,30) ; $ffffff48, sp-184
[C] 751d4: 6bc63e99 STW 6,-180(0,30) ; $ffffff4c, sp-180
[C] 751d8: 6bc73ea1 STW 7,-176(0,30) ; $ffffff50, sp-176
[C] 751dc: 6bc83ea9 STW 8,-172(0,30) ; $ffffff54, sp-172
[C] 751e0: +` 2b600000 ADDIL $0,27
[C] 751e4: 08010245 COPY 1,5
[C] 751e8: 342403a0 LDO 464(1),4
[C] 751ec: +` 2b600000 ADDIL $0,27
[C] 751f0: 08010243 COPY 1,3
[C] 751f4: 487803c8 LDW 484(0,3),24
[C] 751f8: 37190002 LDO 1(24),25
[C] 751fc: 687903c8 STW 25,484(0,3)
[C] 75200: 8f222252 COMIB,<>,N 1,25,.+0x130 ; 75330
[C] 75204: +` 2b600000 ADDIL $0,27
[C] 75208: 483a03d0 LDW 488(0,1),26 ; $1e8, dp+488
[C] 7520c: 8f42201a COMIB,<>,N 1,26,.+0x14 ; 75220
[C] 75210: e8420fbc BL netmp_go_excl_tho,2 ; 7a9f4
AVATAR can search for symbols, by name and/or type:
AVATAR[/hp-ux]: find open, entry
Module:
Symbol X P Symbol Symbol
Name Type Scope Address Value
------- - - ------ ------ -------- --------
openp_wait_send 3 0 ENTRY UNIVERSAL 3ecc 70584
openp_wait_recv 3 0 ENTRY UNIVERSAL 3ee0 7058c
tape0_open 3 0 ENTRY UNIVERSAL 4200 707ac
lan2_open 3 0 ENTRY UNIVERSAL 86c0 8f428
lanc_lla_open 3 0 ENTRY UNIVERSAL 879c 8f934
ni_open 3 0 ENTRY UNIVERSAL b4c4 ac274
openp 3 0 ENTRY UNIVERSAL c9dc ba62c
openp_wait 3 0 ENTRY UNIVERSAL ca04 ba71c
ufs_open 3 0 ENTRY UNIVERSAL cce8 bb844
openi 3 0 ENTRY UNIVERSAL ccfc bbab4
nfs_open 3 0 ENTRY UNIVERSAL df44 c76c4
spec_open 3 0 ENTRY UNIVERSAL f86c d2034
fifo_open 3 0 ENTRY UNIVERSAL fc18 d2fa4
cdfs_open 3 0 ENTRY UNIVERSAL 10d34 d812c
dmem_open 3 0 ENTRY UNIVERSAL 16ea0 e75d4
eeprom_open 3 0 ENTRY UNIVERSAL 19b3c fc0e0
audio_open 3 0 ENTRY UNIVERSAL 1a35c ffbdc
new_cn_open 3 0 ENTRY UNIVERSAL 1a7e4 104eb8
cn_open 3 0 ENTRY UNIVERSAL 1a80c 104ef4
diag1_open 3 0 ENTRY UNIVERSAL 1a974 10511c
iomap_open 3 0 ENTRY UNIVERSAL 1ab54 105d94
tty_open 3 0 ENTRY UNIVERSAL 1ac6c 1063bc
asio0_open 3 0 ENTRY UNIVERSAL 1ae10 1066ec
pty1_open 3 0 ENTRY UNIVERSAL 1b040 10893c
pty_opentty 3 0 ENTRY UNIVERSAL 1b068 108b0c
pty0_open 3 0 ENTRY UNIVERSAL 1b0f4 109748
sdisk_open 3 0 ENTRY UNIVERSAL 1b360 10b6e0
sd_open 3 0 ENTRY UNIVERSAL 1b388 10b728
sds_open 3 0 ENTRY UNIVERSAL 1b860 10e414
s2tape_open 3 0 ENTRY UNIVERSAL 1baa4 10ede4
stape_open 3 0 ENTRY UNIVERSAL 1bb58 10f18c
st_open 3 0 ENTRY UNIVERSAL 1bb6c 10f1f0
scsi_bus_open 3 0 ENTRY UNIVERSAL 1c2d8 117ccc
scsi_tgt_open 3 0 ENTRY UNIVERSAL 1c33c 1185b8
scsi_lun_open 3 0 ENTRY UNIVERSAL 1c350 1189a0
sctl_open 3 0 ENTRY UNIVERSAL 1c6c0 11e610
c700_open 3 0 ENTRY UNIVERSAL 1cda0 127968
c700_lun_first_open 3 0 ENTRY UNIVERSAL 1cdb4 1283ac
c700_bus_first_open 3 0 ENTRY UNIVERSAL 1cdc8 127a98
c700_tgt_first_open 3 0 ENTRY UNIVERSAL 1cdf0 128368
CharDrv_open 3 0 ENTRY UNIVERSAL 1cf94 12b380
unit_opened 3 0 ENTRY UNIVERSAL 1d520 12e168
unit_open 3 0 ENTRY UNIVERSAL 1d534 12e1d8
cs80_open 3 0 ENTRY UNIVERSAL 1d598 12e794
framebuf_open 3 0 ENTRY UNIVERSAL 1d728 12f880
r8042_open 3 0 ENTRY UNIVERSAL 1dfc0 135124
hil_open 3 0 ENTRY UNIVERSAL 1e038 1357ac
nimitz_open 3 0 ENTRY UNIVERSAL 1e0d8 135f80
ite_open 3 0 ENTRY UNIVERSAL 1e204 136404
dconfig_open 3 0 ENTRY UNIVERSAL 1ed6c 13b5cc
netdiag1_open 3 0 ENTRY UNIVERSAL 1f028 13cc90
ki_open 3 0 ENTRY UNIVERSAL 225c0 153f60
sy_open 3 0 ENTRY UNIVERSAL 22a20 157000
pre_open 3 0 ENTRY UNIVERSAL 23420 15b81c
devtovp_open 3 0 ENTRY UNIVERSAL 23754 15ce64
vn_open 3 0 ENTRY UNIVERSAL 23efc 16196c
vns_open 3 0 ENTRY UNIVERSAL 23f38 161ae8
vns_copen 3 0 ENTRY UNIVERSAL 23f4c 161ba4
openforwrite 3 0 ENTRY UNIVERSAL 251e4 16b164
opendq 3 0 ENTRY UNIVERSAL 25a68 16fcf4
mnt_opendq 3 0 ENTRY UNIVERSAL 25b30 1705d8
opend 3 0 ENTRY UNIVERSAL 25d74 171364
nm_open 3 0 ENTRY UNIVERSAL 26634 174da0
iodc_open 3 0 ENTRY LOCAL 293ac 1865e8
ttopen 3 0 ENTRY UNIVERSAL 2b170 18eee4
tty_open_TO 3 0 ENTRY UNIVERSAL 2b60c 194e0c
ttycomn_open 3 0 ENTRY UNIVERSAL 2b670 195628
tty_CCITT_open 3 0 ENTRY UNIVERSAL 2b684 195eb8
tty_simple_open 3 0 ENTRY UNIVERSAL 2b698 195a8c
sds_lif_open 3 0 ENTRY LOCAL 2b79c 196b24
proc_open 3 0 ENTRY UNIVERSAL 2d4c0 1a7cb8
dbopencleanup 3 0 ENTRY UNIVERSAL 2d4d4 1a7fe8
open 3 0 ENTRY UNIVERSAL 2f694 1b4058
copen 3 0 ENTRY UNIVERSAL 2f6a8 1b40ec
AVATAR[/hp-ux]: dc open 20
open 3 0 ENTRY UNIVERSAL 2f694 1b4058
; *********************************************************************
[C] 1b4058: 6bc23fd9 STW 2,-20(0,30) ; $ffffffec, sp-20
[C] 1b405c: 37de0080 LDO 64(30),30 ; $40, sp+64
[C] 1b4060: 0f40109f LDWS 0(0,26),31
[C] 1b4064: 0f481097 LDWS 4(0,26),23
[C] 1b4068: 36f90002 LDO 1(23),25
[C] 1b406c: 0f501098 LDWS 8(0,26),24
[C] 1b4070: e84000e8 BL copen,2 ; 1b40ec
[C] 1b4074: 081f025a COPY 31,26
[C] 1b4078: 2b681000 ADDIL $10800,27
[C] 1b407c: 483800d0 LDW 104(0,1),24 ; $10868, dp+67688
[C] 1b4080: 671c0624 STH 28,786(0,24)
[C] 1b4084: 4bc23f59 LDW -84(0,30),2 ; $ffffffac, sp-84
[C] 1b4088: e840c000 BV 0(2)
[C] 1b408c: 37de3f81 LDO -64(30),30 ; $ffffffc0, sp-64
; ---------------------------------------------------------------
creat 3 0 ENTRY UNIVERSAL 2f6bc 1b4090
; *********************************************************************
[C] 1b4090: 6bc23fd9 STW 2,-20(0,30) ; $ffffffec, sp-20
[C] 1b4094: 37de0080 LDO 64(30),30 ; $40, sp+64
[C] 1b4098: 0f40109f LDWS 0(0,26),31
[C] 1b409c: 34190604 LDI 770,25
[C] 1b40a0: 0f481098 LDWS 4(0,26),24
[C] 1b40a4: e8400080 BL copen,2 ; 1b40ec
AVATAR can report what calls a particular routine makes:
AVATAR[/hp-ux]: calls open
searching [$1b4058..$1b4090]...
open 3 0 ENTRY UNIVERSAL 2f694 1b4058
1b4070: BL copen,2 ; 1b40ec
Checked 14 locations; found 1 calls and 0 stmnts.
Here is a sample of the LOOK command:
AVATAR[/hp-ux]: look open
symbol name : open
address : 2f694
symbol_type : any program entry point
symbol_scope : exported symbol for other SOMs
check_level : 0
must_qualify : 0
initially_frozen : 0
memory_resident : 0
is_common : 0
duplicate_common : 0
xleast : 3
privilege level : 0
code offset : 169058 - 16908c (14 instructions)
parameter #1 : argument register
parameter #2 : do not relocate
parameter #3 : do not relocate
parameter #4 : do not relocate
function return : argument register
AVATAR[/hp-ux]: look openp
symbol name : openp
address : c9dc
symbol_type : any program entry point
symbol_scope : exported symbol for other SOMs
check_level : 0
must_qualify : 0
initially_frozen : 0
memory_resident : 0
is_common : 0
duplicate_common : 0
xleast : 3
privilege level : 0
code offset : 6f62c - 6f710 (58 instructions)
parameter #1 : argument register
parameter #2 : argument register
parameter #3 : do not relocate
parameter #4 : do not relocate
function return : argument register
AVATAR[/hp-ux]: look rfi
symbol name : rfi
address : 9ac
symbol_type : any program entry point
symbol_scope : exported symbol for other SOMs
check_level : 0
must_qualify : 0
initially_frozen : 0
memory_resident : 0
is_common : 0
duplicate_common : 0
xleast : 3
privilege level : 3
code offset : 1f000 - 1f040 (17 instructions)
parameter #1 : do not relocate
parameter #2 : do not relocate
parameter #3 : do not relocate
parameter #4 : do not relocate
function return : do not relocate
AVATAR[/hp-ux]: dc rfi 20
rfi 3 3 ENTRY UNIVERSAL 9ac 6a003
[C] 6a000: 01c008b6 MFCTL 14,22
[C] 6a004: 4ad53f99 LDW -52(0,22),21
[C] 6a008: 0aba0255 OR 26,21,21
[C] 6a00c: 0b350015 ANDCM 21,25,21
[C] 6a010: 22884018 LDIL $c50000,20
[C] 6a014: 36940000 LDO 0(20),20 ; $c50000, 12910592
[C] 6a018: 0ab40214 AND 20,21,20
[C] 6a01c: 6ad43f99 STW 20,-52(0,22)
[C] 6a020: 001f0e60 RSM 31,0
[C] 6a024: 02d51840 MTCTL 21,22
[C] 6a028: 34160000 LDI 0,22
[C] 6a02c: 02361840 MTCTL 22,17
[C] 6a030: 02361840 MTCTL 22,17
[C] 6a034: 02421840 MTCTL 2,18
[C] 6a038: 34420008 LDO 4(2),2
[C] 6a03c: 02421840 MTCTL 2,18
[C] 6a040: 00000c00 RFI
$restore_ss 0 0 CODE UNIVERSAL 9c0 6a044
[C] 6a044: 001f0e60 RSM 31,0
[C] 6a048: 4bd63ba1 LDW -560(0,30),22 ; $fffffdd0, sp-560
[C] 6a04c: c7964012 BB,<,N 22,28,notthelast ; 6a05c
AVATAR can display information about the compiler(s) used to generate
the modules in a SOM/program:
AVATAR[/hp-ux]: compiler
system_id : 20b
a_magic : 107
version_id : 5124000
source_file_name :
language_name : HPC
product_id : HP92453-01
version_id : A.09.34
source_file_name : uipc_init
language_name : HP-C
cc options = +O2 +Hx0 +XixdUV +R25 +XiUVx -E1.0 -F1.0 -Ac
product_id : HP92453-01
version_id : A.08.81
source_file_name : sys_socket
language_name : HP-C
cc options = +O2 +Hx0 +XixdUV +R25 +XiUVx -E1.0 -F1.0 -Ac
product_id : HP92453-01
version_id : A.08.81
[...]
source_file_name : eisa_sysbrd
language_name : HP-C
cc options = +O2 +Hx0 +XixdUV +R25 +XiUVx -E1.0 -F1.0 -Ac
product_id : HP92453-01
version_id : A.08.81
[...]
source_file_name : iodc_llio.o
language_name : HPUX Precision Architecture vers PA2.0 assembler
product_id : 92453
version_id : A.08.12 (sllic PA1.1)
source_file_name : virt_phys.o
language_name : HPUX Precision Architecture vers PA2.0 assembler
product_id : 92453
version_id : A.08.12 (sllic PA1.1)
[...]
source_file_name : sysV_map
language_name : HP-C
cc options = +O2 +Hx0 +XixdUV +R25 +XiUVx -E1.0 -F1.0 -Ac
product_id : HP92453-01
version_id : A.08.81
source_file_name : LIBC//Mshfadrs.o
language_name : HPUX Precision Architecture vers PA2.0 assembler
product_id : 92453
version_id : A.08.12 (sllic PA1.1)
[...]
The following shows a sample EXTRACT command, and the resulting output
file:
AVATAR[/hp-ux]: extract open.s open
extraction complete, 23 lines.
Here is the output file, open.s:
.space $PRIVATE$,sort=4096
.subspa $DATA$,quad=1,align=4096,access=31
open
.export open,ENTRY
; *********************************************************************
STW 2,-20(0,30) ; $ffffffec, sp-20
LDO 64(30),30 ; $40, sp+64
LDWS 0(0,26),31
LDWS 4(0,26),23
LDO 1(23),25
LDWS 8(0,26),24
BL copen,2
COPY 31,26
ADDIL L%0x10800,27
LDW 104(0,1),24 ; $10868, dp+67688
STH 28,786(0,24)
LDW -84(0,30),2 ; $ffffffac, sp-84
BV 0(2)
LDO -64(30),30 ; $ffffffc0, sp-64
; ---------------------------------------------------------------
----------------------cut here------------------------------------------
AVATAR help file:
\\! AVATAR.HELP 94/05/07
\SUMMARY
The AVATAR Nugget is used to view the contents of an HP-UX SOM
file (SOM = Software Object Module). This includes program executables
and object (.o) files. There are a variety of commands that
enable you to view the contents in many different ways.
The following list shows all the commands and a brief description
of each command. For a more detailed command description, enter
"HELP" followed by the command name (e.g.,: HELP OPEN).
= calculate a value from an expression
ASM shows the machine code for an assembler instruction
AUX prints the auxiliary headers
CALLee lists all calls to a given object from a code range
CALLS lists all call objects from a code range
CHECKSUM compute a new SOM checksum value
CLOSE closes a SOM file
COMPILER display compiler information
COUNT count all symbol types
DC display data at a code address
DD display data at a data address
DEBUG enters the system debugger
DISASM shows the assembler instruction for a binary machine code
DP display data starting at a procedure
DR display real memory, use with extreme caution
DV display data at a file offset
EXIT get out
EXTRACT extracts a portion of code into an assembler source file
FIND find a symbol in the current SOM
FINDALL find a symbol in all SOMs in the current .a file
FIXUP display fixup information
FORMAT format data at a file offset
HELP display this
INIT display initialization record information
LOOK look at a symbols attributes
LST select a module
MC modify data at a code address
MD modify data at a data address
MV modify data at a file offset
NEXT display more data, after a DC, DD, DP or DV command
OPEN opens a SOM file for processsing
QUIT terminate this program
RADIX changes the default radix
SEARCH search for a value in the SOM file
SPACE display space header information
SUBSPACE display subspace header information
SYMFormat format options for SYMOS information display
SYMOpen used to open a SYMOS file for examination
SYN sets up synonyms for registers
UNCALLED displays entry points that are never called
UNWIND display unwind descriptors
Most commands may be abbreviated somewhat.
Although most of the AVATAR commands require that a SOM file be
open, the DV and MV commands can be used after OPENing any kind
of file.
\EXPRESSION
----------------------------------------------------------------------
Expressions are used in many of the commands.
Syntax:
<expression> ::= <term> [ + <term> ]
[ - ]
<term> ::= <factor> [ * <factor> ]
[ / ]
<factor> ::= [ + ] <primary>
[ - ]
<primary> ::= ( <expression> )
or ` <assembler instruction> `
or <number>
or SOM_HEADER
or LST_HEADER
or AUX_HEADER
or SPACE_DICT
or SUBSPACE_DICT
or LOADER_FIXUP
or SPACE_STRINGS
or INIT_ARRAY
or COMPILER_DICT
or SYMBOL_DICT
or FIXUP
or SYMBOL_STRINGS
or UNL_SPACE
or PROCTIME
or <symbol>
or " <symbol> "
<assembler instruction> is a valid assembler instruction. Note that
the instruction is enclosed in back-quotes.
<number> ::= $ <hexadecimal digits>
or % <octal digits>
or # <decimal digits>
or <digits in current radix>
<symbol> is the value of any symbol defined in the current SOM.
If the symbol is not enclosed in quotes, then it can not
be one of the previously defined words (e.g. PROCTIME) and
it can only contain characters from the set 'A'..'Z', 'a'..'z',
'0'..'9', '_', '$', '#', '%'.
If the name of the symbol is preceded with a ? then the value
of a stub with that name is used.
Strings are also used in many commands. Strings can be given as a simple
string or as a compound string. A simple string is 'zero or more characters
enclosed in double-quotes'.
A compound string is a list of substrings, enclosed in braces ({}).
A substring can be a string enclosed in double-quotes or a number
representing the value of one byte.
Example:
"This is a string"
{"This is a string with a new-line character" $a}
\ASM
----------------------------------------------------------------------
The ASM command shows the binary machine code for an assembler
instruction.
Syntax:
ASM <assembler instruction>
<assembler instruction> = a valid assembler instruction.
Examples:
ASM ldo 1(0),31
ASM bl $$lr_unk_unk,31
\AUX, SOM
----------------------------------------------------------------------
The AUX command prints all the auxiliary headers from the current SOM.
The format will depend on the actual header type of each header.
AUX only works for program files, not .o or .a files.
Syntax:
AUX
\CALCULATE, =
----------------------------------------------------------------------
The = command will evaluate an expression and display the
resultant value in hexadecimal and decimal.
Syntax:
= <expression>
<expression> = an arithmetic expression
All calculations are done using 32-bit integer arithmetic
Examples:
= 5+20-$15
= FOPEN
\CALLEE
----------------------------------------------------------------------
The CALLEE command will check a range of instructions for calls to a
given procedure.
Syntax:
CALLee <calleename> <procedurename>
or
CALLee <calleename> <startoffset> <endoffset>
<calleename> = The name of the callee to be searched.
<procedurename> = The procedure in which the calls must occur.
If neither a procedure name nor a range is given,
then the whole som will be searched.
<startoffset> = The starting point from where searching
begins.
<endoffset> = The ending point of the search.
Example:
CALLEE fwrite
CALLEE fwrite myprocedure
CALLEE fwrite myprocedure+$b myprocedure+1000
\CALLS
----------------------------------------------------------------------
The CALLS command will check a range of instructions for calls to any
procedure.
Syntax:
CALLS <procedurename>
or
CALLS <startoffset> <endoffset>
<procedurename> = The procedure in which the calls must occur.
If neither a procedure name nor a range is given,
then the whole som will be searched.
<startoffset> = The starting point from where searching begins.
<endoffset> = The ending point of the search.
Example:
CALLS
CALLS myprocedure
CALLS myprocedure+$b myprocedure+1000
\CHECKSUM, SOM
----------------------------------------------------------------------
The CHECKSUM command will calculate the checksum for the currently
opened SOM file and replace the existing value with the new one. This
is necessary if you have modified the first 124 bytes of the SOM file.
Syntax:
CHECKSUM
\CLOSE
----------------------------------------------------------------------
The CLOSE command will close the currently opened SOM file. This really
isnt necessary because the OPEN command will close any opened SOM file.
Syntax:
CLOSE
\COMPILER, SOM
----------------------------------------------------------------------
The COMPILER command will display the compiler dependent information
about the current module of the opened SOM file. Information display
includes the name of compiler, version number, source file name, and
product id.
Syntax:
COMPILER
\COUNT, SOM
----------------------------------------------------------------------
The COUNT command displays occurrence counter for each symbol type and
scope.
Syntax:
COUNT
\DC
----------------------------------------------------------------------
The DC command will display data at a given code address. The data will
be displayed in assembler format by default, but other formats may be
specified.
Syntax:
DC <code offset> [<display format>] [<numlines>]
<code offset> = an expression giving the offset to the start of
the current code module, where data to display
starts.
<display format> = either C or D. Default is C. If D is specified
then data is displayed in hex and ascii format.
If C is specified then data is displayed as
disassembled code.
The default value is C.
<numlines> = a decimal number, indicating the number of lines
to show.
The default value is to keep on displaying until
the next control-y or '/' reply.
Example:
DC my_procedure_name
DC proc + $15 D 12
\DD
----------------------------------------------------------------------
The DD command will display values (data) from an initialised block
within the current module of the opened som file. Data will be
displayed in hexadecimal and ASCII formats by default.
Syntax:
DD <data offset> [<display format>] [<numlines>]
<data offset> = an expression giving the start within an initialised
block, where display starts.
<display format> = either C or D. Default is D. If D is specified
then data is displayed in hex and ascii format.
If C is specified then data is displayed as
disassembled code.
The default value is D.
<numlines> = a decimal number, indicating the number of lines
to show.
The default value is to keep on displaying until
the next control-y or '/' reply.
Examples:
DD $40000008
DD dl_area 20
\DEBUG
----------------------------------------------------------------------
The DEBUG command invokes the system debugger
Syntax:
DEBUG
\DISASM
----------------------------------------------------------------------
The DISASM command shows the assembler instruction corresponding to a
machine code.
Syntax:
DISASM <expression>
Examples:
DISASM $8000240
DISASM `nop`
Note that the assembler instruction is enclosed in back-quotes.
\DP
----------------------------------------------------------------------
The DP command will display code for a given procedure. The data will
be displayed in assembler format.
Syntax:
DP <procedure>
<procedure name> = any procedure that has been defined in the
current module of the opened SOM file.
Example:
DP my_procedure_name
\DR
----------------------------------------------------------------------
The DR command will display real memory starting at the physical
address given by expression.
Syntax:
DR <expression>
<expression> defines a physical address
\DV
----------------------------------------------------------------------
The DV command will display values (data) from within the current som
file. Data will be displayed in hexadecimal and ASCII formats by default.
Syntax:
DV <data offset> [<display format>] [<numlines>]
<data offset> = an expression giving the offset from the start of
the file, where display starts.
<display format> = either C or D. Default is D. If D is specified
then data is displayed in hex and ascii format.
If C is specified then data is displayed as
disassembled code.
The default value is D.
<numlines> = a decimal number, indicating the number of lines
to show.
The default value is to keep on displaying until
the next control-y or '/' reply.
Examples:
DV $100 Displays data starting at address hex 100
DV 5+20-$15 c display lines at address 4, disasembled as code
\EXIT
----------------------------------------------------------------------
The EXIT command terminates AVATAR.
Syntax:
EXIT
\EXTRACT
----------------------------------------------------------------------
The EXTRACT commands extracts a portion of code into an ASCII file.
This file can be used as input to the ASSEMBLER.
Syntax:
EXTRACT <file name> <start> [<end>]
<file name> the name of a file to be created. The file may not
exist.
<start> The starting point from which extraction begins
<end> The last instruction to be extracted.
If omitted, AVATAR tries to extract to the end
of the procedure referred to in <start>.
Example:
EXTRACT file1 $1000 $2000
EXTRACT file2 my_proc my_proc+1000
EXTRACT foo fopen_nm
\FIND, SOM
----------------------------------------------------------------------
The FIND command will find all entries in the symbol dictionary
that have a name that matches or partially matches the provided
string. Entries in the symbol dictionary include all procedures,
global data items, intrinsics, etc. The search is limited to the
current module of the opened SOM file. The FINDALL command
searches through all modules.
Syntax:
FIND <string> <filter>
FIND <symbol> <filter>
<string> = any string of ASCII characters enclosed in double quotes.
<symbol> = any string of valid symbol characters.
<filter> = a symbol type to be filtered out. The default is
that all symbols are listed.
The possible values are:
UNSAT
LOCAL
EXTERNAL
UNIVERSAL
NULL
ABSOLUTE
DATA
CODE
PRI_PROG
SEC_PROG
ENTRY
STORAGE
STUB
MODULE
SYM_EXT
ARG_EXT
MILLICODE
PLABEL
OCT_DIS
MILLI_EXT
Examples:
FIND time find any entries that includes the string time in the name.
FIND $$divoI millicode
\FINDALL, SOM
----------------------------------------------------------------------
The FINDALL command will find all entries in the .a file that have a
name that matches or partially matches the provided string.
Entries in the symbol dictionary include all
procedures, global data items, intrinsics, etc. The search will
include all modules in the currently opened SOM file, unlike the
FIND command (which searches only the current module).
Syntax:
FINDALL <string> <filter>
<symbol> <filter>
<string> = any string of ASCII characters
<symbol> = any string of valid symbol characters.
<filter> = a symbol type to be filtered out. The default is
that all symbols are listed.
The possible values are:
UNSAT
LOCAL
EXTERNAL
UNIVERSAL
NULL
ABSOLUTE
DATA
CODE
PRI_PROG
SEC_PROG
ENTRY
STORAGE
STUB
MODULE
SYM_EXT
ARG_EXT
MILLICODE
PLABEL
OCT_DIS
MILLI_EXT
Examples:
FIND time find any entries that includes the string time in the name.
\FIXUP, SOM
----------------------------------------------------------------------
The FIXUP command displays the fixup records from an object file.
Currently only fixups generated by the ASSEMBLER are correctly
recognised.
Syntax:
FIXUP
\FORMAT, SOM
----------------------------------------------------------------------
The FORMAT command allows to display data relative to the start of the
SOM file in one of many different formats.
Syntax:
FORMAT <data offset> <format> <count>
<data offset> = an expression giving the offset from the start of
the file, where formatting starts.
<format> = the format specifier. It can be any off:
LST_HEADER
LST_BITS
LST_SYMBOL
SOM_HEADER
AUX_HEADER_ID
SPACE_REC
SUBSPACE_BITS
SUBSPACE_REC
COMPILER_REC
FIXUP_BITS
FIXUP_REC
INIT_REC
SYMBOL_DICT_BITS
ARG_DESCRIPTOR
SYMBOL_DICT_REC
SYMDICT_EXT_REC
SYMDICT_ARG_REC
UNWIND_DESCRIPT
UNWIND_ENTRY
<count> = an integer giving the number of elements to format.
Example:
FORMAT LST_HEADER LST_HEADER
Note that the first LST_HEADER is an expression, giving an offset in
the file to where tje LST HEADER starts, While the second one is
a format specifier.
\INIT, SOM
----------------------------------------------------------------------
The INIT command will display all the compiler init entries for the
current module of the opened SOM file.
Syntax:
INIT
\LOOK, SOM
----------------------------------------------------------------------
The LOOK command will display all the available information about a
given entry in the symbol dictionary. See the FIND command. For
example, this command can be used to find the argument types and order
for any procedure, anywhere.
Syntax:
LOOK <string>
<symbol>
<string> = any string of ASCII characters
<symbol> = any string of valid symbol characters.
Examples:
LOOK HPFOPEN display all information for the
intrinsic HPFOPEN.
\LST, SOM
----------------------------------------------------------------------
The LST command will display all the available modules in the
currently opened SOM file and allow you to select a module.
Syntax:
LST
\MC
----------------------------------------------------------------------
The MC command will modify data at a given code address.
Syntax:
MC <expression> <value>
<expression> = an arithmetic expression that represents an offset
to the start of the current module.
<value> = an expression representing the new data.
Examples:
MC my_proc+$100 `LDW -4(0,30),2`
MC my_proc + $200 `BL FOPEN,2`
Note that the assembler instruction is enclosed in back-quotes.
MC $1200 8004000
\MD
----------------------------------------------------------------------
The MD command will modify values from an initialized block
within the current module of the opened som file.
Syntax:
MD <expression> <value>
<expression> = an arithmetic expression that represents an offset
an initialised area in the current module.
<value> = an expression representing the new data.
Examples:
MD db_area+#100 $5078
\MV
----------------------------------------------------------------------
The MV command will modify values (data) within the current som file.
Syntax:
MV <expression> <value>
<expression> = an arithmetic expression that represents an offset
to the start of the current file.
<value> = an expression representing the new data.
Examples:
MV $100 $5078 change the data at address hex 100 to hex 5078
\NEXT
----------------------------------------------------------------------
The NEXT command repeats the last DV, DC or DD command starting from the
point where it left off.
Note that a MC, MV of MD command will reposition the pointer as well.
The NEXT command is optional, a mere <cr> will do.
Syntax:
NEXT
\OPEN
----------------------------------------------------------------------
OPEN filename [READ]
The OPEN command opens *ANY* file, but it is usually used
to open program files, .o files, and .a files.
If READ is specified, then the som file is opened for read only. The
MC, MV and MD commands are then disabled.
Examples:
OPEN myprog
OPEN myprog READ
\QUIT
----------------------------------------------------------------------
The QUIT command will terminate this program.
Syntax:
QUIT
\RADIX
----------------------------------------------------------------------
The RADIX command will change the default radix, which is the base
that all input is assumed to be.
Syntax:
RADIX <mnemonic>
<mnemonic> = DECIMAL
HEX
OCTAL
Examples:
RADIX HEX
RADIX DECIMAL
RADIX OCTAL
\SEARCH
----------------------------------------------------------------------
The SEARCH command will search the entire opened SOM file an look for
a given value. If the value is found, a line of data is displayed.
Syntax:
SEARCH <expression>
<string>
<expression > = an expression that result in an integer value to
be searched in the file.
<string> = a quoted string to be searched in the file.
Examples:
SEARCH $8861
SEARCH "A string"
SEARCH `LDIL $1000,0`
\SPACE, SOM
----------------------------------------------------------------------
The SPACE command will display the space and subspace information
about the current module of the opened SOM file.
Syntax:
SPACE
\SUBSPACE, SOM
----------------------------------------------------------------------
The SUBSPACE command will display the subspace information about the
current module of the opened SOM file.
Syntax:
SUBSPACE
\SYMFORMAT, SYMOS
----------------------------------------------------------------------
The SYMFORMAT command is used to format and display various
portions of a SYMOS file. Using this command requires an
expert-level knowledge of the HP-UX operating system.
Syntax:
SYMFORMAT < HEADER | GNTT | LNTT | SLT | VT >
where
HEADER is used to format and display header information.
GNTT not implemented
LNTT is used to format and display LNTT information.
SLT is used to format and display SLT information.
VT is used to format and display VT information.
\SYMOPEN
----------------------------------------------------------------------
The SYMOPEN command is used to open a SYMOS file for examination.
Using this command requires an expert-level knowledge of the
HP-UX operating system.
Syntax:
SYMOPEN <symos filename>
\SYN
----------------------------------------------------------------------
The SYN command sets up synonyms for the general registers and
the special registers. These synonyms will be shown in the
disassembled format of any instruction.
Syntax:
SYN SPLASH
SYSTEM
NONE
R
REG <general register number> <synonym>
CR <control register number> <synonym>
<general register number> is a number between 0 and 31 inclusive,
designating the general register for wich
a synonym is set up
<special register number> is a number between 0 and 31 inclusive,
designating the special register for wich
a synonym is set up
<synonym> is any name, to be used as a synonym.
NONE resets all synonyms.
R precedes every register number by the letter 'r' in
generated assembly language.
SYSTEM sets synonyms to reflect the normal system usage for
registers.
SPLASH sets synonyms to reflect the normal SPLash! usage for
synonyms.
\UNCALLED
----------------------------------------------------------------------
The UNCALLED command lists all code entry points that are called less than
a specified number of times from within the same SOM.
Syntax:
UNCALLED [<expression>]
<expression> = the maximum number of times that an entry point
may be called to be listed.
Default is 0.
Example:
UNCALLED 3
\UNWIND, SOM
----------------------------------------------------------------------
The UNWIND commands produces a formatted listing of the unwind descriptor
entries from the current SOM.
Syntax:
UNWIND
\
----------------------------------------------------------------------
Updated: 1997-08-04
[ About us | Products | Papers & Books ]
[ Links | Software | Contact Us ]
[ Home ]
|
|