Annotation of researchv10dc/man/adm/man1/adb.1, revision 1.1

1.1     ! root        1: .TH ADB 1
        !             2: .CT 1 debug_tune
        !             3: .ds TW \v'.25m'\s+2~\s-2\v'-.25m'
        !             4: .ds ST \v'.25m'*\v'-.25m'
        !             5: .ds IM \v'.1m'=\v'-.1m'\s-2\h'-.1m'>\h'.1m'\s+2
        !             6: .ds LE \(<=
        !             7: .ds LT \s-2<\s+2
        !             8: .ds GT \s-2>\s+2
        !             9: .SH NAME
        !            10: adb \- debugger
        !            11: .SH SYNOPSIS
        !            12: .B adb
        !            13: [
        !            14: .I option ...
        !            15: ]
        !            16: [
        !            17: .I objfil
        !            18: [
        !            19: .I corfil
        !            20: ]
        !            21: ]
        !            22: .SH DESCRIPTION
        !            23: .I Adb
        !            24: is a general purpose debugging program.
        !            25: It may be used to examine files and to provide
        !            26: a controlled environment for the execution
        !            27: of UNIX programs.
        !            28: .PP
        !            29: .I Objfil
        !            30: is normally an executable program file, preferably
        !            31: containing a symbol table;
        !            32: if not then the
        !            33: symbolic features of
        !            34: .I  adb
        !            35: cannot be used although the file can still
        !            36: be examined.
        !            37: The default for
        !            38: .I objfil
        !            39: is
        !            40: .LR a.out .
        !            41: .I Corfil
        !            42: is assumed to be a core image file produced after
        !            43: executing
        !            44: .IR objfil ;
        !            45: the default for
        !            46: .I corfil
        !            47: is
        !            48: .LR core .
        !            49: .PP
        !            50: Requests to
        !            51: .I  adb
        !            52: are read from the standard input and
        !            53: responses are to the standard output.
        !            54: Quit signals are ignored; interrupts
        !            55: cause return to the next
        !            56: .I adb
        !            57: command.
        !            58: The options are
        !            59: .TP
        !            60: .B -w
        !            61: Create
        !            62: .I objfil
        !            63: and
        !            64: .I corfil
        !            65: if they don't exist; open them for writing
        !            66: as well as reading.
        !            67: .TP
        !            68: .BI -I path
        !            69: Directory in which to look for relative pathnames in
        !            70: .B $<
        !            71: and
        !            72: .B $<<
        !            73: commands.
        !            74: .PP
        !            75: In general requests to
        !            76: .I  adb
        !            77: have the following form.
        !            78: Multiple requests on one line must be separated by
        !            79: .LR ; .
        !            80: .IP
        !            81: .RI [ address ]
        !            82: .RB [ ,
        !            83: .IR count ]
        !            84: .RI [ command ]
        !            85: .PP
        !            86: If
        !            87: .I address
        !            88: is present then the current position, called `dot',
        !            89: is set to
        !            90: .IR address .
        !            91: Initially dot
        !            92: is set to 0.
        !            93: In general commands are repeated
        !            94: .I count
        !            95: times.
        !            96: Dot advances between repetitions.
        !            97: The default
        !            98: .I count
        !            99: is 1.
        !           100: .I Address
        !           101: and
        !           102: .I count
        !           103: are expressions.
        !           104: .PP
        !           105: Some formats,
        !           106: data sizes,
        !           107: and command details have
        !           108: different behavior
        !           109: on different systems.
        !           110: See the
        !           111: .SM "MACHINE DEPENDENCIES"
        !           112: attachment for details.
        !           113: .SS Expressions
        !           114: Expressions are computed with sufficient precision
        !           115: to address the largest possible file;
        !           116: generally this means a long integer.
        !           117: On the VAX,
        !           118: expressions are 32 bits;
        !           119: on the Cray,
        !           120: 64 bits.
        !           121: .TP 7.2n
        !           122: .B .
        !           123: The value of dot.
        !           124: .TP 7.2n
        !           125: .B +
        !           126: The value of dot
        !           127: incremented by the current increment.
        !           128: .TP 7.2n
        !           129: .B ^
        !           130: The value of dot
        !           131: decremented by the current increment.
        !           132: .TP 7.2n
        !           133: .B \&"
        !           134: The last
        !           135: .I address
        !           136: typed.
        !           137: .TP 7.2n
        !           138: .I integer
        !           139: A number
        !           140: in the
        !           141: .IR "default radix" ;
        !           142: see the
        !           143: .B $d
        !           144: command.
        !           145: Regardless of the default,
        !           146: the prefixes
        !           147: .L 0o
        !           148: and
        !           149: .L 0O
        !           150: (zero oh) force interpretation
        !           151: in octal radix; the prefixes
        !           152: .L 0t
        !           153: and
        !           154: .L 0T
        !           155: force interpretation in
        !           156: decimal radix; the prefixes
        !           157: .LR 0x ,
        !           158: .LR 0X ,
        !           159: and
        !           160: .L #
        !           161: force interpretation in
        !           162: hexadecimal radix.
        !           163: Thus
        !           164: .LR 0o20 ,
        !           165: .LR 0t16 ,
        !           166: and
        !           167: .L #10 
        !           168: all represent sixteen.
        !           169: .TP 7.2n
        !           170: .IB integer . fraction
        !           171: A floating point number.
        !           172: .TP 7.2n
        !           173: .BI \' cccc\| \'
        !           174: The
        !           175: .SM ASCII 
        !           176: value of one or more characters.
        !           177: .L \e
        !           178: may be used to escape a
        !           179: .LR \' .
        !           180: .TP 7.2n
        !           181: .BI < name
        !           182: The value of
        !           183: .IR name ,
        !           184: which is either a variable name or a register name.
        !           185: .I Adb
        !           186: maintains a number of variables
        !           187: named by single letters or digits.
        !           188: The register names are
        !           189: those printed by the
        !           190: .B $r
        !           191: command.
        !           192: .TP 7.2n
        !           193: .I symbol
        !           194: A
        !           195: .I symbol
        !           196: is a sequence
        !           197: of upper or lower case letters, underscores or
        !           198: digits, not starting with a digit.
        !           199: .L \e
        !           200: may be used to escape other characters.
        !           201: The value of the
        !           202: .I symbol
        !           203: is taken from the symbol table
        !           204: in
        !           205: .IR objfil .
        !           206: .TP 7.2n
        !           207: .IB routine . name
        !           208: The address of the variable
        !           209: .I name
        !           210: in the specified
        !           211: C routine.
        !           212: Both
        !           213: .I routine
        !           214: and
        !           215: .I name
        !           216: are
        !           217: .IR symbols .
        !           218: If
        !           219: .I name
        !           220: is omitted the value is the address of the
        !           221: most recently activated C stack frame
        !           222: corresponding to
        !           223: .IR routine ;
        !           224: if
        !           225: .I routine
        !           226: is omitted,
        !           227: the active procedure
        !           228: is assumed.
        !           229: .TP 7.2n
        !           230: .BI ( exp )
        !           231: The value of the expression
        !           232: .IB exp .
        !           233: .LP
        !           234: .I  Monadic operators
        !           235: .TP 7.2n
        !           236: .BI * exp
        !           237: The contents of the location addressed
        !           238: by
        !           239: .I exp
        !           240: in
        !           241: .IR corfil .
        !           242: .TP 7.2n
        !           243: .BI @ exp
        !           244: The contents of the location addressed by
        !           245: .I exp
        !           246: in
        !           247: .IR objfil .
        !           248: .TP 7.2n
        !           249: .BI - exp
        !           250: Integer negation.
        !           251: .TP 7.2n
        !           252: .BI ~ exp
        !           253: Bitwise complement.
        !           254: .TP 7.2n
        !           255: .BI % exp
        !           256: If
        !           257: .I exp
        !           258: is used as an address,
        !           259: it is in register space;
        !           260: see `Addresses'.
        !           261: .LP
        !           262: .I "Dyadic\ operators"
        !           263: are left associative
        !           264: and are less binding than monadic operators.
        !           265: .TP 7.2n
        !           266: .IB e1 + e2
        !           267: Integer addition.
        !           268: .TP 7.2n
        !           269: .IB e1 - e2
        !           270: Integer subtraction.
        !           271: .TP 7.2n
        !           272: .IB e1 * e2
        !           273: Integer multiplication.
        !           274: .TP 7.2n
        !           275: .IB e1 % e2
        !           276: Integer division.
        !           277: .TP 7.2n
        !           278: .IB e1 & e2
        !           279: Bitwise conjunction.
        !           280: .TP 7.2n
        !           281: .IB e1 | e2
        !           282: Bitwise disjunction.
        !           283: .TP 7.2n
        !           284: .IB e1 # e2
        !           285: .I E1
        !           286: rounded up to the next multiple of
        !           287: .IR e2 .
        !           288: .DT
        !           289: .SS Commands
        !           290: Most commands consist of a verb followed by a modifier or list
        !           291: of modifiers.
        !           292: The following verbs are available.
        !           293: (The commands
        !           294: .L ?
        !           295: and
        !           296: .L /
        !           297: may be followed by 
        !           298: .LR * ;
        !           299: see `Addresses'
        !           300: for further details.)
        !           301: .TP .5i
        !           302: .BI ? f
        !           303: Locations starting at
        !           304: .I address
        !           305: in
        !           306: .I  objfil
        !           307: are printed according to the format
        !           308: .IR f .
        !           309: .TP
        !           310: .BI / f
        !           311: Locations starting at
        !           312: .I address
        !           313: in
        !           314: .I  corfil
        !           315: are printed according to the format
        !           316: .I f.
        !           317: .TP
        !           318: .BI  = f
        !           319: The value of
        !           320: .I address
        !           321: itself is printed in the
        !           322: styles indicated by the format
        !           323: .IR f .
        !           324: (For
        !           325: .B i 
        !           326: format 
        !           327: .L ?
        !           328: is printed for the parts of the instruction that reference
        !           329: subsequent words.)
        !           330: .PP
        !           331: A
        !           332: .I format
        !           333: consists of one or more characters that specify a style
        !           334: of printing.
        !           335: Each format character may be preceded by a decimal integer
        !           336: that is a repeat count for the format character.
        !           337: If no format is given then the last format is used.
        !           338: .PP
        !           339: Most format letters fetch some data,
        !           340: print it,
        !           341: and advance (a local copy of) dot
        !           342: by the number of bytes fetched.
        !           343: The total number of bytes in a format becomes the
        !           344: .I current increment.
        !           345: `Long integers' are full words,
        !           346: the size of an expression item:
        !           347: e.g.\&
        !           348: 4 bytes on the VAX,
        !           349: 8 bytes on the Cray.
        !           350: `Short integers'
        !           351: are some useful shorter size:
        !           352: 2 byte short integers on the VAX,
        !           353: 2 byte parcels on the Cray.
        !           354: .ta 2.5n .5i
        !           355: .RS
        !           356: .TP
        !           357: .PD 0
        !           358: .B r
        !           359: Print short integer in the current default radix.
        !           360: .TP
        !           361: .PD 0
        !           362: .B R
        !           363: Print long integer in the current default radix.
        !           364: .TP
        !           365: .PD 0
        !           366: .B o
        !           367: Print short integer in octal.
        !           368: .TP
        !           369: .B O
        !           370: Print long integer in octal.
        !           371: .TP
        !           372: .B q
        !           373: Print short in signed octal.
        !           374: .TP
        !           375: .B Q
        !           376: Print long in signed octal.
        !           377: .TP
        !           378: .B d
        !           379: Print short in decimal.
        !           380: .TP
        !           381: .B D
        !           382: Print long in decimal.
        !           383: .TP
        !           384: .B x
        !           385: Print short in hexadecimal.
        !           386: .TP
        !           387: .B X
        !           388: Print long in hexadecimal.
        !           389: .TP
        !           390: .B u
        !           391: Print short in unsigned decimal.
        !           392: .TP
        !           393: .B U
        !           394: Print long in unsigned decimal.
        !           395: .TP
        !           396: .B f
        !           397: Print
        !           398: as a floating point number.
        !           399: .TP
        !           400: .B F
        !           401: Print double-precision floating point.
        !           402: .TP
        !           403: .B b
        !           404: Print the addressed byte in octal.
        !           405: .TP
        !           406: .B c
        !           407: Print the addressed character.
        !           408: .TP
        !           409: .B C
        !           410: Print the addressed character.
        !           411: Control characters
        !           412: are printed in the form
        !           413: .BI ^ X
        !           414: and the delete character is printed as
        !           415: .LR ^? .
        !           416: .TP
        !           417: .B s
        !           418: Print the addressed characters until a zero character
        !           419: is reached.
        !           420: Advance dot
        !           421: by the length of the string,
        !           422: including the zero terminator.
        !           423: .TP
        !           424: .B S
        !           425: Print a string using 
        !           426: the
        !           427: .BI ^ X
        !           428: escape convention (see
        !           429: .B C
        !           430: above).
        !           431: .TP
        !           432: .B Y
        !           433: Print a long integer in date format (see
        !           434: .IR ctime (3)).
        !           435: .TP
        !           436: .B i
        !           437: Print as machine instructions.
        !           438: This style of printing causes variables
        !           439: 0, (1, ...)
        !           440: to be set to the offset parts
        !           441: of the first (second, ...)
        !           442: operand of the instruction.
        !           443: .TP
        !           444: .B a
        !           445: Print the value of dot
        !           446: in symbolic form.
        !           447: Dot is unaffected.
        !           448: .TP
        !           449: .B p
        !           450: Print the addressed value in symbolic form.
        !           451: Dot is advanced by the size of a machine address
        !           452: (4 bytes on the VAX,
        !           453: 8 bytes on the Cray).
        !           454: .TP
        !           455: .B t
        !           456: When preceded by an integer tabs to the next
        !           457: appropriate tab stop.
        !           458: For example,
        !           459: .B 8t 
        !           460: moves to the next 8-space tab stop.
        !           461: Dot is unaffected.
        !           462: .TP
        !           463: .B n
        !           464: Print a newline.
        !           465: Dot is unaffected.
        !           466: .tr '"
        !           467: .TP
        !           468: .BR ' ... '
        !           469: Print the enclosed string.
        !           470: Dot is unaffected.
        !           471: .br
        !           472: .tr ''
        !           473: .TP
        !           474: .B ^
        !           475: Dot is decremented by the current increment.
        !           476: Nothing is printed.
        !           477: .TP
        !           478: .B +
        !           479: Dot is incremented by 1.
        !           480: Nothing is printed.
        !           481: .TP
        !           482: .B -
        !           483: Dot is decremented by 1.
        !           484: Nothing is printed.
        !           485: .RE
        !           486: .PD
        !           487: .TP
        !           488: newline
        !           489: Update dot by the current increment.
        !           490: Repeat the previous command with a
        !           491: .I count
        !           492: of 1.
        !           493: .TP
        !           494: .RB [ ?/ ] l "\fI value mask\fR"
        !           495: Words starting at dot
        !           496: are masked with
        !           497: .I mask
        !           498: and compared with
        !           499: .I value
        !           500: until
        !           501: a match is found.
        !           502: If
        !           503: .B l
        !           504: is used,
        !           505: the match is for a short integer;
        !           506: .B L
        !           507: matches longs.
        !           508: If no match is found then dot
        !           509: is unchanged; otherwise dot
        !           510: is set to the matched location.
        !           511: If
        !           512: .I mask
        !           513: is omitted then \-1 is used.
        !           514: .TP
        !           515: .RB [ ?/ ] w "\fI value ...\fR"
        !           516: Write the short
        !           517: .I value
        !           518: into the addressed
        !           519: location.
        !           520: If the command is
        !           521: .BR W ,
        !           522: write a long.
        !           523: Option
        !           524: .B -w
        !           525: must be in effect.
        !           526: .TP
        !           527: .RB [ ?/ ] "m\fI b e f \fP" [ ?\fR]
        !           528: .br
        !           529: New values for
        !           530: .RI ( b,\ e,\ f )
        !           531: in the first map entry
        !           532: are recorded.
        !           533: If less than three expressions are given then
        !           534: the remaining map parameters are left unchanged.
        !           535: The address type (instruction or data)
        !           536: is unchanged in any case.
        !           537: If the
        !           538: .L ?
        !           539: or
        !           540: .L /
        !           541: is followed by
        !           542: .L *
        !           543: then
        !           544: the second segment
        !           545: of the mapping is changed.
        !           546: If the list is terminated by
        !           547: .L ?
        !           548: or
        !           549: .L /
        !           550: then the file
        !           551: .RI ( objfil
        !           552: or
        !           553: .I corfil
        !           554: respectively) is used
        !           555: for subsequent requests.
        !           556: For example,
        !           557: .L /m?
        !           558: will cause
        !           559: .L /
        !           560: to refer to
        !           561: .IR objfil .
        !           562: .TP
        !           563: .BI > name
        !           564: Dot is assigned to the variable or register named.
        !           565: .TP
        !           566: .B !
        !           567: A shell is called to read the
        !           568: rest of the line following `!'.
        !           569: .TP
        !           570: .BI $ modifier
        !           571: Miscellaneous commands.
        !           572: The available 
        !           573: .I modifiers 
        !           574: are:
        !           575: .RS
        !           576: .TP
        !           577: .PD 0
        !           578: .BI < f
        !           579: Read commands from the file
        !           580: .IR f .
        !           581: If
        !           582: .I f
        !           583: cannot be found, try
        !           584: .BI /usr/lib/adb/ f.
        !           585: If this command is executed in a file, further commands
        !           586: in the file are not seen.
        !           587: If
        !           588: .I f
        !           589: is omitted, the current input stream is terminated.
        !           590: If a
        !           591: .I count
        !           592: is given, and is zero, the command will be ignored.
        !           593: The value of the count will be placed in variable
        !           594: .B 9
        !           595: before the first command in
        !           596: .I f
        !           597: is executed.
        !           598: .TP
        !           599: .BI << f
        !           600: Similar to
        !           601: .B <
        !           602: except it can be used in a file of commands without
        !           603: causing the file to be closed.
        !           604: Variable
        !           605: .B 9
        !           606: is saved during the execution of this command, and restored
        !           607: when it completes.
        !           608: There is a (small) limit to the number of
        !           609: .B <<
        !           610: files that can be open at once.
        !           611: .br
        !           612: .ns
        !           613: .TP
        !           614: .BI > f
        !           615: Append output to the file
        !           616: .IR f ,
        !           617: which is created if it does not exist.
        !           618: If
        !           619: .I f
        !           620: is omitted, output is returned to the terminal.
        !           621: .TP
        !           622: .B ?
        !           623: Print process id, the signal which caused stopping or termination,
        !           624: as well as the registers.
        !           625: This is the default if
        !           626: .I modifier
        !           627: is omitted.
        !           628: .TP
        !           629: .B r
        !           630: Print the general registers and
        !           631: the instruction addressed by
        !           632: .BR pc .
        !           633: Dot is set to
        !           634: .BR pc .
        !           635: .TP
        !           636: .B R
        !           637: Like
        !           638: .BR $r ,
        !           639: but include miscellaneous registers
        !           640: such as the kernel stack pointer.
        !           641: .TP
        !           642: .B b
        !           643: Print all breakpoints
        !           644: and their associated counts and commands.
        !           645: .TP
        !           646: .B c
        !           647: C stack backtrace.
        !           648: If
        !           649: .I address
        !           650: is given then it is taken as the
        !           651: address of the current frame;
        !           652: otherwise,
        !           653: the current C frame pointer
        !           654: is used.
        !           655: If
        !           656: .B C 
        !           657: is used then the names and (long) values of all
        !           658: parameters,
        !           659: automatic
        !           660: and static variables are printed for each active function.
        !           661: If
        !           662: .I count
        !           663: is given then only the first
        !           664: .I count
        !           665: frames are printed.
        !           666: .TP
        !           667: .B a
        !           668: Set the maximum number of arguments
        !           669: printed by
        !           670: .B $c
        !           671: or
        !           672: .B $C
        !           673: to
        !           674: .IR address .
        !           675: The default is 20.
        !           676: .TP
        !           677: .B d
        !           678: Set the default radix to
        !           679: .I address
        !           680: and report the new value.
        !           681: .I Address
        !           682: is interpreted in the (old) current radix;
        !           683: .L 10$d
        !           684: never changes the default radix.
        !           685: To make decimal the default radix, use
        !           686: .LR 0t10$d .
        !           687: A radix of zero (the initial default) is a special case;
        !           688: input with a leading zero is octal,
        !           689: that with a leading sharp-sign
        !           690: .L #
        !           691: is hexadecimal,
        !           692: other numbers are decimal.
        !           693: When the default radix is zero,
        !           694: the default output radix is
        !           695: appropriate to the machine:
        !           696: hexadecimal on the VAX,
        !           697: octal on the Cray.
        !           698: .TP
        !           699: .B e
        !           700: The names and values of all
        !           701: external variables are printed.
        !           702: .TP
        !           703: .B w
        !           704: Set the page width for output to
        !           705: .I address
        !           706: (default 80).
        !           707: .TP
        !           708: .B s
        !           709: Set the limit for symbol matches to
        !           710: .I address
        !           711: (default 255).
        !           712: .TP
        !           713: .B q
        !           714: Exit from
        !           715: .IR adb .
        !           716: .TP
        !           717: .B v
        !           718: Print all non zero variables in the current radix.
        !           719: .TP
        !           720: .B m
        !           721: Print the address maps.
        !           722: .TP
        !           723: .B k
        !           724: Simulate kernel memory management.
        !           725: .TP
        !           726: .B p
        !           727: Simulate per-process memory management.
        !           728: .IP
        !           729: .B $k
        !           730: and
        !           731: .B $p
        !           732: are used for system debugging.
        !           733: Their details vary with machine and operating system.
        !           734: .PD
        !           735: .RE
        !           736: .TP
        !           737: .BI : modifier
        !           738: Manage a subprocess.
        !           739: Available modifiers are:
        !           740: .RS
        !           741: .TP
        !           742: .PD 0
        !           743: .BI b c
        !           744: Set breakpoint at
        !           745: .IR address .
        !           746: The breakpoint is executed
        !           747: .IR count \-1
        !           748: times before
        !           749: causing a stop.
        !           750: Each time the breakpoint is encountered
        !           751: the command
        !           752: .I c
        !           753: is executed.
        !           754: If this command is omitted or sets dot
        !           755: to zero
        !           756: then the breakpoint causes a stop.
        !           757: .TP
        !           758: .B d
        !           759: Delete breakpoint at
        !           760: .IR address .
        !           761: .TP
        !           762: .B r
        !           763: Run
        !           764: .I objfil
        !           765: as a subprocess.
        !           766: If
        !           767: .I address
        !           768: is given explicitly then the
        !           769: program is entered at this point; otherwise
        !           770: the program is entered at its standard entry point.
        !           771: .I count
        !           772: specifies how many breakpoints are to be
        !           773: ignored before stopping.
        !           774: Arguments to the subprocess may be supplied on the
        !           775: same line as the command.
        !           776: An argument starting with < or > causes the standard
        !           777: input or output to be established for the command.
        !           778: All signals are enabled on entry to the subprocess.
        !           779: .TP
        !           780: .BI c s
        !           781: The subprocess is continued.
        !           782: If
        !           783: .I s
        !           784: is omitted
        !           785: or nonzero,
        !           786: the subprocess
        !           787: is sent the signal that caused it to stop;
        !           788: if 0
        !           789: is specified,
        !           790: no signal is sent.
        !           791: Breakpoints
        !           792: and single-stepping
        !           793: don't count as signals.
        !           794: Breakpoint skipping is the same
        !           795: as for
        !           796: .BR r .
        !           797: .TP
        !           798: .BI s s
        !           799: As for
        !           800: .B c 
        !           801: except that
        !           802: the subprocess is single stepped
        !           803: .I count
        !           804: times.
        !           805: If a signal is sent,
        !           806: it is received
        !           807: before the first instruction is executed.
        !           808: If there is no current subprocess then
        !           809: .I objfil
        !           810: is run
        !           811: as a subprocess as for
        !           812: .BR r .
        !           813: In this case no signal can be sent; the remainder of the line
        !           814: is treated as arguments to the subprocess.
        !           815: .TP
        !           816: .B k
        !           817: The current subprocess, if any, is terminated.
        !           818: .PD
        !           819: .RE
        !           820: .SS Variables
        !           821: .I Adb
        !           822: provides a number of variables.
        !           823: Named variables are set initially by
        !           824: .I  adb
        !           825: but are not used subsequently.
        !           826: Numbered variables are reserved for communication
        !           827: as follows.
        !           828: .TP
        !           829: .BR 0 ", " 1 ", ..."
        !           830: The offset parts of the first, second, ...
        !           831: operands of the last instruction printed.
        !           832: Meaningless if the operand was a register.
        !           833: .br
        !           834: .ns
        !           835: .TP
        !           836: .B 9
        !           837: The count on the last
        !           838: .B $<
        !           839: or
        !           840: .B $<<
        !           841: command.
        !           842: .PP
        !           843: On entry the following are set
        !           844: from the system header in the
        !           845: .IR corfil .
        !           846: If
        !           847: .I corfil
        !           848: does not appear to be a
        !           849: core image then
        !           850: these values are set from
        !           851: .IR objfil .
        !           852: .TP
        !           853: .B b
        !           854: The base address of the data segment.
        !           855: .PD 0
        !           856: .TP
        !           857: .B d
        !           858: The data segment size.
        !           859: .TP
        !           860: .B e
        !           861: The entry point.
        !           862: .TP
        !           863: .B m
        !           864: The `magic' number
        !           865: .RI ( a.out (5)).
        !           866: .TP
        !           867: .B s
        !           868: The stack segment size.
        !           869: .TP
        !           870: .B t
        !           871: The text segment size.
        !           872: .PD
        !           873: .SS Addresses
        !           874: The address in a file associated with
        !           875: a written address is determined by a mapping
        !           876: associated with that file.
        !           877: Each mapping is represented by one or more quadruples
        !           878: .RI ( "t, b, e, f" ),
        !           879: each mapping addresses of type
        !           880: .I t
        !           881: (instruction,
        !           882: data,
        !           883: user block)
        !           884: in the range
        !           885: .I b
        !           886: through
        !           887: .I e
        !           888: to the part of the file
        !           889: beginning at
        !           890: address
        !           891: .IR f .
        !           892: An address
        !           893: .I a
        !           894: of type
        !           895: .I t
        !           896: is mapped
        !           897: to a file address
        !           898: by finding a quadruple
        !           899: of type
        !           900: .IR t ,
        !           901: for which
        !           902: .IR b \*(LE a < e ;
        !           903: the file address
        !           904: is
        !           905: .IR address + f \(mi b .
        !           906: As a special case,
        !           907: if an instruction space address is not found,
        !           908: a second search is made
        !           909: for the same address in data space.
        !           910: .PP
        !           911: Typically,
        !           912: the text segment of a program
        !           913: is mapped as instruction space,
        !           914: the data and bss segments
        !           915: as data space.
        !           916: If
        !           917: .I objfil
        !           918: is an
        !           919: .IR a.out,
        !           920: or if
        !           921: .I corfil
        !           922: is a core image
        !           923: or process file,
        !           924: maps are set accordingly.
        !           925: Otherwise,
        !           926: a single `data space'
        !           927: map is set up,
        !           928: with
        !           929: .I b
        !           930: and
        !           931: .I f
        !           932: set to zero,
        !           933: and
        !           934: .I e
        !           935: set to a huge number;
        !           936: thus the entire file can be examined
        !           937: without address translation.
        !           938: .PP
        !           939: The
        !           940: .B ?
        !           941: and
        !           942: .B /
        !           943: commands attempt to examine
        !           944: instruction and data space
        !           945: respectively.
        !           946: .B ?*
        !           947: tries for data space
        !           948: (in
        !           949: .IR objfil );
        !           950: .B /*
        !           951: accesses instruction space
        !           952: (in
        !           953: .IR corfil ).
        !           954: .PP
        !           955: Registers in
        !           956: process and core images
        !           957: are a special case;
        !           958: they live in a special `register' address space.
        !           959: The contents of register 0
        !           960: are located at address
        !           961: .BR %0 ;
        !           962: register 1
        !           963: at
        !           964: .BR %4
        !           965: (if registers are 4 bytes long);
        !           966: and so on.
        !           967: .B %
        !           968: addresses
        !           969: are mapped to the registers
        !           970: for the `current frame,'
        !           971: set by local variable references,
        !           972: and reset to the outermost frame
        !           973: (the `real' registers)
        !           974: whenever a process runs
        !           975: or a stack trace is requested.
        !           976: .PP
        !           977: Simulated memory management
        !           978: translations
        !           979: (the
        !           980: .B $k
        !           981: and
        !           982: .B $p
        !           983: commands)
        !           984: are done before the mapping described above.
        !           985: .SH FILES
        !           986: .F a.out
        !           987: .br
        !           988: .F core
        !           989: .br
        !           990: .F /usr/lib/adb/*
        !           991: parameter files
        !           992: .br
        !           993: .F /proc/*
        !           994: .SH SEE\ ALSO
        !           995: .IR cin (1),
        !           996: .IR pi (9.1),
        !           997: .IR nm (1),
        !           998: .IR proc (4),
        !           999: .IR a.out (5),
        !          1000: .IR bigcore (1)
        !          1001: .br
        !          1002: J. F. Maranzano and S. R. Bourne, 
        !          1003: `A Tutorial Introduction to ADB' in
        !          1004: Bell Laboratories,
        !          1005: .I UNIX Programmer's Manual,
        !          1006: Volume\ 2,
        !          1007: Holt, Rinehart and Winston (1984)
        !          1008: .SH DIAGNOSTICS
        !          1009: `Adb' when there is no current command or format.
        !          1010: Exit status is 0, unless last command failed or
        !          1011: returned nonzero status.
        !          1012: .SH BUGS
        !          1013: Either the explanation
        !          1014: or the implementation
        !          1015: of register variables
        !          1016: is too complex and arcane.
        !          1017: .SH MACHINE DEPENDENCIES
        !          1018: .SS PDP-11
        !          1019: Short integers (printed by
        !          1020: .B r
        !          1021: format)
        !          1022: are 2 bytes;
        !          1023: long integers
        !          1024: (printed by
        !          1025: .B R
        !          1026: format)
        !          1027: are 4 bytes.
        !          1028: Addresses printed by
        !          1029: .B a
        !          1030: format are 2 bytes.
        !          1031: .PP
        !          1032: Register variables match the hardware in the
        !          1033: obvious way:
        !          1034: .B r0
        !          1035: is at address
        !          1036: .BR %0 ,
        !          1037: .B r1
        !          1038: at
        !          1039: .BR %2 ,
        !          1040: and so on.
        !          1041: .PP
        !          1042: The default output radix
        !          1043: is octal.
        !          1044: .PP
        !          1045: .B $k
        !          1046: and
        !          1047: .B $p
        !          1048: are unimplemented.
        !          1049: .SS VAX
        !          1050: Short integers are 2 bytes,
        !          1051: long integers are 4 bytes,
        !          1052: addresses are 4 bytes.
        !          1053: .PP
        !          1054: Register variables match the hardware in the
        !          1055: obvious way: r0
        !          1056: is at address
        !          1057: .BR %0 ,
        !          1058: r1 at
        !          1059: .BR %4 ,
        !          1060: and so on.
        !          1061: .PP
        !          1062: The default output radix
        !          1063: is hexadecimal.
        !          1064: .PP
        !          1065: .B $k
        !          1066: sets the system base register pointer to
        !          1067: .IR address .
        !          1068: System space addresses are thereafter
        !          1069: mapped according to the system page table
        !          1070: starting at that physical address.
        !          1071: An
        !          1072: .I address
        !          1073: of zero
        !          1074: turns off mapping.
        !          1075: .PP
        !          1076: .B $p
        !          1077: sets the process control block pointer to
        !          1078: .IR address ;
        !          1079: user space addresses are thereafter
        !          1080: translated according to the user page tables
        !          1081: described by the PCB.
        !          1082: Kernel mapping must already be in effect.
        !          1083: .I Address
        !          1084: may be a physical address
        !          1085: (that of the PCB)
        !          1086: or the system space virtual address
        !          1087: of a page table entry
        !          1088: pointing to the PCB
        !          1089: (the number stored in
        !          1090: .IR p_addr ).
        !          1091: If
        !          1092: .I address
        !          1093: is zero,
        !          1094: user mapping is turned off;
        !          1095: addresses less than
        !          1096: 0x80000000
        !          1097: will be treated as physical addresses.
        !          1098: .PP
        !          1099: The command
        !          1100: .L "$<crash"
        !          1101: will initialize registers
        !          1102: and mapping from a kernel crash dump.
        !          1103: .SS Cray
        !          1104: Short integers are 2 bytes;
        !          1105: long integers are 8 bytes.
        !          1106: Addresses are 8 bytes.
        !          1107: .PP
        !          1108: Registers are funny,
        !          1109: and yet to be described.
        !          1110: .PP
        !          1111: The default output radix is octal.
        !          1112: .PP
        !          1113: .B $k
        !          1114: and
        !          1115: .B $p
        !          1116: are unimplemented.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.