1\input texinfo   @c -*-texinfo-*-
2@c %**start of header
3@setfilename annotate.info
4
5@c This is a dir.info fragment to support semi-automated addition of
6@c manuals to an info tree.
7@dircategory Software development
8@direntry
9* Annotate: (annotate).                 The obsolete annotation interface.
10@end direntry
11
12@c
13@include gdb-cfg.texi
14@c
15@settitle @value{GDBN}'s Obsolete Annotations
16@setchapternewpage off
17@c %**end of header
18
19@set EDITION 1.0
20@set DATE July 2003
21
22@c NOTE: cagney/2003-07-28:
23@c Don't make this migration doccument an appendix of GDB's user guide.
24@c By keeping this separate, the size of the user guide is contained. If
25@c the user guide to get much bigger it would need to switch to a larger,
26@c more expensive, form factor and would drive up the manuals publication
27@c cost.  Having a smaller cheaper manual helps the GNU Press with its sales.
28
29@ifinfo
30This file documents @value{GDBN}'s obsolete annotations.
31
32Copyright 1994, 1995, 2000, 2001, 2003 Free Software Foundation, Inc.
33
34Permission is granted to copy, distribute and/or modify this document
35under the terms of the GNU Free Documentation License, Version 1.1 or
36any later version published by the Free Software Foundation; with no
37Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
38Texts.  A copy of the license is included in the section entitled ``GNU
39Free Documentation License''.
40
41@end ifinfo
42
43@titlepage
44@title @value{GDBN}'s Obsolete Annotations
45@subtitle Edition @value{EDITION}
46@subtitle @value{DATE}
47@author Free Software Foundation
48@page
49@vskip 0pt plus 1filll
50Copyright @copyright{} 1994, 1995, 2000, 2001, 2003 Free Software
51Foundation, Inc.
52
53Permission is granted to copy, distribute and/or modify this document
54under the terms of the GNU Free Documentation License, Version 1.1 or
55any later version published by the Free Software Foundation; with no
56Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
57Texts.  A copy of the license is included in the section entitled ``GNU
58Free Documentation License''.
59@end titlepage
60
61@ifinfo
62@node Top
63@top GDB Annotations
64
65This document describes the obsolete level two annotation interface
66implemented in older @value{GDBN} versions.
67
68@ignore
69This is Edition @value{EDITION}, @value{DATE}.
70@end ignore
71@end ifinfo
72
73@menu
74* Annotations Overview::  What annotations are; the general syntax.
75* Limitations::           Limitations of the annotation interface.
76* Migrating to GDB/MI::   Migrating to GDB/MI
77* Server Prefix::       Issuing a command without affecting user state.
78* Value Annotations::   Values are marked as such.
79* Frame Annotations::   Stack frames are annotated.
80* Displays::            @value{GDBN} can be told to display something periodically.
81* Prompting::           Annotations marking @value{GDBN}'s need for input.
82* Errors::              Annotations for error messages.
83* Breakpoint Info::     Information on breakpoints.
84* Invalidation::        Some annotations describe things now invalid.
85* Annotations for Running::
86                        Whether the program is running, how it stopped, etc.
87* Source Annotations::  Annotations describing source code.
88
89* GNU Free Documentation License::
90@end menu
91
92@contents
93
94@node Annotations Overview
95@chapter What is an Annotation?
96@cindex annotations
97
98To produce obsolete level two annotations, start @value{GDBN} with the
99@code{--annotate=2} option.
100
101Annotations start with a newline character, two @samp{control-z}
102characters, and the name of the annotation.  If there is no additional
103information associated with this annotation, the name of the annotation
104is followed immediately by a newline.  If there is additional
105information, the name of the annotation is followed by a space, the
106additional information, and a newline.  The additional information
107cannot contain newline characters.
108
109Any output not beginning with a newline and two @samp{control-z}
110characters denotes literal output from @value{GDBN}.  Currently there is
111no need for @value{GDBN} to output a newline followed by two
112@samp{control-z} characters, but if there was such a need, the
113annotations could be extended with an @samp{escape} annotation which
114means those three characters as output.
115
116A simple example of starting up @value{GDBN} with annotations is:
117
118@smallexample
119$ gdb --annotate=2
120GNU GDB 5.0
121Copyright 2000 Free Software Foundation, Inc.
122GDB is free software, covered by the GNU General Public License,
123and you are welcome to change it and/or distribute copies of it
124under certain conditions.
125Type "show copying" to see the conditions.
126There is absolutely no warranty for GDB.  Type "show warranty"
127for details.
128This GDB was configured as "sparc-sun-sunos4.1.3"
129
130^Z^Zpre-prompt
131(gdb)
132^Z^Zprompt
133quit
134
135^Z^Zpost-prompt
136$
137@end smallexample
138
139Here @samp{quit} is input to @value{GDBN}; the rest is output from
140@value{GDBN}.  The three lines beginning @samp{^Z^Z} (where @samp{^Z}
141denotes a @samp{control-z} character) are annotations; the rest is
142output from @value{GDBN}.
143
144@node Limitations
145@chapter Limitations of the Annotation Interface
146
147The level two annotations mechanism is known to have a number of
148technical and architectural limitations.  As a consequence, in 2001,
149with the release of @value{GDBN} 5.1 and the addition of @sc{gdb/mi},
150the annotation interface was marked as deprecated.
151
152This chapter discusses the known problems.
153
154@section Dependant on @sc{cli} output
155
156The annotation interface works by interspersing markups with
157@value{GDBN} normal command-line interpreter output.  Unfortunately, this
158makes the annotation client dependant on not just the annotations, but
159also the @sc{cli} output.  This is because the client is forced to
160assume that specific @value{GDBN} commands provide specific information.
161Any change to @value{GDBN}'s @sc{cli} output modifies or removes that
162information and, consequently, likely breaks the client.
163
164Since the @sc{gdb/mi} output is independant of the @sc{cli}, it does not
165have this problem.
166
167@section Scalability
168
169The annotation interface relies on value annotations (@pxref{Value
170Annotations}) and the display mechanism as a way of obtaining up-to-date
171value information.  These mechanisms are not scalable.
172
173In a graphical environment, where many values can be displayed
174simultaneously, a serious performance problem occurs when the client
175tries to first extract from @value{GDBN}, and then re-display, all those
176values.  The client should instead only request and update the values
177that changed.
178
179The @sc{gdb/mi} Variable Objects provide just that mechanism.
180
181@section Correctness
182
183The annotation interface assumes that a variable's value can only be
184changed when the target is running.  This assumption is not correct.  A
185single assignment to a single variable can result in the entire target,
186and all displayed values, needing an update.
187
188The @sc{gdb/mi} Variable Objects include a mechanism for efficiently
189reporting such changes.
190
191@section Reliability
192
193The @sc{gdb/mi} interface includes a dedicated test directory
194(@file{gdb/gdb.mi}), and any addition or fix to @sc{gdb/mi} must include
195testsuite changes.
196
197@section Maintainability
198
199The annotation mechanism was implemented by interspersing @sc{cli} print
200statements with various annotations.  As a consequence, any @sc{cli}
201output change can alter the annotation output.
202
203Since the @sc{gdb/mi} output is independant of the @sc{cli}, and the
204@sc{gdb/mi} is increasingly implemented independant of the @sc{cli}
205code, its long term maintenance is much easier.
206
207@node Migrating to GDB/MI
208@chapter Migrating to @sc{gdb/mi}
209
210By using the @samp{interp mi} command, it is possible for annotation
211clients to invoke @sc{gdb/mi} commands, and hence access the
212@sc{gdb/mi}.  By doing this, existing annotation clients have a
213migration path from this obsolete interface to @sc{gdb/mi}.
214
215@node Server Prefix
216@chapter The Server Prefix
217@cindex server prefix for annotations
218
219To issue a command to @value{GDBN} without affecting certain aspects of
220the state which is seen by users, prefix it with @samp{server }.  This
221means that this command will not affect the command history, nor will it
222affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
223pressed on a line by itself.
224
225The server prefix does not affect the recording of values into the value
226history; to print a value without recording it into the value history,
227use the @code{output} command instead of the @code{print} command.
228
229@node Value Annotations
230@chapter Values
231
232@emph{Value Annotations have been removed.  @sc{gdb/mi} instead provides
233Variable Objects.}
234
235@cindex annotations for values
236When a value is printed in various contexts, @value{GDBN} uses
237annotations to delimit the value from the surrounding text.
238
239@findex value-history-begin
240@findex value-history-value
241@findex value-history-end
242If a value is printed using @code{print} and added to the value history,
243the annotation looks like
244
245@smallexample
246^Z^Zvalue-history-begin @var{history-number} @var{value-flags}
247@var{history-string}
248^Z^Zvalue-history-value
249@var{the-value}
250^Z^Zvalue-history-end
251@end smallexample
252
253@noindent
254where @var{history-number} is the number it is getting in the value
255history, @var{history-string} is a string, such as @samp{$5 = }, which
256introduces the value to the user, @var{the-value} is the output
257corresponding to the value itself, and @var{value-flags} is @samp{*} for
258a value which can be dereferenced and @samp{-} for a value which cannot.
259
260@findex value-begin
261@findex value-end
262If the value is not added to the value history (it is an invalid float
263or it is printed with the @code{output} command), the annotation is similar:
264
265@smallexample
266^Z^Zvalue-begin @var{value-flags}
267@var{the-value}
268^Z^Zvalue-end
269@end smallexample
270
271@findex arg-begin
272@findex arg-name-end
273@findex arg-value
274@findex arg-end
275When @value{GDBN} prints an argument to a function (for example, in the output
276from the @code{backtrace} command), it annotates it as follows:
277
278@smallexample
279^Z^Zarg-begin
280@var{argument-name}
281^Z^Zarg-name-end
282@var{separator-string}
283^Z^Zarg-value @var{value-flags}
284@var{the-value}
285^Z^Zarg-end
286@end smallexample
287
288@noindent
289where @var{argument-name} is the name of the argument,
290@var{separator-string} is text which separates the name from the value
291for the user's benefit (such as @samp{=}), and @var{value-flags} and
292@var{the-value} have the same meanings as in a
293@code{value-history-begin} annotation.
294
295@findex field-begin
296@findex field-name-end
297@findex field-value
298@findex field-end
299When printing a structure, @value{GDBN} annotates it as follows:
300
301@smallexample
302^Z^Zfield-begin @var{value-flags}
303@var{field-name}
304^Z^Zfield-name-end
305@var{separator-string}
306^Z^Zfield-value
307@var{the-value}
308^Z^Zfield-end
309@end smallexample
310
311@noindent
312where @var{field-name} is the name of the field, @var{separator-string}
313is text which separates the name from the value for the user's benefit
314(such as @samp{=}), and @var{value-flags} and @var{the-value} have the
315same meanings as in a @code{value-history-begin} annotation.
316
317When printing an array, @value{GDBN} annotates it as follows:
318
319@smallexample
320^Z^Zarray-section-begin @var{array-index} @var{value-flags}
321@end smallexample
322
323@noindent
324where @var{array-index} is the index of the first element being
325annotated and @var{value-flags} has the same meaning as in a
326@code{value-history-begin} annotation.  This is followed by any number
327of elements, where is element can be either a single element:
328
329@findex elt
330@smallexample
331@samp{,} @var{whitespace}         ; @r{omitted for the first element}
332@var{the-value}
333^Z^Zelt
334@end smallexample
335
336or a repeated element
337
338@findex elt-rep
339@findex elt-rep-end
340@smallexample
341@samp{,} @var{whitespace}         ; @r{omitted for the first element}
342@var{the-value}
343^Z^Zelt-rep @var{number-of-repetitions}
344@var{repetition-string}
345^Z^Zelt-rep-end
346@end smallexample
347
348In both cases, @var{the-value} is the output for the value of the
349element and @var{whitespace} can contain spaces, tabs, and newlines.  In
350the repeated case, @var{number-of-repetitions} is the number of
351consecutive array elements which contain that value, and
352@var{repetition-string} is a string which is designed to convey to the
353user that repetition is being depicted.
354
355@findex array-section-end
356Once all the array elements have been output, the array annotation is
357ended with
358
359@smallexample
360^Z^Zarray-section-end
361@end smallexample
362
363@node Frame Annotations
364@chapter Frames
365
366@emph{Value Annotations have been removed.  @sc{gdb/mi} instead provides
367a number of frame commands.}
368
369@emph{Frame annotations are no longer available.  The @sc{gdb/mi}
370provides @samp{-stack-list-arguments}, @samp{-stack-list-locals}, and
371@samp{-stack-list-frames} commands.}
372
373@cindex annotations for frames
374Whenever @value{GDBN} prints a frame, it annotates it.  For example, this applies
375to frames printed when @value{GDBN} stops, output from commands such as
376@code{backtrace} or @code{up}, etc.
377
378@findex frame-begin
379The frame annotation begins with
380
381@smallexample
382^Z^Zframe-begin @var{level} @var{address}
383@var{level-string}
384@end smallexample
385
386@noindent
387where @var{level} is the number of the frame (0 is the innermost frame,
388and other frames have positive numbers), @var{address} is the address of
389the code executing in that frame, and @var{level-string} is a string
390designed to convey the level to the user.  @var{address} is in the form
391@samp{0x} followed by one or more lowercase hex digits (note that this
392does not depend on the language).  The frame ends with
393
394@findex frame-end
395@smallexample
396^Z^Zframe-end
397@end smallexample
398
399Between these annotations is the main body of the frame, which can
400consist of
401
402@itemize @bullet
403@item
404@findex function-call
405@smallexample
406^Z^Zfunction-call
407@var{function-call-string}
408@end smallexample
409
410where @var{function-call-string} is text designed to convey to the user
411that this frame is associated with a function call made by @value{GDBN} to a
412function in the program being debugged.
413
414@item
415@findex signal-handler-caller
416@smallexample
417^Z^Zsignal-handler-caller
418@var{signal-handler-caller-string}
419@end smallexample
420
421where @var{signal-handler-caller-string} is text designed to convey to
422the user that this frame is associated with whatever mechanism is used
423by this operating system to call a signal handler (it is the frame which
424calls the signal handler, not the frame for the signal handler itself).
425
426@item
427A normal frame.
428
429@findex frame-address
430@findex frame-address-end
431This can optionally (depending on whether this is thought of as
432interesting information for the user to see) begin with
433
434@smallexample
435^Z^Zframe-address
436@var{address}
437^Z^Zframe-address-end
438@var{separator-string}
439@end smallexample
440
441where @var{address} is the address executing in the frame (the same
442address as in the @code{frame-begin} annotation, but printed in a form
443which is intended for user consumption---in particular, the syntax varies
444depending on the language), and @var{separator-string} is a string
445intended to separate this address from what follows for the user's
446benefit.
447
448@findex frame-function-name
449@findex frame-args
450Then comes
451
452@smallexample
453^Z^Zframe-function-name
454@var{function-name}
455^Z^Zframe-args
456@var{arguments}
457@end smallexample
458
459where @var{function-name} is the name of the function executing in the
460frame, or @samp{??} if not known, and @var{arguments} are the arguments
461to the frame, with parentheses around them (each argument is annotated
462individually as well, @pxref{Value Annotations}).
463
464@findex frame-source-begin
465@findex frame-source-file
466@findex frame-source-file-end
467@findex frame-source-line
468@findex frame-source-end
469If source information is available, a reference to it is then printed:
470
471@smallexample
472^Z^Zframe-source-begin
473@var{source-intro-string}
474^Z^Zframe-source-file
475@var{filename}
476^Z^Zframe-source-file-end
477:
478^Z^Zframe-source-line
479@var{line-number}
480^Z^Zframe-source-end
481@end smallexample
482
483where @var{source-intro-string} separates for the user's benefit the
484reference from the text which precedes it, @var{filename} is the name of
485the source file, and @var{line-number} is the line number within that
486file (the first line is line 1).
487
488@findex frame-where
489If @value{GDBN} prints some information about where the frame is from (which
490library, which load segment, etc.; currently only done on the RS/6000),
491it is annotated with
492
493@smallexample
494^Z^Zframe-where
495@var{information}
496@end smallexample
497
498Then, if source is to actually be displayed for this frame (for example,
499this is not true for output from the @code{backtrace} command), then a
500@code{source} annotation (@pxref{Source Annotations}) is displayed.  Unlike
501most annotations, this is output instead of the normal text which would be
502output, not in addition.
503@end itemize
504
505@node Displays
506@chapter Displays
507
508@emph{Display Annotations have been removed.  @sc{gdb/mi} instead
509provides Variable Objects.}
510
511@findex display-begin
512@findex display-number-end
513@findex display-format
514@findex display-expression
515@findex display-expression-end
516@findex display-value
517@findex display-end
518@cindex annotations for display
519When @value{GDBN} is told to display something using the @code{display} command,
520the results of the display are annotated:
521
522@smallexample
523^Z^Zdisplay-begin
524@var{number}
525^Z^Zdisplay-number-end
526@var{number-separator}
527^Z^Zdisplay-format
528@var{format}
529^Z^Zdisplay-expression
530@var{expression}
531^Z^Zdisplay-expression-end
532@var{expression-separator}
533^Z^Zdisplay-value
534@var{value}
535^Z^Zdisplay-end
536@end smallexample
537
538@noindent
539where @var{number} is the number of the display, @var{number-separator}
540is intended to separate the number from what follows for the user,
541@var{format} includes information such as the size, format, or other
542information about how the value is being displayed, @var{expression} is
543the expression being displayed, @var{expression-separator} is intended
544to separate the expression from the text that follows for the user,
545and @var{value} is the actual value being displayed.
546
547@node Prompting
548@chapter Annotation for @value{GDBN} Input
549
550@cindex annotations for prompts
551When @value{GDBN} prompts for input, it annotates this fact so it is possible
552to know when to send output, when the output from a given command is
553over, etc.
554
555Different kinds of input each have a different @dfn{input type}.  Each
556input type has three annotations: a @code{pre-} annotation, which
557denotes the beginning of any prompt which is being output, a plain
558annotation, which denotes the end of the prompt, and then a @code{post-}
559annotation which denotes the end of any echo which may (or may not) be
560associated with the input.  For example, the @code{prompt} input type
561features the following annotations:
562
563@smallexample
564^Z^Zpre-prompt
565^Z^Zprompt
566^Z^Zpost-prompt
567@end smallexample
568
569The input types are
570
571@table @code
572@findex pre-prompt
573@findex prompt
574@findex post-prompt
575@item prompt
576When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
577
578@findex pre-commands
579@findex commands
580@findex post-commands
581@item commands
582When @value{GDBN} prompts for a set of commands, like in the @code{commands}
583command.  The annotations are repeated for each command which is input.
584
585@findex pre-overload-choice
586@findex overload-choice
587@findex post-overload-choice
588@item overload-choice
589When @value{GDBN} wants the user to select between various overloaded functions.
590
591@findex pre-query
592@findex query
593@findex post-query
594@item query
595When @value{GDBN} wants the user to confirm a potentially dangerous operation.
596
597@findex pre-prompt-for-continue
598@findex prompt-for-continue
599@findex post-prompt-for-continue
600@item prompt-for-continue
601When @value{GDBN} is asking the user to press return to continue.  Note: Don't
602expect this to work well; instead use @code{set height 0} to disable
603prompting.  This is because the counting of lines is buggy in the
604presence of annotations.
605@end table
606
607@node Errors
608@chapter Errors
609@cindex annotations for errors, warnings and interrupts
610
611@findex quit
612@smallexample
613^Z^Zquit
614@end smallexample
615
616This annotation occurs right before @value{GDBN} responds to an interrupt.
617
618@findex error
619@smallexample
620^Z^Zerror
621@end smallexample
622
623This annotation occurs right before @value{GDBN} responds to an error.
624
625Quit and error annotations indicate that any annotations which @value{GDBN} was
626in the middle of may end abruptly.  For example, if a
627@code{value-history-begin} annotation is followed by a @code{error}, one
628cannot expect to receive the matching @code{value-history-end}.  One
629cannot expect not to receive it either, however; an error annotation
630does not necessarily mean that @value{GDBN} is immediately returning all the way
631to the top level.
632
633@findex error-begin
634A quit or error annotation may be preceded by
635
636@smallexample
637^Z^Zerror-begin
638@end smallexample
639
640Any output between that and the quit or error annotation is the error
641message.
642
643Warning messages are not yet annotated.
644@c If we want to change that, need to fix warning(), type_error(),
645@c range_error(), and possibly other places.
646
647@node Breakpoint Info
648@chapter Information on Breakpoints
649
650@emph{Breakpoint Annotations have been removed.  @sc{gdb/mi} instead
651provides breakpoint commands.}
652
653@cindex annotations for breakpoints
654The output from the @code{info breakpoints} command is annotated as follows:
655
656@findex breakpoints-headers
657@findex breakpoints-table
658@smallexample
659^Z^Zbreakpoints-headers
660@var{header-entry}
661^Z^Zbreakpoints-table
662@end smallexample
663
664@noindent
665where @var{header-entry} has the same syntax as an entry (see below) but
666instead of containing data, it contains strings which are intended to
667convey the meaning of each field to the user.  This is followed by any
668number of entries.  If a field does not apply for this entry, it is
669omitted.  Fields may contain trailing whitespace.  Each entry consists
670of:
671
672@findex record
673@findex field
674@smallexample
675^Z^Zrecord
676^Z^Zfield 0
677@var{number}
678^Z^Zfield 1
679@var{type}
680^Z^Zfield 2
681@var{disposition}
682^Z^Zfield 3
683@var{enable}
684^Z^Zfield 4
685@var{address}
686^Z^Zfield 5
687@var{what}
688^Z^Zfield 6
689@var{frame}
690^Z^Zfield 7
691@var{condition}
692^Z^Zfield 8
693@var{ignore-count}
694^Z^Zfield 9
695@var{commands}
696@end smallexample
697
698Note that @var{address} is intended for user consumption---the syntax
699varies depending on the language.
700
701The output ends with
702
703@findex breakpoints-table-end
704@smallexample
705^Z^Zbreakpoints-table-end
706@end smallexample
707
708@node Invalidation
709@chapter Invalidation Notices
710
711@cindex annotations for invalidation messages
712The following annotations say that certain pieces of state may have
713changed.
714
715@table @code
716@findex frames-invalid
717@item ^Z^Zframes-invalid
718
719The frames (for example, output from the @code{backtrace} command) may
720have changed.
721
722@findex breakpoints-invalid
723@item ^Z^Zbreakpoints-invalid
724
725The breakpoints may have changed.  For example, the user just added or
726deleted a breakpoint.
727@end table
728
729@node Annotations for Running
730@chapter Running the Program
731@cindex annotations for running programs
732
733@findex starting
734@findex stopping
735When the program starts executing due to a @value{GDBN} command such as
736@code{step} or @code{continue},
737
738@smallexample
739^Z^Zstarting
740@end smallexample
741
742is output.  When the program stops,
743
744@smallexample
745^Z^Zstopped
746@end smallexample
747
748is output.  Before the @code{stopped} annotation, a variety of
749annotations describe how the program stopped.
750
751@table @code
752@findex exited
753@item ^Z^Zexited @var{exit-status}
754The program exited, and @var{exit-status} is the exit status (zero for
755successful exit, otherwise nonzero).
756
757@findex signalled
758@findex signal-name
759@findex signal-name-end
760@findex signal-string
761@findex signal-string-end
762@item ^Z^Zsignalled
763The program exited with a signal.  After the @code{^Z^Zsignalled}, the
764annotation continues:
765
766@smallexample
767@var{intro-text}
768^Z^Zsignal-name
769@var{name}
770^Z^Zsignal-name-end
771@var{middle-text}
772^Z^Zsignal-string
773@var{string}
774^Z^Zsignal-string-end
775@var{end-text}
776@end smallexample
777
778@noindent
779where @var{name} is the name of the signal, such as @code{SIGILL} or
780@code{SIGSEGV}, and @var{string} is the explanation of the signal, such
781as @code{Illegal Instruction} or @code{Segmentation fault}.
782@var{intro-text}, @var{middle-text}, and @var{end-text} are for the
783user's benefit and have no particular format.
784
785@findex signal
786@item ^Z^Zsignal
787The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
788just saying that the program received the signal, not that it was
789terminated with it.
790
791@findex breakpoint
792@item ^Z^Zbreakpoint @var{number}
793The program hit breakpoint number @var{number}.
794
795@findex watchpoint
796@item ^Z^Zwatchpoint @var{number}
797The program hit watchpoint number @var{number}.
798@end table
799
800@node Source Annotations
801@chapter Displaying Source
802@cindex annotations for source display
803
804@findex source
805The following annotation is used instead of displaying source code:
806
807@smallexample
808^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
809@end smallexample
810
811where @var{filename} is an absolute file name indicating which source
812file, @var{line} is the line number within that file (where 1 is the
813first line in the file), @var{character} is the character position
814within the file (where 0 is the first character in the file) (for most
815debug formats this will necessarily point to the beginning of a line),
816@var{middle} is @samp{middle} if @var{addr} is in the middle of the
817line, or @samp{beg} if @var{addr} is at the beginning of the line, and
818@var{addr} is the address in the target program associated with the
819source which is being displayed.  @var{addr} is in the form @samp{0x}
820followed by one or more lowercase hex digits (note that this does not
821depend on the language).
822
823@raisesections
824@include fdl.texi
825@lowersections
826
827@ignore
828@node Index
829@unnumbered Index
830
831@printindex fn
832@end ignore
833
834@bye
835