xref: /csrg-svn/old/adb/common_source/adb.1 (revision 43080)
1.\" Copyright (c) 1980, 1990 The Regents of the University of California.
2.\" All rights reserved.
3.\"
4.\" %sccs.include.redist.man%
5.\"
6.\"     @(#)adb.1	5.7 (Berkeley) 06/11/90
7.\"
8.Dd
9.Dt ADB 1
10.Os BSD 4
11.Sh NAME
12.Nm adb
13.Nd debugger
14.Sh SYNOPSIS
15.Nm adb
16.Op Fl w
17.Op Fl k
18.Oo
19.Op Fl I Ar dir
20.Oo
21.Op Ar objfil Op Ar corfil
22.Sh DESCRIPTION
23.Nm Adb
24is a general purpose debugging program.
25It may be used to examine files and to provide
26a controlled environment for the execution of UNIX programs.
27.Pp
28.Ar Objfil
29is normally an executable program file, preferably
30containing a symbol table; if not then the symbolic features of
31.Nm adb
32cannot be used although the file can still be examined.
33The default for
34.Ar objfil
35is
36.Pa a.out .
37.Ar Corfil
38is assumed to be a core image file produced after executing
39.Ar objfil ;
40the default for
41.Ar corfil
42is
43.Pa core
44.Pp
45Requests to
46.Nm adb
47are read from the standard input and responses are to the standard output.
48If the
49.Fl w
50flag is present then both
51.Ar objfil
52and
53.Ar corfil
54are created if necessary and opened for reading and writing
55so that files can be modified using
56.Nm adb .
57.Pp
58The
59.Fl k
60option makes
61.Nm adb
62do UNIX kernel memory
63mapping; it should be used when
64.Pa core
65is a UNIX crash dump
66or
67.Pa /dev/mem .
68.Pp
69The
70.Fl I
71option specifies a directory where files to be read
72with
73.Li $<
74or
75.Li $<<
76(see below) will be sought; the default is
77.Pa /usr/lib/adb .
78.Pp
79.Nm Adb
80ignores
81.Li QUIT ;
82.Li INTERRUPT
83causes return to the next
84.Nm adb
85command.
86.Pp
87In general requests to
88.Nm adb
89are of the form
90.Pp
91.ti +\n(Dsu
92.Op Ad address
93.Op \&, Va count
94.Op Ic command
95.Op \&;
96.Pp
97If
98.Ad address
99is present then
100.Ad dot
101is set to
102.Ad address .
103Initially
104.Ad dot
105is set to 0.  For most commands
106.Va count
107specifies how many times the command will be executed.  The default
108.Va count
109is 1.
110.Ad Address
111and
112.Va count
113are expressions.
114.Pp
115The interpretation of an address depends on the context it is used in.
116If a subprocess is being debugged then addresses are interpreted
117in the usual way in the address space of the subprocess.
118If the operating system is being debugged either post-mortem or using
119the special file
120.Pa /dev/mem
121to interactively examine and/or modify memory, the maps are set to map
122the kernel virtual addresses which start at
123.Li \&0x80000000
124(on the VAX); see ADDRESSES below.
125.Sh EXPRESSIONS
126.Tw Li
127.Tp Sy \&\.
128The value of
129.Ad dot .
130.Tp  Sy \&\+
131The value of
132.Ad dot
133incremented by the current increment.
134.Tp Sy \&^
135The value of
136.Ad dot
137decremented by the current increment.
138.Tp Sy \&"
139The last
140.Ad address
141typed.
142.Tp Va integer
143A number.  The prefixes
144.Li \&0o
145and
146.Li \&0O
147(\*(lqzero oh\*(rq)
148force interpretation
149in octal radix; the prefixes
150.Li 0t
151and
152.Li 0T
153force interpretation in
154decimal radix; the prefixes
155.Li 0x
156and
157.Li 0X
158force interpretation in
159hexadecimal radix.  Thus
160.Li 0o20
161=
162.Li 0t16
163=
164.Li 0x10
165= sixteen.
166If no prefix appears, then the
167.Em default radix
168is used; see the
169.Li $d
170command.  The default radix is initially hexadecimal.
171The hexadecimal digits are
172.Li 0123456789abcdefABCDEF
173with the obvious
174values.  Note that a hexadecimal number whose most significant
175digit would otherwise be an alphabetic character must have a
176.Li 0x
177(or
178.Li 0X )
179prefix (or a leading zero if the default radix is hexadecimal).
180.Tp Va integer.fraction
181A 32 bit floating point number.
182.Tp Li \'cccc\'
183The ASCII value of up to 4 characters.
184.Li \e
185may be used to escape a
186.Li \' .
187.Tp Va < name
188The value of
189.Va name ,
190which is either a variable name or a register name.
191.Nm Adb
192maintains a number of variables (see
193VARIABLES below)
194named by single letters or digits.
195If
196.Va name
197is a register name then the value of the register is obtained from
198the system header in
199.Ar corfil .
200The register names are those printed by the
201.Li $r
202command.
203.Tp Va symbol
204A
205.Va symbol
206is a sequence of upper or lower case letters, underscores or
207digits, not starting with a digit.  The backslash character
208.Li \e
209may be used to escape other characters.  The value of the
210.Va symbol
211is taken from the symbol table in
212.Ar objfil .
213An initial
214.Li \_
215will be prepended to
216.Va symbol
217if needed.
218.Tp Va _symbol
219In C, the `true name' of an external symbol begins with
220.Li \_ .
221It may be necessary to utter this name to distinguish it
222from internal or hidden variables of a program.
223.Tp Va routine.name
224The address of the variable
225.Va name
226in the specified C routine.  Both
227.Va routine
228and
229.Va name
230are
231.Va symbols .
232If
233.Va routine
234is omitted, the currently active frame is used.
235(This form is currently broken; local variables can be examined
236only with
237.Xr dbx 1 ) .
238If
239.Va name
240is omitted the value is the address
241of the most recently activated C stack frame
242corresponding to
243.Va routine
244(this much works).
245.Tp (exp)
246.\" .Tp Cx \&(\&
247.\" .Va exp
248.\" .Cx \&)\&
249The value of the expression
250.Va exp .
251.Tp
252.Pp
253.Ss Monadic Operators
254.Pp
255.Dp Cx Li \&*
256.Va exp
257.Cx
258The contents of the location addressed by
259.Va exp
260in
261.Ar corfil .
262.Dp Cx Li \&@
263.Va exp
264.Cx
265The contents of the location addressed by
266.Va exp
267in
268.Ar objfil .
269.Dp Cx Li \&\-
270.Va exp
271.Cx
272Integer negation.
273.Dp Cx Li \&~
274.Va exp
275.Cx
276Bitwise complement.
277.Dp Cx Li \&#
278.Va exp
279.Cx
280Logical negation.
281.Dp
282.Ss Dyadic operators
283are left associative and are less binding than monadic operators.
284.Dp Cx Va e1
285.Li \&\+
286.Va e2
287.Cx
288Integer addition.
289.Dp Cx Va e1
290.Li \&\-
291.Va e2
292.Cx
293Integer subtraction.
294.Dp Cx Va e1
295.Li \&*
296.Va e2
297.Cx
298Integer multiplication.
299.Dp Cx Va e1
300.Li \&%
301.Va e2
302.Cx
303Integer division.
304.Dp Cx Va e1
305.Li &
306.Va e2
307.Cx
308Bitwise conjunction.
309.Dp Cx Va e1
310.Li \&|
311.Va e2
312.Cx
313Bitwise disjunction.
314.Dp Cx Va e1
315.Li #
316.Va e2
317.Cx
318.Va E1
319rounded up to the next multiple of
320.Va e2 .
321.Dp
322.Sh COMMANDS
323Most commands consist of a verb followed by a modifier or list of modifiers.
324The following verbs are available.
325(The commands
326.Ic ?
327and
328.Li /
329may be followed by
330.Li * ;
331see the
332ADDRESSES section
333for further details.)
334.Tw XXX
335.Tp Cx Ic ?
336.Va f
337.Cx
338Locations starting at
339.Ad address
340in
341.Ar objfil
342are printed according to the format
343.Va f .
344.Ad dot
345is incremented by the sum of the increments for each format letter (q.v.).
346.Tp Cx Ic /
347.Va f
348.Cx
349Locations starting at
350.Ad address
351in
352.Ar corfil
353are printed according to the format
354.Va f
355and
356.Ad dot
357is incremented as for
358.Ic ? .
359.Tp Cx Ic =
360.Va f
361.Cx
362The value of
363.Ad address
364itself is printed in the styles indicated by the format
365.Va f .
366(For
367.Va i
368format zero values are assumed
369for the parts of the instruction that reference
370subsequent words.)
371.Tp
372.Pp
373A
374.Va format
375consists of one or more characters that specify a style of printing.
376Each format character may be preceded by a decimal integer
377that is a repeat count for the format character.
378While stepping through a format
379.Ad dot
380is incremented by the amount given for each format letter.
381If no format is given then the last format is used.
382The format characters available are as follows.
383Note that a backslash
384.Cx (
385.Li \e
386.Cx )
387.Cx
388must be used
389to quote the three numeric formats.
390.Dw \&M_____\&M
391.Dp Cx Ic 1
392.Cx \&\ \ \&
393.Va 1
394.Cx
395Print 1 byte in the current radix
396(which may be either signed or unsigned; see the
397.Li $d
398command).
399.Dp Cx Ic 2
400.Cx \&\ \ \&
401.Va 2
402.Cx
403Print 2 bytes in the current radix.
404.Dp Cx Ic 4
405.Cx \&\ \ \&
406.Va 4
407.Cx
408Print 4 bytes in the current radix.
409.Dp Cx Ic v
410.Cx \&\ \ \&
411.Va 2
412.Cx
413Print 2 bytes in the signed variant of the current radix.
414.Dp Cx Ic V
415.Cx \&\ \ \&
416.Va 4
417.Cx
418Print 4 bytes in the signed variant of the current radix.
419.Dp Cx Ic o
420.Cx \&\ \ \&
421.Va 2
422.Cx
423Print 2 bytes in unsigned octal.  All octal numbers output by
424.Nm adb
425are preceded by 0.
426.Dp Cx Ic O
427.Cx \&\ \ \&
428.Va 4
429.Cx
430Print 4 bytes in unsigned octal.
431.Dp Cx Ic q
432.Cx \&\ \ \&
433.Va 2
434.Cx
435Print 2 bytes in signed octal.
436.Dp Cx Ic Q
437.Cx \&\ \ \&
438.Va 4
439.Cx
440Print 4 bytes in signed octal.
441.Dp Cx Ic u
442.Cx \&\ \ \&
443.Va 2
444.Cx
445Print 2 bytes in unsigned decimal.
446.Dp Cx Ic U
447.Cx \&\ \ \&
448.Va 4
449.Cx
450Print 4 bytes in long unsigned decimal.
451.Dp Cx Ic d
452.Cx \&\ \ \&
453.Va 2
454.Cx
455Print 2 bytes in signed decimal.
456.Dp Cx Ic D
457.Cx \&\ \ \&
458.Va 4
459.Cx
460Print 4 bytes in long signed decimal.
461.Dp Cx Ic x
462.Cx \&\ \ \&
463.Va 2
464.Cx
465Print 2 bytes in unsigned hexadecimal.
466.Dp Cx Ic X
467.Cx \&\ \ \&
468.Va 4
469.Cx
470Print 4 bytes in unsigned hexadecimal.
471.Dp Cx Ic z
472.Cx \&\ \ \&
473.Va 2
474.Cx
475Print 2 bytes in signed hexadecimal.
476.Dp Cx Ic Z
477.Cx \&\ \ \&
478.Va 4
479.Cx
480Print 4 bytes in signed hexadecimal.
481.Dp Cx Ic f
482.Cx \&\ \ \&
483.Va 4
484.Cx
485Print 4 bytes as a floating point number.
486.Dp Cx Ic F
487.Cx \&\ \ \&
488.Va 8
489.Cx
490Print 8 bytes as a double floating point number.
491.Dp Cx Ic b
492.Cx \&\ \ \&
493.Va 1
494.Cx
495Print 1 byte in unsigned octal.
496.Dp Cx Ic c
497.Cx \&\ \ \&
498.Va 1
499.Cx
500Print 1 byte as a character.
501.Dp Cx Ic C
502.Cx \&\ \ \&
503.Va 1
504.Cx
505Print 1 byte as a character, using
506the standard escape convention where control characters
507are printed as ^X and the delete character is printed as ^?.
508.Dp Cx Ic s
509.Cx \&\ \ \&
510.Va n
511.Cx
512Print the addressed characters until a zero character is reached.
513.Dp Cx Ic S
514.Cx \&\ \ \&
515.Va n
516.Cx
517Print a string using the ^
518.Ar X
519escape convention (see
520.Ar C
521above).
522.Ar n
523is the length of the string including its zero terminator.
524.Dp Cx Ic Y
525.Cx \&\ \ \&
526.Va 4
527.Cx
528Print 4 bytes in date format (see
529.Xr ctime 3 ) .
530.Dp Cx Ic i
531.Cx \&\ \ \&
532.Va n
533.Cx
534Print as machine instructions.
535.Ar n
536is the number of bytes occupied by the instruction.
537This style of printing causes the numeric variables 1, 2, ... to be set
538according to the offset parts of the arguments, if any, of the instruction
539(up to 6 on the VAX).
540.Dp Cx Ic a
541.Cx \&\ \ \&
542.Va 0
543.Cx
544Print the value of
545.Ad dot
546in symbolic form.
547Symbols are checked to ensure that they have an appropriate
548type as indicated below.
549.Dw AAAA
550.Dp Va /
551local or global data symbol
552.Dp Va \&?
553.Cx
554local or global text symbol
555.Dp Va \&=
556.Cx
557local or global absolute symbol
558.Dp
559.Dp Cx Ic p
560.Cx \&\ \ \&
561.Va 4
562.Cx
563Print the addressed value in symbolic form using
564the same rules for symbol lookup as
565.Ic a .
566.Dp Cx Ic t
567.Cx \&\ \ \&
568.Va 0
569.Cx
570When preceded by an integer tabs to the next appropriate tab stop.
571For example,
572.Li 8t
573moves to the next 8-space tab stop.
574.Dp Cx Ic r
575.Cx \&\ \ \&
576.Va 0
577.Cx
578Print a space.
579.Dp Cx Ic n
580.Cx \&\ \ \&
581.Va 0
582.Cx
583Print a newline.
584.Dp Ic \*(Rq...\*(Lq
585.Va 0
586\&\ \ \&
587Print the enclosed string.
588.Dp ^
589.Ad Dot
590is decremented by the current increment.  Nothing is printed.
591.Dp +
592.Ad Dot
593is incremented by 1.  Nothing is printed.
594.Dp \-
595.Ad Dot
596is decremented by 1.  Nothing is printed.
597.Dp newline
598Repeat the previous command with a
599.Va count
600of 1.
601.Dp
602.Pp
603.Tw $modifier
604.Tp Cx Op Ic ?/
605.Ic l\ \&
606.Va value mask
607.Cx
608Words starting at
609.Ad dot
610are masked with
611.Va mask
612and
613compared with
614.Va value
615until a match is found.
616If
617.Cm L
618is used then the match is for 4 bytes at a time instead of 2.
619If no match is found then
620.Ad dot
621is unchanged; otherwise
622.Ad dot
623is set to the matched location.
624If
625.Va mask
626is omitted then all bits are compared.
627.Tp Cx Op Ic ?/
628.Ic w\ \&
629.Va value ...
630.Cx
631Write the 2-byte
632.Va value
633into the addressed location.  If the command is
634.Ic W ,
635write 4 bytes.
636Odd addresses
637.Em are
638allowed
639when writing to the subprocess address space.
640.Tp Cx Op Ic ?/
641.Ic m\ \&
642.Ad b1 e1 f1
643.Op Ic ?/
644.Cx
645New values for
646.Ad  ( b1 , e1 , f1 )
647are recorded.  If less than three expressions are given then
648the remaining map parameters are left unchanged.
649If the
650.Ic ?
651or
652.Ic /
653is followed by
654.Li *
655then
656the second segment (
657.Ad  ( b2 , e2 , f2 )
658of the mapping is changed.
659If the list is terminated by
660.Ic ?
661or
662.Ic /
663then the file
664.Ar ( objfil
665or
666.Ar corfil
667respectively) is used for subsequent requests.
668For example,
669.Li /m?
670will cause
671.Ic /
672to refer to
673.Ar objfil .
674.Tp Cx Ic >
675.Va name
676.Cx
677.Ad Dot
678is assigned to the variable or register named.
679.Tp Ic \&!
680A shell
681.Cx \&(
682.Pa /bin/sh )
683.Cx
684is called to read the rest of the line following
685.Ic \&! .
686.Tp Cx Cm $
687.Va modifier
688.Cx
689Miscellaneous commands.  The available
690.Va modifiers
691are:
692.Tw fil
693.Tp Cx Cm <
694.Va file
695.Cx
696Read commands from
697.Va file
698If this command is executed in a file, further commands
699in the file are not seen.
700If
701.Va file
702is omitted, the current input stream is terminated.  If a
703.Va count
704is given, and is zero, the command will be ignored.
705The value of the count will be placed in variable
706.Va 9
707before the first command in
708.Va file
709is executed.
710.Tp Cx Cm <<
711.Va file
712.Cx
713Similar to
714.Cm <
715except it can be used in a file of commands without
716causing the file to be closed.  Variable
717.Va 9
718is saved during the execution of this command, and restored when it completes.
719There is a (small) finite limit to the number of
720.Cm <<
721files that can be open at once.
722.Tp Cx Cm >
723.Va file
724.Cx
725Append output to the file
726.Va file ,
727which is created if it does not exist.  If
728.Va file
729is omitted, output is returned to the terminal.
730.Tp Cx Cm ?
731.Va file
732.Cx
733Print process id, the signal which caused stoppage or termination,
734as well as the registers as
735.Ic $r .
736This is the default if
737.Va modifier
738is omitted.
739.Tp Cm r
740Print the general registers and the instruction addressed by
741.Nm pc .
742.Ad Dot
743is set to
744.Nm pc .
745.Tp Cm b
746Print all breakpoints and their associated counts and commands.
747.Tp Cm c
748C stack backtrace.  If
749.Ad address
750is given then it is taken as the address of the current frame
751instead of the contents of the frame\-pointer register.  If
752.Cm C
753is used then the names and (32 bit) values of all automatic
754and static variables are printed for each active function
755(this is partially broken; the names are not now available).  If
756.Va count
757is given then only the first
758.Va count
759frames are printed.
760.Tp Cm d
761Set the default radix to
762.Ad address
763and report the new value.  If no
764.Ad address
765is given, the default radix is not changed.
766The new radix must be between -16 (decimal) and 16 (decimal)
767and must not be 0, 1, or -1.
768A negative radix implies that numbers printed in that radix
769will be treated as signed; otherwise they are treated as unsigned.
770Note that
771.Ad address
772is interpreted in the (old) current radix.
773Thus \*(lq10$d\*(rq simply changes the default radix to unsigned.
774To make signed decimal the default radix, use \*(lq-0t10$d\*(rq.
775.Tp Cm e
776The names and values of external variables are printed.
777.Tp Cm w
778Set the page width for output to
779.Ad address
780(default 80).
781.Tp Cm s
782Set the limit for symbol matches to
783.Ad address
784(default 1024).
785.Tp Cm q
786Exit from
787.Nm adb .
788.Tp Cm v
789Print all non zero variables in octal.
790.Tp Cm m
791Print the address map.
792.Tp Cm p
793.Em ( Kernel debugging )
794Change the current kernel memory mapping to map the designated
795.Sy user structure
796to the address given by the symbol
797.Sy _u .
798The
799.Ad address
800argument is the address of the user's user page table entries.
801.Tp
802.Tp Cx Cm :
803.Va modifier
804.Cx
805Manage a subprocess.  Available modifiers are:
806.Tw Ds
807.Tp Cx Cm b
808.Va c
809.Cx
810Set breakpoint at
811.Ad address .
812The breakpoint is executed
813.Va count\-1
814times before causing a stop,
815after which it stops unconditionally.
816Each time the breakpoint is encountered the command
817.Va c
818is executed.  If this command is omitted or sets
819.Ad dot
820to zero, the breakpoint causes a stop immediately,
821regardless of any remaining count.
822.Tp Cm d
823Delete breakpoint at
824.Ad address .
825.Tp Cm D
826Delete all breakpoints.
827.Tp Cm r
828Run
829.Ar objfil
830as a subprocess.  If
831.Ad address
832is given explicitly then the program is entered at this point; otherwise
833the program is entered at its standard entry point.
834.Va count
835specifies how many breakpoints are to be ignored before stopping.
836Arguments to the subprocess may be supplied on the same line as the command.
837An argument starting with < or > causes the standard
838input or output to be established for the command.
839.Tp Cx Cm c
840.Va s
841.Cx
842The subprocess is continued with signal
843.Va s
844see
845.Xr sigvec 2 .
846If
847.Ad address
848is given then the subprocess is continued at this address.
849If no signal is specified then the signal
850that caused the subprocess to stop is sent.
851Breakpoint skipping is the same as for
852.Cm r .
853.Tp Cx Cm s
854.Va s
855.Cx
856As for
857.Cm c
858except that the subprocess is single stepped
859.Va count
860times.  If there is no current subprocess then
861.Ar objfil
862is run as a subprocess as for
863.Cm r .
864In this case no signal can be sent; the remainder of the line
865is treated as arguments to the subprocess.
866.Tp Cm k
867The current subprocess, if any, is terminated.
868.Tp
869.Tp
870.Sh VARIABLES
871.Nm Adb
872provides a number of variables.
873Named variables are set initially by
874.Nm adb
875but are not used subsequently.
876Numbered variables are reserved for communication as follows.
877.Dw Ds
878.Di L
879.Dp \&0
880The last value printed.
881.Dp \&1
882The last offset part of an instruction source.
883This continues up through at most 6 on the VAX.
884For a three-operand instruction, variable 2 is the second source offset
885and variable 3 the destination offset part.
886.Dp \&9
887The count on the last $< or $<< command.
888.Dp
889On entry the following are set from the system header in the
890.Ar corfil .
891If
892.Ar corfil
893does not appear to be a
894.Pa core
895file then these values are set from
896.Ar objfil .
897.Dw Ds
898.Di L
899.Dp b
900The base address of the data segment.
901.Dp d
902The data segment size.
903.Dp e
904The entry point.
905.Dp m
906The `magic' number (0407, 0410 or 0413).
907.Dp s
908The stack segment size.
909.Dp t
910The text segment size.
911.Sh ADDRESSES
912The address in a file associated with
913a written address is determined by a mapping associated with that file.
914Each mapping is represented by two triples
915.Ad ( b1 , e1 , f1 )
916and
917.Ad ( b2 , e2 , f2 )
918and the
919.Ad file
920.Ad address
921corresponding to a written
922.Ad address
923is calculated as follows.
924.Pp
925.Ds I
926.Cx Ad b1
927.Sy \&\*(<=
928.Ad address
929.Sy <
930.Ad e1
931.Sy \ \&\(->\ \&
932.Ad file address
933.Sy =
934.Ad address
935.Sy +
936.Ad f1
937.Sy \-
938.Ad b1 ,
939.Cx \ \&
940.Cx otherwise,
941.Cx
942.De
943.Pp
944.Ds I
945.Cx Ad b2
946.Sy \&\*(<=
947.Ad address
948.Sy <
949.Ad e2
950.Sy \ \&\(->\ \&
951.Ad file address
952.Sy =
953.Ad address
954.Sy +
955.Ad f2
956.Sy \-
957.Ad b2 ,
958.Cx
959.De
960.Pp
961otherwise, the requested
962.Ar address
963is not legal.  In some cases (e.g. for programs with separated I and D
964space) the two segments for a file may overlap.  If a
965.Ic ?
966or
967.Ic /
968is followed by an
969.Ic *
970then only the second triple is used.
971.Pp
972The initial setting of both mappings is suitable for normal
973.Pa a.out
974and
975.Pa core
976files.  If either file is not of the kind expected then, for that file,
977.Ad b1
978is set to
979.Li 0 ,
980.Ad e1
981is set to the maximum file size and
982.Ad f1
983is set to 0; in this way the whole
984file can be examined with no address translation.
985.Pp
986.Sh FILES
987.Dw a.out
988.Dp Pa a.out
989.Dp Pa core
990.Dp
991.Sh SEE ALSO
992.Xr cc 1 ,
993.Xr dbx 1 ,
994.Xr ptrace 2 ,
995.Xr a.out 5 ,
996.Xr core 5
997.Sh HISTORY
998.Nm Adb
999was first released with Version 7 AT&T UNIX.  The version
1000of
1001.Nm adb
1002this man page describes
1003is descended from the orignial.
1004.Sh DIAGNOSTICS
1005.Li `adb'
1006when there is no current command or format.
1007Comments about inaccessible files, syntax errors,
1008abnormal termination of commands, etc.
1009Exit status is 0, unless last command failed or returned nonzero status.
1010.Sh BUGS
1011Since no shell is invoked to interpret the arguments of the
1012.Ic :r
1013command, the customary wild-card and variable expansions cannot occur.
1014