The "record goto" command scans its arguments for "begin", "start", or "end".
[deliverable/binutils-gdb.git] / gdb / doc / gdbint.texinfo
CommitLineData
9742079a 1\input texinfo @c -*- texinfo -*-
c906108c 2@setfilename gdbint.info
25822942 3@include gdb-cfg.texi
1eb7cd77
JB
4@settitle @value{GDBN} Internals
5@setchapternewpage off
03727ca6 6@dircategory Software development
e9c75b65 7@direntry
c906108c 8* Gdb-Internals: (gdbint). The GNU debugger's internals.
e9c75b65 9@end direntry
c906108c 10
a67ec3f4 11@copying
28e7fd62 12Copyright @copyright{} 1990-2013 Free Software Foundation, Inc.
c906108c
SS
13Contributed by Cygnus Solutions. Written by John Gilmore.
14Second Edition by Stan Shebs.
15
e9c75b65 16Permission is granted to copy, distribute and/or modify this document
4f5d9f07 17under the terms of the GNU Free Documentation License, Version 1.3 or
2a6585f0 18any later version published by the Free Software Foundation; with no
e5249f67
AC
19Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
20Texts. A copy of the license is included in the section entitled ``GNU
21Free Documentation License''.
a67ec3f4
JM
22@end copying
23
24@ifnottex
25This file documents the internals of the GNU debugger @value{GDBN}.
26
27@insertcopying
28@end ifnottex
c906108c 29
055855a4 30@syncodeindex vr fn
56caf160 31
c906108c 32@titlepage
25822942 33@title @value{GDBN} Internals
984359d2 34@subtitle A guide to the internals of the GNU debugger
c906108c
SS
35@author John Gilmore
36@author Cygnus Solutions
37@author Second Edition:
38@author Stan Shebs
39@author Cygnus Solutions
40@page
41@tex
42\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
43\xdef\manvers{\$Revision$} % For use in headers, footers too
44{\parskip=0pt
45\hfill Cygnus Solutions\par
46\hfill \manvers\par
47\hfill \TeX{}info \texinfoversion\par
48}
49@end tex
50
51@vskip 0pt plus 1filll
a67ec3f4 52@insertcopying
c906108c
SS
53@end titlepage
54
449f3b6c 55@contents
449f3b6c 56
c906108c
SS
57@node Top
58@c Perhaps this should be the title of the document (but only for info,
59@c not for TeX). Existing GNU manuals seem inconsistent on this point.
60@top Scope of this Document
61
25822942
DB
62This document documents the internals of the GNU debugger, @value{GDBN}. It
63includes description of @value{GDBN}'s key algorithms and operations, as well
64as the mechanisms that adapt @value{GDBN} to specific hosts and targets.
c906108c
SS
65
66@menu
587afa38 67* Summary::
c906108c
SS
68* Overall Structure::
69* Algorithms::
70* User Interface::
89437448 71* libgdb::
5f5233d4 72* Values::
669fac23 73* Stack Frames::
c906108c
SS
74* Symbol Handling::
75* Language Support::
76* Host Definition::
77* Target Architecture Definition::
123dc839 78* Target Descriptions::
c906108c
SS
79* Target Vector Definition::
80* Native Debugging::
81* Support Libraries::
a0e0ffdf
DE
82* Coding Standards::
83* Misc Guidelines::
c906108c 84* Porting GDB::
d52fe014 85* Versions and Branches::
55f6ca0f 86* Start of New Year Procedure::
8973da3a 87* Releasing GDB::
085dd6e6 88* Testsuite::
c906108c 89* Hints::
aab4e0ec 90
bcd7e15f 91* GDB Observers:: @value{GDBN} Currently available observers
aab4e0ec 92* GNU Free Documentation License:: The license for this documentation
055855a4
EZ
93* Concept Index::
94* Function and Variable Index::
c906108c
SS
95@end menu
96
587afa38
EZ
97@node Summary
98@chapter Summary
99
100@menu
101* Requirements::
102* Contributors::
103@end menu
c906108c 104
587afa38
EZ
105@node Requirements
106@section Requirements
56caf160 107@cindex requirements for @value{GDBN}
c906108c
SS
108
109Before diving into the internals, you should understand the formal
56caf160
EZ
110requirements and other expectations for @value{GDBN}. Although some
111of these may seem obvious, there have been proposals for @value{GDBN}
112that have run counter to these requirements.
c906108c 113
56caf160
EZ
114First of all, @value{GDBN} is a debugger. It's not designed to be a
115front panel for embedded systems. It's not a text editor. It's not a
116shell. It's not a programming environment.
c906108c 117
56caf160
EZ
118@value{GDBN} is an interactive tool. Although a batch mode is
119available, @value{GDBN}'s primary role is to interact with a human
120programmer.
c906108c 121
56caf160
EZ
122@value{GDBN} should be responsive to the user. A programmer hot on
123the trail of a nasty bug, and operating under a looming deadline, is
124going to be very impatient of everything, including the response time
125to debugger commands.
c906108c 126
56caf160
EZ
127@value{GDBN} should be relatively permissive, such as for expressions.
128While the compiler should be picky (or have the option to be made
be9c6c35 129picky), since source code lives for a long time usually, the
56caf160
EZ
130programmer doing debugging shouldn't be spending time figuring out to
131mollify the debugger.
c906108c 132
56caf160
EZ
133@value{GDBN} will be called upon to deal with really large programs.
134Executable sizes of 50 to 100 megabytes occur regularly, and we've
135heard reports of programs approaching 1 gigabyte in size.
c906108c 136
56caf160
EZ
137@value{GDBN} should be able to run everywhere. No other debugger is
138available for even half as many configurations as @value{GDBN}
139supports.
c906108c 140
587afa38
EZ
141@node Contributors
142@section Contributors
143
144The first edition of this document was written by John Gilmore of
145Cygnus Solutions. The current second edition was written by Stan Shebs
146of Cygnus Solutions, who continues to update the manual.
147
148Over the years, many others have made additions and changes to this
149document. This section attempts to record the significant contributors
150to that effort. One of the virtues of free software is that everyone
151is free to contribute to it; with regret, we cannot actually
152acknowledge everyone here.
153
154@quotation
155@emph{Plea:} This section has only been added relatively recently (four
156years after publication of the second edition). Additions to this
157section are particularly welcome. If you or your friends (or enemies,
158to be evenhanded) have been unfairly omitted from this list, we would
159like to add your names!
160@end quotation
161
162A document such as this relies on being kept up to date by numerous
163small updates by contributing engineers as they make changes to the
164code base. The file @file{ChangeLog} in the @value{GDBN} distribution
165approximates a blow-by-blow account. The most prolific contributors to
166this important, but low profile task are Andrew Cagney (responsible
167for over half the entries), Daniel Jacobowitz, Mark Kettenis, Jim
168Blandy and Eli Zaretskii.
169
170Eli Zaretskii and Daniel Jacobowitz wrote the sections documenting
171watchpoints.
172
173Jeremy Bennett updated the sections on initializing a new architecture
174and register representation, and added the section on Frame Interpretation.
175
c906108c
SS
176
177@node Overall Structure
178
179@chapter Overall Structure
180
56caf160
EZ
181@value{GDBN} consists of three major subsystems: user interface,
182symbol handling (the @dfn{symbol side}), and target system handling (the
183@dfn{target side}).
c906108c 184
2e685b93 185The user interface consists of several actual interfaces, plus
c906108c
SS
186supporting code.
187
188The symbol side consists of object file readers, debugging info
189interpreters, symbol table management, source language expression
190parsing, type and value printing.
191
192The target side consists of execution control, stack frame analysis, and
193physical target manipulation.
194
195The target side/symbol side division is not formal, and there are a
196number of exceptions. For instance, core file support involves symbolic
197elements (the basic core file reader is in BFD) and target elements (it
198supplies the contents of memory and the values of registers). Instead,
199this division is useful for understanding how the minor subsystems
200should fit together.
201
202@section The Symbol Side
203
56caf160
EZ
204The symbolic side of @value{GDBN} can be thought of as ``everything
205you can do in @value{GDBN} without having a live program running''.
206For instance, you can look at the types of variables, and evaluate
207many kinds of expressions.
c906108c
SS
208
209@section The Target Side
210
56caf160
EZ
211The target side of @value{GDBN} is the ``bits and bytes manipulator''.
212Although it may make reference to symbolic info here and there, most
213of the target side will run with only a stripped executable
214available---or even no executable at all, in remote debugging cases.
c906108c
SS
215
216Operations such as disassembly, stack frame crawls, and register
217display, are able to work with no symbolic info at all. In some cases,
25822942 218such as disassembly, @value{GDBN} will use symbolic info to present addresses
c906108c
SS
219relative to symbols rather than as raw numbers, but it will work either
220way.
221
222@section Configurations
223
56caf160
EZ
224@cindex host
225@cindex target
25822942 226@dfn{Host} refers to attributes of the system where @value{GDBN} runs.
c906108c
SS
227@dfn{Target} refers to the system where the program being debugged
228executes. In most cases they are the same machine, in which case a
229third type of @dfn{Native} attributes come into play.
230
1f70da6a
SS
231Defines and include files needed to build on the host are host
232support. Examples are tty support, system defined types, host byte
233order, host float format. These are all calculated by @code{autoconf}
234when the debugger is built.
c906108c
SS
235
236Defines and information needed to handle the target format are target
237dependent. Examples are the stack frame format, instruction set,
238breakpoint instruction, registers, and how to set up and tear down the stack
239to call a function.
240
241Information that is only needed when the host and target are the same,
242is native dependent. One example is Unix child process support; if the
1f70da6a 243host and target are not the same, calling @code{fork} to start the target
c906108c
SS
244process is a bad idea. The various macros needed for finding the
245registers in the @code{upage}, running @code{ptrace}, and such are all
246in the native-dependent files.
247
248Another example of native-dependent code is support for features that
249are really part of the target environment, but which require
250@code{#include} files that are only available on the host system. Core
251file handling and @code{setjmp} handling are two common cases.
252
1f70da6a
SS
253When you want to make @value{GDBN} work as the traditional native debugger
254on a system, you will need to supply both target and native information.
c906108c 255
25ab7e6d
EZ
256@section Source Tree Structure
257@cindex @value{GDBN} source tree structure
258
259The @value{GDBN} source directory has a mostly flat structure---there
260are only a few subdirectories. A file's name usually gives a hint as
261to what it does; for example, @file{stabsread.c} reads stabs,
7ce59000 262@file{dwarf2read.c} reads @sc{DWARF 2}, etc.
25ab7e6d
EZ
263
264Files that are related to some common task have names that share
265common substrings. For example, @file{*-thread.c} files deal with
266debugging threads on various platforms; @file{*read.c} files deal with
267reading various kinds of symbol and object files; @file{inf*.c} files
268deal with direct control of the @dfn{inferior program} (@value{GDBN}
269parlance for the program being debugged).
270
271There are several dozens of files in the @file{*-tdep.c} family.
272@samp{tdep} stands for @dfn{target-dependent code}---each of these
273files implements debug support for a specific target architecture
274(sparc, mips, etc). Usually, only one of these will be used in a
275specific @value{GDBN} configuration (sometimes two, closely related).
276
277Similarly, there are many @file{*-nat.c} files, each one for native
278debugging on a specific system (e.g., @file{sparc-linux-nat.c} is for
279native debugging of Sparc machines running the Linux kernel).
280
281The few subdirectories of the source tree are:
282
283@table @file
284@item cli
285Code that implements @dfn{CLI}, the @value{GDBN} Command-Line
286Interpreter. @xref{User Interface, Command Interpreter}.
287
288@item gdbserver
289Code for the @value{GDBN} remote server.
290
291@item gdbtk
292Code for Insight, the @value{GDBN} TK-based GUI front-end.
293
294@item mi
295The @dfn{GDB/MI}, the @value{GDBN} Machine Interface interpreter.
296
297@item signals
298Target signal translation code.
299
300@item tui
301Code for @dfn{TUI}, the @value{GDBN} Text-mode full-screen User
302Interface. @xref{User Interface, TUI}.
303@end table
c906108c
SS
304
305@node Algorithms
306
307@chapter Algorithms
56caf160 308@cindex algorithms
c906108c 309
56caf160
EZ
310@value{GDBN} uses a number of debugging-specific algorithms. They are
311often not very complicated, but get lost in the thicket of special
312cases and real-world issues. This chapter describes the basic
313algorithms and mentions some of the specific target definitions that
314they use.
c906108c 315
7d30c22d
JB
316@section Prologue Analysis
317
318@cindex prologue analysis
319@cindex call frame information
320@cindex CFI (call frame information)
321To produce a backtrace and allow the user to manipulate older frames'
322variables and arguments, @value{GDBN} needs to find the base addresses
323of older frames, and discover where those frames' registers have been
324saved. Since a frame's ``callee-saves'' registers get saved by
325younger frames if and when they're reused, a frame's registers may be
326scattered unpredictably across younger frames. This means that
327changing the value of a register-allocated variable in an older frame
328may actually entail writing to a save slot in some younger frame.
329
330Modern versions of GCC emit Dwarf call frame information (``CFI''),
331which describes how to find frame base addresses and saved registers.
332But CFI is not always available, so as a fallback @value{GDBN} uses a
333technique called @dfn{prologue analysis} to find frame sizes and saved
334registers. A prologue analyzer disassembles the function's machine
335code starting from its entry point, and looks for instructions that
336allocate frame space, save the stack pointer in a frame pointer
337register, save registers, and so on. Obviously, this can't be done
b247355e 338accurately in general, but it's tractable to do well enough to be very
7d30c22d
JB
339helpful. Prologue analysis predates the GNU toolchain's support for
340CFI; at one time, prologue analysis was the only mechanism
341@value{GDBN} used for stack unwinding at all, when the function
342calling conventions didn't specify a fixed frame layout.
343
344In the olden days, function prologues were generated by hand-written,
345target-specific code in GCC, and treated as opaque and untouchable by
346optimizers. Looking at this code, it was usually straightforward to
347write a prologue analyzer for @value{GDBN} that would accurately
348understand all the prologues GCC would generate. However, over time
349GCC became more aggressive about instruction scheduling, and began to
350understand more about the semantics of the prologue instructions
351themselves; in response, @value{GDBN}'s analyzers became more complex
352and fragile. Keeping the prologue analyzers working as GCC (and the
353instruction sets themselves) evolved became a substantial task.
354
355@cindex @file{prologue-value.c}
356@cindex abstract interpretation of function prologues
357@cindex pseudo-evaluation of function prologues
358To try to address this problem, the code in @file{prologue-value.h}
359and @file{prologue-value.c} provides a general framework for writing
360prologue analyzers that are simpler and more robust than ad-hoc
361analyzers. When we analyze a prologue using the prologue-value
362framework, we're really doing ``abstract interpretation'' or
363``pseudo-evaluation'': running the function's code in simulation, but
364using conservative approximations of the values registers and memory
365would hold when the code actually runs. For example, if our function
366starts with the instruction:
367
368@example
369addi r1, 42 # add 42 to r1
370@end example
371@noindent
372we don't know exactly what value will be in @code{r1} after executing
373this instruction, but we do know it'll be 42 greater than its original
374value.
375
376If we then see an instruction like:
377
378@example
379addi r1, 22 # add 22 to r1
380@end example
381@noindent
382we still don't know what @code{r1's} value is, but again, we can say
383it is now 64 greater than its original value.
384
385If the next instruction were:
386
387@example
388mov r2, r1 # set r2 to r1's value
389@end example
390@noindent
391then we can say that @code{r2's} value is now the original value of
392@code{r1} plus 64.
393
394It's common for prologues to save registers on the stack, so we'll
395need to track the values of stack frame slots, as well as the
396registers. So after an instruction like this:
397
398@example
399mov (fp+4), r2
400@end example
401@noindent
402then we'd know that the stack slot four bytes above the frame pointer
403holds the original value of @code{r1} plus 64.
404
405And so on.
406
407Of course, this can only go so far before it gets unreasonable. If we
408wanted to be able to say anything about the value of @code{r1} after
409the instruction:
410
411@example
412xor r1, r3 # exclusive-or r1 and r3, place result in r1
413@end example
414@noindent
415then things would get pretty complex. But remember, we're just doing
416a conservative approximation; if exclusive-or instructions aren't
417relevant to prologues, we can just say @code{r1}'s value is now
418``unknown''. We can ignore things that are too complex, if that loss of
419information is acceptable for our application.
420
421So when we say ``conservative approximation'' here, what we mean is an
422approximation that is either accurate, or marked ``unknown'', but
423never inaccurate.
424
425Using this framework, a prologue analyzer is simply an interpreter for
426machine code, but one that uses conservative approximations for the
427contents of registers and memory instead of actual values. Starting
428from the function's entry point, you simulate instructions up to the
429current PC, or an instruction that you don't know how to simulate.
430Now you can examine the state of the registers and stack slots you've
431kept track of.
432
433@itemize @bullet
434
435@item
436To see how large your stack frame is, just check the value of the
437stack pointer register; if it's the original value of the SP
438minus a constant, then that constant is the stack frame's size.
439If the SP's value has been marked as ``unknown'', then that means
440the prologue has done something too complex for us to track, and
441we don't know the frame size.
442
443@item
444To see where we've saved the previous frame's registers, we just
445search the values we've tracked --- stack slots, usually, but
446registers, too, if you want --- for something equal to the register's
447original value. If the calling conventions suggest a standard place
448to save a given register, then we can check there first, but really,
449anything that will get us back the original value will probably work.
450@end itemize
451
452This does take some work. But prologue analyzers aren't
453quick-and-simple pattern patching to recognize a few fixed prologue
454forms any more; they're big, hairy functions. Along with inferior
455function calls, prologue analysis accounts for a substantial portion
456of the time needed to stabilize a @value{GDBN} port. So it's
457worthwhile to look for an approach that will be easier to understand
458and maintain. In the approach described above:
459
460@itemize @bullet
461
462@item
463It's easier to see that the analyzer is correct: you just see
b247355e 464whether the analyzer properly (albeit conservatively) simulates
7d30c22d
JB
465the effect of each instruction.
466
467@item
468It's easier to extend the analyzer: you can add support for new
469instructions, and know that you haven't broken anything that
470wasn't already broken before.
471
472@item
473It's orthogonal: to gather new information, you don't need to
474complicate the code for each instruction. As long as your domain
475of conservative values is already detailed enough to tell you
476what you need, then all the existing instruction simulations are
477already gathering the right data for you.
478
479@end itemize
480
481The file @file{prologue-value.h} contains detailed comments explaining
482the framework and how to use it.
483
484
c906108c
SS
485@section Breakpoint Handling
486
56caf160 487@cindex breakpoints
c906108c
SS
488In general, a breakpoint is a user-designated location in the program
489where the user wants to regain control if program execution ever reaches
490that location.
491
492There are two main ways to implement breakpoints; either as ``hardware''
493breakpoints or as ``software'' breakpoints.
494
56caf160
EZ
495@cindex hardware breakpoints
496@cindex program counter
c906108c
SS
497Hardware breakpoints are sometimes available as a builtin debugging
498features with some chips. Typically these work by having dedicated
499register into which the breakpoint address may be stored. If the PC
56caf160 500(shorthand for @dfn{program counter})
c906108c 501ever matches a value in a breakpoint registers, the CPU raises an
56caf160
EZ
502exception and reports it to @value{GDBN}.
503
504Another possibility is when an emulator is in use; many emulators
505include circuitry that watches the address lines coming out from the
506processor, and force it to stop if the address matches a breakpoint's
507address.
508
509A third possibility is that the target already has the ability to do
510breakpoints somehow; for instance, a ROM monitor may do its own
511software breakpoints. So although these are not literally ``hardware
512breakpoints'', from @value{GDBN}'s point of view they work the same;
50e3ee83 513@value{GDBN} need not do anything more than set the breakpoint and wait
56caf160 514for something to happen.
c906108c
SS
515
516Since they depend on hardware resources, hardware breakpoints may be
56caf160 517limited in number; when the user asks for more, @value{GDBN} will
9742079a 518start trying to set software breakpoints. (On some architectures,
937f164b 519notably the 32-bit x86 platforms, @value{GDBN} cannot always know
9742079a
EZ
520whether there's enough hardware resources to insert all the hardware
521breakpoints and watchpoints. On those platforms, @value{GDBN} prints
522an error message only when the program being debugged is continued.)
56caf160
EZ
523
524@cindex software breakpoints
525Software breakpoints require @value{GDBN} to do somewhat more work.
526The basic theory is that @value{GDBN} will replace a program
527instruction with a trap, illegal divide, or some other instruction
528that will cause an exception, and then when it's encountered,
529@value{GDBN} will take the exception and stop the program. When the
530user says to continue, @value{GDBN} will restore the original
c906108c
SS
531instruction, single-step, re-insert the trap, and continue on.
532
533Since it literally overwrites the program being tested, the program area
be9c6c35 534must be writable, so this technique won't work on programs in ROM. It
c906108c 535can also distort the behavior of programs that examine themselves,
56caf160 536although such a situation would be highly unusual.
c906108c
SS
537
538Also, the software breakpoint instruction should be the smallest size of
539instruction, so it doesn't overwrite an instruction that might be a jump
540target, and cause disaster when the program jumps into the middle of the
541breakpoint instruction. (Strictly speaking, the breakpoint must be no
542larger than the smallest interval between instructions that may be jump
543targets; perhaps there is an architecture where only even-numbered
544instructions may jumped to.) Note that it's possible for an instruction
545set not to have any instructions usable for a software breakpoint,
546although in practice only the ARC has failed to define such an
547instruction.
548
c906108c
SS
549Basic breakpoint object handling is in @file{breakpoint.c}. However,
550much of the interesting breakpoint action is in @file{infrun.c}.
551
8181d85f
DJ
552@table @code
553@cindex insert or remove software breakpoint
554@findex target_remove_breakpoint
555@findex target_insert_breakpoint
556@item target_remove_breakpoint (@var{bp_tgt})
557@itemx target_insert_breakpoint (@var{bp_tgt})
558Insert or remove a software breakpoint at address
559@code{@var{bp_tgt}->placed_address}. Returns zero for success,
560non-zero for failure. On input, @var{bp_tgt} contains the address of the
561breakpoint, and is otherwise initialized to zero. The fields of the
562@code{struct bp_target_info} pointed to by @var{bp_tgt} are updated
563to contain other information about the breakpoint on output. The field
564@code{placed_address} may be updated if the breakpoint was placed at a
565related address; the field @code{shadow_contents} contains the real
566contents of the bytes where the breakpoint has been inserted,
567if reading memory would return the breakpoint instead of the
568underlying memory; the field @code{shadow_len} is the length of
569memory cached in @code{shadow_contents}, if any; and the field
570@code{placed_size} is optionally set and used by the target, if
571it could differ from @code{shadow_len}.
572
573For example, the remote target @samp{Z0} packet does not require
574shadowing memory, so @code{shadow_len} is left at zero. However,
4a9bb1df 575the length reported by @code{gdbarch_breakpoint_from_pc} is cached in
8181d85f
DJ
576@code{placed_size}, so that a matching @samp{z0} packet can be
577used to remove the breakpoint.
578
579@cindex insert or remove hardware breakpoint
580@findex target_remove_hw_breakpoint
581@findex target_insert_hw_breakpoint
582@item target_remove_hw_breakpoint (@var{bp_tgt})
583@itemx target_insert_hw_breakpoint (@var{bp_tgt})
584Insert or remove a hardware-assisted breakpoint at address
585@code{@var{bp_tgt}->placed_address}. Returns zero for success,
586non-zero for failure. See @code{target_insert_breakpoint} for
587a description of the @code{struct bp_target_info} pointed to by
588@var{bp_tgt}; the @code{shadow_contents} and
589@code{shadow_len} members are not used for hardware breakpoints,
590but @code{placed_size} may be.
591@end table
592
c906108c
SS
593@section Single Stepping
594
595@section Signal Handling
596
597@section Thread Handling
598
599@section Inferior Function Calls
600
601@section Longjmp Support
602
56caf160 603@cindex @code{longjmp} debugging
25822942 604@value{GDBN} has support for figuring out that the target is doing a
c906108c
SS
605@code{longjmp} and for stopping at the target of the jump, if we are
606stepping. This is done with a few specialized internal breakpoints,
56caf160
EZ
607which are visible in the output of the @samp{maint info breakpoint}
608command.
c906108c 609
4a9bb1df
UW
610@findex gdbarch_get_longjmp_target
611To make this work, you need to define a function called
1f70da6a
SS
612@code{gdbarch_get_longjmp_target}, which will examine the
613@code{jmp_buf} structure and extract the @code{longjmp} target address.
614Since @code{jmp_buf} is target specific and typically defined in a
615target header not available to @value{GDBN}, you will need to
616determine the offset of the PC manually and return that; many targets
617define a @code{jb_pc_offset} field in the tdep structure to save the
618value once calculated.
c906108c 619
9742079a
EZ
620@section Watchpoints
621@cindex watchpoints
622
623Watchpoints are a special kind of breakpoints (@pxref{Algorithms,
624breakpoints}) which break when data is accessed rather than when some
625instruction is executed. When you have data which changes without
626your knowing what code does that, watchpoints are the silver bullet to
627hunt down and kill such bugs.
628
629@cindex hardware watchpoints
630@cindex software watchpoints
631Watchpoints can be either hardware-assisted or not; the latter type is
632known as ``software watchpoints.'' @value{GDBN} always uses
633hardware-assisted watchpoints if they are available, and falls back on
634software watchpoints otherwise. Typical situations where @value{GDBN}
635will use software watchpoints are:
636
637@itemize @bullet
638@item
639The watched memory region is too large for the underlying hardware
640watchpoint support. For example, each x86 debug register can watch up
641to 4 bytes of memory, so trying to watch data structures whose size is
642more than 16 bytes will cause @value{GDBN} to use software
643watchpoints.
644
645@item
646The value of the expression to be watched depends on data held in
647registers (as opposed to memory).
648
649@item
650Too many different watchpoints requested. (On some architectures,
651this situation is impossible to detect until the debugged program is
652resumed.) Note that x86 debug registers are used both for hardware
653breakpoints and for watchpoints, so setting too many hardware
654breakpoints might cause watchpoint insertion to fail.
655
656@item
657No hardware-assisted watchpoints provided by the target
658implementation.
659@end itemize
660
661Software watchpoints are very slow, since @value{GDBN} needs to
662single-step the program being debugged and test the value of the
663watched expression(s) after each instruction. The rest of this
664section is mostly irrelevant for software watchpoints.
665
b6b8ece6
EZ
666When the inferior stops, @value{GDBN} tries to establish, among other
667possible reasons, whether it stopped due to a watchpoint being hit.
d983da9c
DJ
668It first uses @code{STOPPED_BY_WATCHPOINT} to see if any watchpoint
669was hit. If not, all watchpoint checking is skipped.
670
671Then @value{GDBN} calls @code{target_stopped_data_address} exactly
672once. This method returns the address of the watchpoint which
673triggered, if the target can determine it. If the triggered address
674is available, @value{GDBN} compares the address returned by this
675method with each watched memory address in each active watchpoint.
676For data-read and data-access watchpoints, @value{GDBN} announces
677every watchpoint that watches the triggered address as being hit.
678For this reason, data-read and data-access watchpoints
679@emph{require} that the triggered address be available; if not, read
680and access watchpoints will never be considered hit. For data-write
681watchpoints, if the triggered address is available, @value{GDBN}
682considers only those watchpoints which match that address;
683otherwise, @value{GDBN} considers all data-write watchpoints. For
684each data-write watchpoint that @value{GDBN} considers, it evaluates
685the expression whose value is being watched, and tests whether the
686watched value has changed. Watchpoints whose watched values have
687changed are announced as hit.
b6b8ece6 688
1f70da6a
SS
689@c FIXME move these to the main lists of target/native defns
690
9742079a
EZ
691@value{GDBN} uses several macros and primitives to support hardware
692watchpoints:
693
694@table @code
9742079a
EZ
695@findex TARGET_CAN_USE_HARDWARE_WATCHPOINT
696@item TARGET_CAN_USE_HARDWARE_WATCHPOINT (@var{type}, @var{count}, @var{other})
697Return the number of hardware watchpoints of type @var{type} that are
698possible to be set. The value is positive if @var{count} watchpoints
699of this type can be set, zero if setting watchpoints of this type is
700not supported, and negative if @var{count} is more than the maximum
701number of watchpoints of type @var{type} that can be set. @var{other}
702is non-zero if other types of watchpoints are currently enabled (there
703are architectures which cannot set watchpoints of different types at
704the same time).
705
706@findex TARGET_REGION_OK_FOR_HW_WATCHPOINT
707@item TARGET_REGION_OK_FOR_HW_WATCHPOINT (@var{addr}, @var{len})
708Return non-zero if hardware watchpoints can be used to watch a region
709whose address is @var{addr} and whose length in bytes is @var{len}.
710
b6b8ece6 711@cindex insert or remove hardware watchpoint
9742079a
EZ
712@findex target_insert_watchpoint
713@findex target_remove_watchpoint
714@item target_insert_watchpoint (@var{addr}, @var{len}, @var{type})
715@itemx target_remove_watchpoint (@var{addr}, @var{len}, @var{type})
716Insert or remove a hardware watchpoint starting at @var{addr}, for
717@var{len} bytes. @var{type} is the watchpoint type, one of the
718possible values of the enumerated data type @code{target_hw_bp_type},
719defined by @file{breakpoint.h} as follows:
720
474c8240 721@smallexample
9742079a
EZ
722 enum target_hw_bp_type
723 @{
724 hw_write = 0, /* Common (write) HW watchpoint */
725 hw_read = 1, /* Read HW watchpoint */
726 hw_access = 2, /* Access (read or write) HW watchpoint */
727 hw_execute = 3 /* Execute HW breakpoint */
728 @};
474c8240 729@end smallexample
9742079a
EZ
730
731@noindent
732These two macros should return 0 for success, non-zero for failure.
733
9742079a 734@findex target_stopped_data_address
ac77d04f
JJ
735@item target_stopped_data_address (@var{addr_p})
736If the inferior has some watchpoint that triggered, place the address
737associated with the watchpoint at the location pointed to by
d983da9c
DJ
738@var{addr_p} and return non-zero. Otherwise, return zero. This
739is required for data-read and data-access watchpoints. It is
740not required for data-write watchpoints, but @value{GDBN} uses
741it to improve handling of those also.
742
743@value{GDBN} will only call this method once per watchpoint stop,
744immediately after calling @code{STOPPED_BY_WATCHPOINT}. If the
745target's watchpoint indication is sticky, i.e., stays set after
746resuming, this method should clear it. For instance, the x86 debug
747control register has sticky triggered flags.
9742079a 748
5009afc5
AS
749@findex target_watchpoint_addr_within_range
750@item target_watchpoint_addr_within_range (@var{target}, @var{addr}, @var{start}, @var{length})
751Check whether @var{addr} (as returned by @code{target_stopped_data_address})
752lies within the hardware-defined watchpoint region described by
753@var{start} and @var{length}. This only needs to be provided if the
754granularity of a watchpoint is greater than one byte, i.e., if the
755watchpoint can also trigger on nearby addresses outside of the watched
756region.
757
9742079a
EZ
758@findex HAVE_STEPPABLE_WATCHPOINT
759@item HAVE_STEPPABLE_WATCHPOINT
760If defined to a non-zero value, it is not necessary to disable a
5009afc5 761watchpoint to step over it. Like @code{gdbarch_have_nonsteppable_watchpoint},
d983da9c
DJ
762this is usually set when watchpoints trigger at the instruction
763which will perform an interesting read or write. It should be
764set if there is a temporary disable bit which allows the processor
765to step over the interesting instruction without raising the
766watchpoint exception again.
9742079a 767
4a9bb1df
UW
768@findex gdbarch_have_nonsteppable_watchpoint
769@item int gdbarch_have_nonsteppable_watchpoint (@var{gdbarch})
770If it returns a non-zero value, @value{GDBN} should disable a
d983da9c
DJ
771watchpoint to step the inferior over it. This is usually set when
772watchpoints trigger at the instruction which will perform an
773interesting read or write.
9742079a
EZ
774
775@findex HAVE_CONTINUABLE_WATCHPOINT
776@item HAVE_CONTINUABLE_WATCHPOINT
777If defined to a non-zero value, it is possible to continue the
d983da9c
DJ
778inferior after a watchpoint has been hit. This is usually set
779when watchpoints trigger at the instruction following an interesting
780read or write.
9742079a 781
9742079a
EZ
782@findex STOPPED_BY_WATCHPOINT
783@item STOPPED_BY_WATCHPOINT (@var{wait_status})
784Return non-zero if stopped by a watchpoint. @var{wait_status} is of
785the type @code{struct target_waitstatus}, defined by @file{target.h}.
b6b8ece6
EZ
786Normally, this macro is defined to invoke the function pointed to by
787the @code{to_stopped_by_watchpoint} member of the structure (of the
788type @code{target_ops}, defined on @file{target.h}) that describes the
789target-specific operations; @code{to_stopped_by_watchpoint} ignores
790the @var{wait_status} argument.
791
792@value{GDBN} does not require the non-zero value returned by
793@code{STOPPED_BY_WATCHPOINT} to be 100% correct, so if a target cannot
794determine for sure whether the inferior stopped due to a watchpoint,
795it could return non-zero ``just in case''.
9742079a
EZ
796@end table
797
d983da9c
DJ
798@subsection Watchpoints and Threads
799@cindex watchpoints, with threads
800
801@value{GDBN} only supports process-wide watchpoints, which trigger
802in all threads. @value{GDBN} uses the thread ID to make watchpoints
803act as if they were thread-specific, but it cannot set hardware
804watchpoints that only trigger in a specific thread. Therefore, even
805if the target supports threads, per-thread debug registers, and
806watchpoints which only affect a single thread, it should set the
807per-thread debug registers for all threads to the same value. On
808@sc{gnu}/Linux native targets, this is accomplished by using
809@code{ALL_LWPS} in @code{target_insert_watchpoint} and
810@code{target_remove_watchpoint} and by using
811@code{linux_set_new_thread} to register a handler for newly created
812threads.
813
814@value{GDBN}'s @sc{gnu}/Linux support only reports a single event
815at a time, although multiple events can trigger simultaneously for
816multi-threaded programs. When multiple events occur, @file{linux-nat.c}
817queues subsequent events and returns them the next time the program
818is resumed. This means that @code{STOPPED_BY_WATCHPOINT} and
819@code{target_stopped_data_address} only need to consult the current
820thread's state---the thread indicated by @code{inferior_ptid}. If
821two threads have hit watchpoints simultaneously, those routines
822will be called a second time for the second thread.
823
9742079a
EZ
824@subsection x86 Watchpoints
825@cindex x86 debug registers
826@cindex watchpoints, on x86
827
828The 32-bit Intel x86 (a.k.a.@: ia32) processors feature special debug
829registers designed to facilitate debugging. @value{GDBN} provides a
830generic library of functions that x86-based ports can use to implement
831support for watchpoints and hardware-assisted breakpoints. This
832subsection documents the x86 watchpoint facilities in @value{GDBN}.
833
1f70da6a
SS
834(At present, the library functions read and write debug registers directly, and are
835thus only available for native configurations.)
836
9742079a
EZ
837To use the generic x86 watchpoint support, a port should do the
838following:
839
840@itemize @bullet
841@findex I386_USE_GENERIC_WATCHPOINTS
842@item
843Define the macro @code{I386_USE_GENERIC_WATCHPOINTS} somewhere in the
844target-dependent headers.
845
846@item
847Include the @file{config/i386/nm-i386.h} header file @emph{after}
848defining @code{I386_USE_GENERIC_WATCHPOINTS}.
849
850@item
851Add @file{i386-nat.o} to the value of the Make variable
f0323ca0 852@code{NATDEPFILES} (@pxref{Native Debugging, NATDEPFILES}).
9742079a
EZ
853
854@item
855Provide implementations for the @code{I386_DR_LOW_*} macros described
856below. Typically, each macro should call a target-specific function
857which does the real work.
858@end itemize
859
860The x86 watchpoint support works by maintaining mirror images of the
861debug registers. Values are copied between the mirror images and the
862real debug registers via a set of macros which each target needs to
863provide:
864
865@table @code
866@findex I386_DR_LOW_SET_CONTROL
867@item I386_DR_LOW_SET_CONTROL (@var{val})
868Set the Debug Control (DR7) register to the value @var{val}.
869
870@findex I386_DR_LOW_SET_ADDR
871@item I386_DR_LOW_SET_ADDR (@var{idx}, @var{addr})
872Put the address @var{addr} into the debug register number @var{idx}.
873
874@findex I386_DR_LOW_RESET_ADDR
875@item I386_DR_LOW_RESET_ADDR (@var{idx})
876Reset (i.e.@: zero out) the address stored in the debug register
877number @var{idx}.
878
879@findex I386_DR_LOW_GET_STATUS
880@item I386_DR_LOW_GET_STATUS
881Return the value of the Debug Status (DR6) register. This value is
882used immediately after it is returned by
883@code{I386_DR_LOW_GET_STATUS}, so as to support per-thread status
884register values.
885@end table
886
887For each one of the 4 debug registers (whose indices are from 0 to 3)
888that store addresses, a reference count is maintained by @value{GDBN},
889to allow sharing of debug registers by several watchpoints. This
890allows users to define several watchpoints that watch the same
891expression, but with different conditions and/or commands, without
892wasting debug registers which are in short supply. @value{GDBN}
893maintains the reference counts internally, targets don't have to do
894anything to use this feature.
895
896The x86 debug registers can each watch a region that is 1, 2, or 4
897bytes long. The ia32 architecture requires that each watched region
898be appropriately aligned: 2-byte region on 2-byte boundary, 4-byte
899region on 4-byte boundary. However, the x86 watchpoint support in
900@value{GDBN} can watch unaligned regions and regions larger than 4
901bytes (up to 16 bytes) by allocating several debug registers to watch
902a single region. This allocation of several registers per a watched
903region is also done automatically without target code intervention.
904
905The generic x86 watchpoint support provides the following API for the
906@value{GDBN}'s application code:
907
908@table @code
909@findex i386_region_ok_for_watchpoint
910@item i386_region_ok_for_watchpoint (@var{addr}, @var{len})
911The macro @code{TARGET_REGION_OK_FOR_HW_WATCHPOINT} is set to call
912this function. It counts the number of debug registers required to
913watch a given region, and returns a non-zero value if that number is
914less than 4, the number of debug registers available to x86
915processors.
916
917@findex i386_stopped_data_address
ac77d04f
JJ
918@item i386_stopped_data_address (@var{addr_p})
919The target function
920@code{target_stopped_data_address} is set to call this function.
921This
9742079a
EZ
922function examines the breakpoint condition bits in the DR6 Debug
923Status register, as returned by the @code{I386_DR_LOW_GET_STATUS}
924macro, and returns the address associated with the first bit that is
925set in DR6.
926
ac77d04f
JJ
927@findex i386_stopped_by_watchpoint
928@item i386_stopped_by_watchpoint (void)
929The macro @code{STOPPED_BY_WATCHPOINT}
930is set to call this function. The
931argument passed to @code{STOPPED_BY_WATCHPOINT} is ignored. This
932function examines the breakpoint condition bits in the DR6 Debug
933Status register, as returned by the @code{I386_DR_LOW_GET_STATUS}
934macro, and returns true if any bit is set. Otherwise, false is
935returned.
936
9742079a
EZ
937@findex i386_insert_watchpoint
938@findex i386_remove_watchpoint
939@item i386_insert_watchpoint (@var{addr}, @var{len}, @var{type})
940@itemx i386_remove_watchpoint (@var{addr}, @var{len}, @var{type})
941Insert or remove a watchpoint. The macros
942@code{target_insert_watchpoint} and @code{target_remove_watchpoint}
943are set to call these functions. @code{i386_insert_watchpoint} first
944looks for a debug register which is already set to watch the same
945region for the same access types; if found, it just increments the
946reference count of that debug register, thus implementing debug
947register sharing between watchpoints. If no such register is found,
937f164b
FF
948the function looks for a vacant debug register, sets its mirrored
949value to @var{addr}, sets the mirrored value of DR7 Debug Control
9742079a
EZ
950register as appropriate for the @var{len} and @var{type} parameters,
951and then passes the new values of the debug register and DR7 to the
952inferior by calling @code{I386_DR_LOW_SET_ADDR} and
953@code{I386_DR_LOW_SET_CONTROL}. If more than one debug register is
954required to cover the given region, the above process is repeated for
955each debug register.
956
957@code{i386_remove_watchpoint} does the opposite: it resets the address
937f164b
FF
958in the mirrored value of the debug register and its read/write and
959length bits in the mirrored value of DR7, then passes these new
9742079a
EZ
960values to the inferior via @code{I386_DR_LOW_RESET_ADDR} and
961@code{I386_DR_LOW_SET_CONTROL}. If a register is shared by several
962watchpoints, each time a @code{i386_remove_watchpoint} is called, it
963decrements the reference count, and only calls
964@code{I386_DR_LOW_RESET_ADDR} and @code{I386_DR_LOW_SET_CONTROL} when
965the count goes to zero.
966
967@findex i386_insert_hw_breakpoint
968@findex i386_remove_hw_breakpoint
8181d85f
DJ
969@item i386_insert_hw_breakpoint (@var{bp_tgt})
970@itemx i386_remove_hw_breakpoint (@var{bp_tgt})
9742079a
EZ
971These functions insert and remove hardware-assisted breakpoints. The
972macros @code{target_insert_hw_breakpoint} and
973@code{target_remove_hw_breakpoint} are set to call these functions.
8181d85f
DJ
974The argument is a @code{struct bp_target_info *}, as described in
975the documentation for @code{target_insert_breakpoint}.
9742079a
EZ
976These functions work like @code{i386_insert_watchpoint} and
977@code{i386_remove_watchpoint}, respectively, except that they set up
978the debug registers to watch instruction execution, and each
979hardware-assisted breakpoint always requires exactly one debug
980register.
981
9742079a
EZ
982@findex i386_cleanup_dregs
983@item i386_cleanup_dregs (void)
984This function clears all the reference counts, addresses, and control
985bits in the mirror images of the debug registers. It doesn't affect
986the actual debug registers in the inferior process.
987@end table
988
989@noindent
990@strong{Notes:}
991@enumerate 1
992@item
993x86 processors support setting watchpoints on I/O reads or writes.
994However, since no target supports this (as of March 2001), and since
995@code{enum target_hw_bp_type} doesn't even have an enumeration for I/O
996watchpoints, this feature is not yet available to @value{GDBN} running
997on x86.
998
999@item
1000x86 processors can enable watchpoints locally, for the current task
1001only, or globally, for all the tasks. For each debug register,
1002there's a bit in the DR7 Debug Control register that determines
1003whether the associated address is watched locally or globally. The
1004current implementation of x86 watchpoint support in @value{GDBN}
1005always sets watchpoints to be locally enabled, since global
1006watchpoints might interfere with the underlying OS and are probably
1007unavailable in many platforms.
1008@end enumerate
1009
5c95884b
MS
1010@section Checkpoints
1011@cindex checkpoints
1012@cindex restart
1013In the abstract, a checkpoint is a point in the execution history of
1014the program, which the user may wish to return to at some later time.
1015
1016Internally, a checkpoint is a saved copy of the program state, including
1017whatever information is required in order to restore the program to that
1018state at a later time. This can be expected to include the state of
1019registers and memory, and may include external state such as the state
1020of open files and devices.
1021
1022There are a number of ways in which checkpoints may be implemented
b247355e 1023in gdb, e.g.@: as corefiles, as forked processes, and as some opaque
5c95884b
MS
1024method implemented on the target side.
1025
1026A corefile can be used to save an image of target memory and register
1027state, which can in principle be restored later --- but corefiles do
1028not typically include information about external entities such as
1029open files. Currently this method is not implemented in gdb.
1030
1031A forked process can save the state of user memory and registers,
1032as well as some subset of external (kernel) state. This method
1033is used to implement checkpoints on Linux, and in principle might
1034be used on other systems.
1035
b247355e 1036Some targets, e.g.@: simulators, might have their own built-in
5c95884b
MS
1037method for saving checkpoints, and gdb might be able to take
1038advantage of that capability without necessarily knowing any
1039details of how it is done.
1040
1041
bcd7e15f
JB
1042@section Observing changes in @value{GDBN} internals
1043@cindex observer pattern interface
1044@cindex notifications about changes in internals
1045
1046In order to function properly, several modules need to be notified when
1047some changes occur in the @value{GDBN} internals. Traditionally, these
1048modules have relied on several paradigms, the most common ones being
1049hooks and gdb-events. Unfortunately, none of these paradigms was
1050versatile enough to become the standard notification mechanism in
1051@value{GDBN}. The fact that they only supported one ``client'' was also
1052a strong limitation.
1053
1054A new paradigm, based on the Observer pattern of the @cite{Design
1055Patterns} book, has therefore been implemented. The goal was to provide
1056a new interface overcoming the issues with the notification mechanisms
1057previously available. This new interface needed to be strongly typed,
1058easy to extend, and versatile enough to be used as the standard
1059interface when adding new notifications.
1060
1061See @ref{GDB Observers} for a brief description of the observers
1062currently implemented in GDB. The rationale for the current
1063implementation is also briefly discussed.
1064
c906108c
SS
1065@node User Interface
1066
1067@chapter User Interface
1068
1f70da6a
SS
1069@value{GDBN} has several user interfaces, of which the traditional
1070command-line interface is perhaps the most familiar.
c906108c
SS
1071
1072@section Command Interpreter
1073
56caf160 1074@cindex command interpreter
0ee54786 1075@cindex CLI
25822942 1076The command interpreter in @value{GDBN} is fairly simple. It is designed to
c906108c
SS
1077allow for the set of commands to be augmented dynamically, and also
1078has a recursive subcommand capability, where the first argument to
1079a command may itself direct a lookup on a different command list.
1080
56caf160
EZ
1081For instance, the @samp{set} command just starts a lookup on the
1082@code{setlist} command list, while @samp{set thread} recurses
c906108c
SS
1083to the @code{set_thread_cmd_list}.
1084
56caf160
EZ
1085@findex add_cmd
1086@findex add_com
c906108c
SS
1087To add commands in general, use @code{add_cmd}. @code{add_com} adds to
1088the main command list, and should be used for those commands. The usual
cfeada60 1089place to add commands is in the @code{_initialize_@var{xyz}} routines at
9742079a 1090the ends of most source files.
cfeada60 1091
40dd2248
TT
1092@findex add_setshow_cmd
1093@findex add_setshow_cmd_full
1094To add paired @samp{set} and @samp{show} commands, use
1095@code{add_setshow_cmd} or @code{add_setshow_cmd_full}. The former is
1096a slightly simpler interface which is useful when you don't need to
1097further modify the new command structures, while the latter returns
1098the new command structures for manipulation.
1099
56caf160
EZ
1100@cindex deprecating commands
1101@findex deprecate_cmd
cfeada60
FN
1102Before removing commands from the command set it is a good idea to
1103deprecate them for some time. Use @code{deprecate_cmd} on commands or
1104aliases to set the deprecated flag. @code{deprecate_cmd} takes a
1105@code{struct cmd_list_element} as it's first argument. You can use the
1106return value from @code{add_com} or @code{add_cmd} to deprecate the
1107command immediately after it is created.
1108
c72e7388 1109The first time a command is used the user will be warned and offered a
cfeada60 1110replacement (if one exists). Note that the replacement string passed to
d3e8051b 1111@code{deprecate_cmd} should be the full name of the command, i.e., the
cfeada60 1112entire string the user should type at the command line.
c906108c 1113
587afa38 1114@anchor{UI-Independent Output}
0ee54786
EZ
1115@section UI-Independent Output---the @code{ui_out} Functions
1116@c This section is based on the documentation written by Fernando
1117@c Nasser <fnasser@redhat.com>.
1118
1119@cindex @code{ui_out} functions
1120The @code{ui_out} functions present an abstraction level for the
1121@value{GDBN} output code. They hide the specifics of different user
1122interfaces supported by @value{GDBN}, and thus free the programmer
1123from the need to write several versions of the same code, one each for
1124every UI, to produce output.
1125
1126@subsection Overview and Terminology
1127
1128In general, execution of each @value{GDBN} command produces some sort
1129of output, and can even generate an input request.
1130
1131Output can be generated for the following purposes:
1132
1133@itemize @bullet
1134@item
1135to display a @emph{result} of an operation;
1136
1137@item
1138to convey @emph{info} or produce side-effects of a requested
1139operation;
1140
1141@item
1142to provide a @emph{notification} of an asynchronous event (including
1143progress indication of a prolonged asynchronous operation);
1144
1145@item
1146to display @emph{error messages} (including warnings);
1147
1148@item
1149to show @emph{debug data};
1150
1151@item
1152to @emph{query} or prompt a user for input (a special case).
1153@end itemize
1154
1155@noindent
1156This section mainly concentrates on how to build result output,
1157although some of it also applies to other kinds of output.
1158
1159Generation of output that displays the results of an operation
1160involves one or more of the following:
1161
1162@itemize @bullet
1163@item
1164output of the actual data
1165
1166@item
1167formatting the output as appropriate for console output, to make it
1168easily readable by humans
1169
1170@item
1171machine oriented formatting--a more terse formatting to allow for easy
1172parsing by programs which read @value{GDBN}'s output
1173
1174@item
c72e7388
AC
1175annotation, whose purpose is to help legacy GUIs to identify interesting
1176parts in the output
0ee54786
EZ
1177@end itemize
1178
1179The @code{ui_out} routines take care of the first three aspects.
c72e7388
AC
1180Annotations are provided by separate annotation routines. Note that use
1181of annotations for an interface between a GUI and @value{GDBN} is
0ee54786
EZ
1182deprecated.
1183
c72e7388
AC
1184Output can be in the form of a single item, which we call a @dfn{field};
1185a @dfn{list} consisting of identical fields; a @dfn{tuple} consisting of
1186non-identical fields; or a @dfn{table}, which is a tuple consisting of a
1187header and a body. In a BNF-like form:
0ee54786 1188
c72e7388
AC
1189@table @code
1190@item <table> @expansion{}
1191@code{<header> <body>}
1192@item <header> @expansion{}
1193@code{@{ <column> @}}
1194@item <column> @expansion{}
1195@code{<width> <alignment> <title>}
1196@item <body> @expansion{}
1197@code{@{<row>@}}
1198@end table
0ee54786
EZ
1199
1200
1201@subsection General Conventions
1202
c72e7388
AC
1203Most @code{ui_out} routines are of type @code{void}, the exceptions are
1204@code{ui_out_stream_new} (which returns a pointer to the newly created
1205object) and the @code{make_cleanup} routines.
0ee54786 1206
c72e7388
AC
1207The first parameter is always the @code{ui_out} vector object, a pointer
1208to a @code{struct ui_out}.
0ee54786 1209
c72e7388
AC
1210The @var{format} parameter is like in @code{printf} family of functions.
1211When it is present, there must also be a variable list of arguments
1212sufficient used to satisfy the @code{%} specifiers in the supplied
0ee54786
EZ
1213format.
1214
c72e7388
AC
1215When a character string argument is not used in a @code{ui_out} function
1216call, a @code{NULL} pointer has to be supplied instead.
0ee54786
EZ
1217
1218
c72e7388 1219@subsection Table, Tuple and List Functions
0ee54786
EZ
1220
1221@cindex list output functions
1222@cindex table output functions
c72e7388
AC
1223@cindex tuple output functions
1224This section introduces @code{ui_out} routines for building lists,
1225tuples and tables. The routines to output the actual data items
1226(fields) are presented in the next section.
0ee54786 1227
c72e7388
AC
1228To recap: A @dfn{tuple} is a sequence of @dfn{fields}, each field
1229containing information about an object; a @dfn{list} is a sequence of
1230fields where each field describes an identical object.
0ee54786 1231
c72e7388
AC
1232Use the @dfn{table} functions when your output consists of a list of
1233rows (tuples) and the console output should include a heading. Use this
1234even when you are listing just one object but you still want the header.
0ee54786
EZ
1235
1236@cindex nesting level in @code{ui_out} functions
c72e7388
AC
1237Tables can not be nested. Tuples and lists can be nested up to a
1238maximum of five levels.
0ee54786
EZ
1239
1240The overall structure of the table output code is something like this:
1241
474c8240 1242@smallexample
0ee54786
EZ
1243 ui_out_table_begin
1244 ui_out_table_header
c72e7388 1245 @dots{}
0ee54786 1246 ui_out_table_body
c72e7388 1247 ui_out_tuple_begin
0ee54786 1248 ui_out_field_*
c72e7388
AC
1249 @dots{}
1250 ui_out_tuple_end
1251 @dots{}
0ee54786 1252 ui_out_table_end
474c8240 1253@end smallexample
0ee54786 1254
c72e7388 1255Here is the description of table-, tuple- and list-related @code{ui_out}
0ee54786
EZ
1256functions:
1257
c72e7388
AC
1258@deftypefun void ui_out_table_begin (struct ui_out *@var{uiout}, int @var{nbrofcols}, int @var{nr_rows}, const char *@var{tblid})
1259The function @code{ui_out_table_begin} marks the beginning of the output
1260of a table. It should always be called before any other @code{ui_out}
1261function for a given table. @var{nbrofcols} is the number of columns in
1262the table. @var{nr_rows} is the number of rows in the table.
1263@var{tblid} is an optional string identifying the table. The string
1264pointed to by @var{tblid} is copied by the implementation of
1265@code{ui_out_table_begin}, so the application can free the string if it
1266was @code{malloc}ed.
0ee54786
EZ
1267
1268The companion function @code{ui_out_table_end}, described below, marks
1269the end of the table's output.
1270@end deftypefun
1271
c72e7388
AC
1272@deftypefun void ui_out_table_header (struct ui_out *@var{uiout}, int @var{width}, enum ui_align @var{alignment}, const char *@var{colhdr})
1273@code{ui_out_table_header} provides the header information for a single
1274table column. You call this function several times, one each for every
1275column of the table, after @code{ui_out_table_begin}, but before
1276@code{ui_out_table_body}.
0ee54786
EZ
1277
1278The value of @var{width} gives the column width in characters. The
1279value of @var{alignment} is one of @code{left}, @code{center}, and
1280@code{right}, and it specifies how to align the header: left-justify,
1281center, or right-justify it. @var{colhdr} points to a string that
1282specifies the column header; the implementation copies that string, so
c72e7388
AC
1283column header strings in @code{malloc}ed storage can be freed after the
1284call.
0ee54786
EZ
1285@end deftypefun
1286
1287@deftypefun void ui_out_table_body (struct ui_out *@var{uiout})
c72e7388 1288This function delimits the table header from the table body.
0ee54786
EZ
1289@end deftypefun
1290
1291@deftypefun void ui_out_table_end (struct ui_out *@var{uiout})
c72e7388
AC
1292This function signals the end of a table's output. It should be called
1293after the table body has been produced by the list and field output
1294functions.
0ee54786
EZ
1295
1296There should be exactly one call to @code{ui_out_table_end} for each
c72e7388
AC
1297call to @code{ui_out_table_begin}, otherwise the @code{ui_out} functions
1298will signal an internal error.
0ee54786
EZ
1299@end deftypefun
1300
c72e7388 1301The output of the tuples that represent the table rows must follow the
0ee54786 1302call to @code{ui_out_table_body} and precede the call to
c72e7388
AC
1303@code{ui_out_table_end}. You build a tuple by calling
1304@code{ui_out_tuple_begin} and @code{ui_out_tuple_end}, with suitable
0ee54786
EZ
1305calls to functions which actually output fields between them.
1306
c72e7388
AC
1307@deftypefun void ui_out_tuple_begin (struct ui_out *@var{uiout}, const char *@var{id})
1308This function marks the beginning of a tuple output. @var{id} points
1309to an optional string that identifies the tuple; it is copied by the
1310implementation, and so strings in @code{malloc}ed storage can be freed
1311after the call.
1312@end deftypefun
1313
1314@deftypefun void ui_out_tuple_end (struct ui_out *@var{uiout})
1315This function signals an end of a tuple output. There should be exactly
1316one call to @code{ui_out_tuple_end} for each call to
1317@code{ui_out_tuple_begin}, otherwise an internal @value{GDBN} error will
1318be signaled.
1319@end deftypefun
1320
587afa38 1321@deftypefun {struct cleanup *} make_cleanup_ui_out_tuple_begin_end (struct ui_out *@var{uiout}, const char *@var{id})
c72e7388 1322This function first opens the tuple and then establishes a cleanup
a0e0ffdf
DE
1323(@pxref{Misc Guidelines, Cleanups}) to close the tuple.
1324It provides a convenient and correct implementation of the
1325non-portable@footnote{The function cast is not portable ISO C.} code sequence:
c72e7388
AC
1326@smallexample
1327struct cleanup *old_cleanup;
1328ui_out_tuple_begin (uiout, "...");
1329old_cleanup = make_cleanup ((void(*)(void *)) ui_out_tuple_end,
1330 uiout);
1331@end smallexample
1332@end deftypefun
1333
1334@deftypefun void ui_out_list_begin (struct ui_out *@var{uiout}, const char *@var{id})
1335This function marks the beginning of a list output. @var{id} points to
1336an optional string that identifies the list; it is copied by the
1337implementation, and so strings in @code{malloc}ed storage can be freed
1338after the call.
0ee54786
EZ
1339@end deftypefun
1340
1341@deftypefun void ui_out_list_end (struct ui_out *@var{uiout})
c72e7388
AC
1342This function signals an end of a list output. There should be exactly
1343one call to @code{ui_out_list_end} for each call to
1344@code{ui_out_list_begin}, otherwise an internal @value{GDBN} error will
1345be signaled.
1346@end deftypefun
1347
587afa38 1348@deftypefun {struct cleanup *} make_cleanup_ui_out_list_begin_end (struct ui_out *@var{uiout}, const char *@var{id})
c72e7388 1349Similar to @code{make_cleanup_ui_out_tuple_begin_end}, this function
a0e0ffdf
DE
1350opens a list and then establishes cleanup
1351(@pxref{Misc Guidelines, Cleanups})
f66d1690 1352that will close the list.
0ee54786
EZ
1353@end deftypefun
1354
1355@subsection Item Output Functions
1356
1357@cindex item output functions
1358@cindex field output functions
1359@cindex data output
1360The functions described below produce output for the actual data
1361items, or fields, which contain information about the object.
1362
1363Choose the appropriate function accordingly to your particular needs.
1364
1365@deftypefun void ui_out_field_fmt (struct ui_out *@var{uiout}, char *@var{fldname}, char *@var{format}, ...)
1366This is the most general output function. It produces the
1367representation of the data in the variable-length argument list
1368according to formatting specifications in @var{format}, a
1369@code{printf}-like format string. The optional argument @var{fldname}
1370supplies the name of the field. The data items themselves are
1371supplied as additional arguments after @var{format}.
1372
1373This generic function should be used only when it is not possible to
1374use one of the specialized versions (see below).
1375@end deftypefun
1376
c72e7388 1377@deftypefun void ui_out_field_int (struct ui_out *@var{uiout}, const char *@var{fldname}, int @var{value})
0ee54786
EZ
1378This function outputs a value of an @code{int} variable. It uses the
1379@code{"%d"} output conversion specification. @var{fldname} specifies
1380the name of the field.
1381@end deftypefun
8d19fbd2
JJ
1382
1383@deftypefun void ui_out_field_fmt_int (struct ui_out *@var{uiout}, int @var{width}, enum ui_align @var{alignment}, const char *@var{fldname}, int @var{value})
1384This function outputs a value of an @code{int} variable. It differs from
1385@code{ui_out_field_int} in that the caller specifies the desired @var{width} and @var{alignment} of the output.
1386@var{fldname} specifies
1387the name of the field.
1388@end deftypefun
0ee54786 1389
5af949e3
UW
1390@deftypefun void ui_out_field_core_addr (struct ui_out *@var{uiout}, const char *@var{fldname}, struct gdbarch *@var{gdbarch}, CORE_ADDR @var{address})
1391This function outputs an address as appropriate for @var{gdbarch}.
0ee54786
EZ
1392@end deftypefun
1393
c72e7388 1394@deftypefun void ui_out_field_string (struct ui_out *@var{uiout}, const char *@var{fldname}, const char *@var{string})
0ee54786
EZ
1395This function outputs a string using the @code{"%s"} conversion
1396specification.
1397@end deftypefun
1398
1399Sometimes, there's a need to compose your output piece by piece using
1400functions that operate on a stream, such as @code{value_print} or
1401@code{fprintf_symbol_filtered}. These functions accept an argument of
1402the type @code{struct ui_file *}, a pointer to a @code{ui_file} object
1403used to store the data stream used for the output. When you use one
1404of these functions, you need a way to pass their results stored in a
1405@code{ui_file} object to the @code{ui_out} functions. To this end,
1406you first create a @code{ui_stream} object by calling
1407@code{ui_out_stream_new}, pass the @code{stream} member of that
1408@code{ui_stream} object to @code{value_print} and similar functions,
1409and finally call @code{ui_out_field_stream} to output the field you
1410constructed. When the @code{ui_stream} object is no longer needed,
1411you should destroy it and free its memory by calling
1412@code{ui_out_stream_delete}.
1413
587afa38 1414@deftypefun {struct ui_stream *} ui_out_stream_new (struct ui_out *@var{uiout})
0ee54786
EZ
1415This function creates a new @code{ui_stream} object which uses the
1416same output methods as the @code{ui_out} object whose pointer is
1417passed in @var{uiout}. It returns a pointer to the newly created
1418@code{ui_stream} object.
1419@end deftypefun
1420
1421@deftypefun void ui_out_stream_delete (struct ui_stream *@var{streambuf})
1422This functions destroys a @code{ui_stream} object specified by
1423@var{streambuf}.
1424@end deftypefun
1425
c72e7388 1426@deftypefun void ui_out_field_stream (struct ui_out *@var{uiout}, const char *@var{fieldname}, struct ui_stream *@var{streambuf})
0ee54786
EZ
1427This function consumes all the data accumulated in
1428@code{streambuf->stream} and outputs it like
1429@code{ui_out_field_string} does. After a call to
1430@code{ui_out_field_stream}, the accumulated data no longer exists, but
1431the stream is still valid and may be used for producing more fields.
1432@end deftypefun
1433
1434@strong{Important:} If there is any chance that your code could bail
1435out before completing output generation and reaching the point where
1436@code{ui_out_stream_delete} is called, it is necessary to set up a
1437cleanup, to avoid leaking memory and other resources. Here's a
1438skeleton code to do that:
1439
1440@smallexample
1441 struct ui_stream *mybuf = ui_out_stream_new (uiout);
1442 struct cleanup *old = make_cleanup (ui_out_stream_delete, mybuf);
1443 ...
1444 do_cleanups (old);
1445@end smallexample
1446
1447If the function already has the old cleanup chain set (for other kinds
1448of cleanups), you just have to add your cleanup to it:
1449
1450@smallexample
1451 mybuf = ui_out_stream_new (uiout);
1452 make_cleanup (ui_out_stream_delete, mybuf);
1453@end smallexample
1454
1455Note that with cleanups in place, you should not call
1456@code{ui_out_stream_delete} directly, or you would attempt to free the
1457same buffer twice.
1458
1459@subsection Utility Output Functions
1460
c72e7388 1461@deftypefun void ui_out_field_skip (struct ui_out *@var{uiout}, const char *@var{fldname})
0ee54786
EZ
1462This function skips a field in a table. Use it if you have to leave
1463an empty field without disrupting the table alignment. The argument
1464@var{fldname} specifies a name for the (missing) filed.
1465@end deftypefun
1466
c72e7388 1467@deftypefun void ui_out_text (struct ui_out *@var{uiout}, const char *@var{string})
0ee54786
EZ
1468This function outputs the text in @var{string} in a way that makes it
1469easy to be read by humans. For example, the console implementation of
1470this method filters the text through a built-in pager, to prevent it
1471from scrolling off the visible portion of the screen.
1472
1473Use this function for printing relatively long chunks of text around
1474the actual field data: the text it produces is not aligned according
1475to the table's format. Use @code{ui_out_field_string} to output a
1476string field, and use @code{ui_out_message}, described below, to
1477output short messages.
1478@end deftypefun
1479
1480@deftypefun void ui_out_spaces (struct ui_out *@var{uiout}, int @var{nspaces})
1481This function outputs @var{nspaces} spaces. It is handy to align the
1482text produced by @code{ui_out_text} with the rest of the table or
1483list.
1484@end deftypefun
1485
c72e7388 1486@deftypefun void ui_out_message (struct ui_out *@var{uiout}, int @var{verbosity}, const char *@var{format}, ...)
0ee54786
EZ
1487This function produces a formatted message, provided that the current
1488verbosity level is at least as large as given by @var{verbosity}. The
1489current verbosity level is specified by the user with the @samp{set
1490verbositylevel} command.@footnote{As of this writing (April 2001),
1491setting verbosity level is not yet implemented, and is always returned
1492as zero. So calling @code{ui_out_message} with a @var{verbosity}
1493argument more than zero will cause the message to never be printed.}
1494@end deftypefun
1495
1496@deftypefun void ui_out_wrap_hint (struct ui_out *@var{uiout}, char *@var{indent})
1497This function gives the console output filter (a paging filter) a hint
1498of where to break lines which are too long. Ignored for all other
1499output consumers. @var{indent}, if non-@code{NULL}, is the string to
1500be printed to indent the wrapped text on the next line; it must remain
1501accessible until the next call to @code{ui_out_wrap_hint}, or until an
1502explicit newline is produced by one of the other functions. If
1503@var{indent} is @code{NULL}, the wrapped text will not be indented.
1504@end deftypefun
1505
1506@deftypefun void ui_out_flush (struct ui_out *@var{uiout})
1507This function flushes whatever output has been accumulated so far, if
1508the UI buffers output.
1509@end deftypefun
1510
1511
1512@subsection Examples of Use of @code{ui_out} functions
1513
1514@cindex using @code{ui_out} functions
1515@cindex @code{ui_out} functions, usage examples
1516This section gives some practical examples of using the @code{ui_out}
1517functions to generalize the old console-oriented code in
1518@value{GDBN}. The examples all come from functions defined on the
1519@file{breakpoints.c} file.
1520
1521This example, from the @code{breakpoint_1} function, shows how to
1522produce a table.
1523
1524The original code was:
1525
474c8240 1526@smallexample
0ee54786
EZ
1527 if (!found_a_breakpoint++)
1528 @{
1529 annotate_breakpoints_headers ();
1530
1531 annotate_field (0);
1532 printf_filtered ("Num ");
1533 annotate_field (1);
1534 printf_filtered ("Type ");
1535 annotate_field (2);
1536 printf_filtered ("Disp ");
1537 annotate_field (3);
1538 printf_filtered ("Enb ");
1539 if (addressprint)
1540 @{
1541 annotate_field (4);
1542 printf_filtered ("Address ");
1543 @}
1544 annotate_field (5);
1545 printf_filtered ("What\n");
1546
1547 annotate_breakpoints_table ();
1548 @}
474c8240 1549@end smallexample
0ee54786
EZ
1550
1551Here's the new version:
1552
474c8240 1553@smallexample
c72e7388
AC
1554 nr_printable_breakpoints = @dots{};
1555
1556 if (addressprint)
1557 ui_out_table_begin (ui, 6, nr_printable_breakpoints, "BreakpointTable");
1558 else
1559 ui_out_table_begin (ui, 5, nr_printable_breakpoints, "BreakpointTable");
1560
1561 if (nr_printable_breakpoints > 0)
1562 annotate_breakpoints_headers ();
1563 if (nr_printable_breakpoints > 0)
1564 annotate_field (0);
1565 ui_out_table_header (uiout, 3, ui_left, "number", "Num"); /* 1 */
1566 if (nr_printable_breakpoints > 0)
1567 annotate_field (1);
1568 ui_out_table_header (uiout, 14, ui_left, "type", "Type"); /* 2 */
1569 if (nr_printable_breakpoints > 0)
1570 annotate_field (2);
1571 ui_out_table_header (uiout, 4, ui_left, "disp", "Disp"); /* 3 */
1572 if (nr_printable_breakpoints > 0)
1573 annotate_field (3);
1574 ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb"); /* 4 */
1575 if (addressprint)
1576 @{
1577 if (nr_printable_breakpoints > 0)
1578 annotate_field (4);
a6d9a66e 1579 if (print_address_bits <= 32)
c72e7388 1580 ui_out_table_header (uiout, 10, ui_left, "addr", "Address");/* 5 */
0ee54786 1581 else
c72e7388
AC
1582 ui_out_table_header (uiout, 18, ui_left, "addr", "Address");/* 5 */
1583 @}
1584 if (nr_printable_breakpoints > 0)
1585 annotate_field (5);
1586 ui_out_table_header (uiout, 40, ui_noalign, "what", "What"); /* 6 */
1587 ui_out_table_body (uiout);
1588 if (nr_printable_breakpoints > 0)
1589 annotate_breakpoints_table ();
474c8240 1590@end smallexample
0ee54786
EZ
1591
1592This example, from the @code{print_one_breakpoint} function, shows how
1593to produce the actual data for the table whose structure was defined
1594in the above example. The original code was:
1595
474c8240 1596@smallexample
0ee54786
EZ
1597 annotate_record ();
1598 annotate_field (0);
1599 printf_filtered ("%-3d ", b->number);
1600 annotate_field (1);
1601 if ((int)b->type > (sizeof(bptypes)/sizeof(bptypes[0]))
1602 || ((int) b->type != bptypes[(int) b->type].type))
1603 internal_error ("bptypes table does not describe type #%d.",
1604 (int)b->type);
1605 printf_filtered ("%-14s ", bptypes[(int)b->type].description);
1606 annotate_field (2);
1607 printf_filtered ("%-4s ", bpdisps[(int)b->disposition]);
1608 annotate_field (3);
1609 printf_filtered ("%-3c ", bpenables[(int)b->enable]);
c72e7388 1610 @dots{}
474c8240 1611@end smallexample
0ee54786
EZ
1612
1613This is the new version:
1614
474c8240 1615@smallexample
0ee54786 1616 annotate_record ();
c72e7388 1617 ui_out_tuple_begin (uiout, "bkpt");
0ee54786
EZ
1618 annotate_field (0);
1619 ui_out_field_int (uiout, "number", b->number);
1620 annotate_field (1);
1621 if (((int) b->type > (sizeof (bptypes) / sizeof (bptypes[0])))
1622 || ((int) b->type != bptypes[(int) b->type].type))
1623 internal_error ("bptypes table does not describe type #%d.",
1624 (int) b->type);
1625 ui_out_field_string (uiout, "type", bptypes[(int)b->type].description);
1626 annotate_field (2);
1627 ui_out_field_string (uiout, "disp", bpdisps[(int)b->disposition]);
1628 annotate_field (3);
1629 ui_out_field_fmt (uiout, "enabled", "%c", bpenables[(int)b->enable]);
c72e7388 1630 @dots{}
474c8240 1631@end smallexample
0ee54786
EZ
1632
1633This example, also from @code{print_one_breakpoint}, shows how to
1634produce a complicated output field using the @code{print_expression}
1635functions which requires a stream to be passed. It also shows how to
1636automate stream destruction with cleanups. The original code was:
1637
474c8240 1638@smallexample
0ee54786
EZ
1639 annotate_field (5);
1640 print_expression (b->exp, gdb_stdout);
474c8240 1641@end smallexample
0ee54786
EZ
1642
1643The new version is:
1644
474c8240 1645@smallexample
0ee54786
EZ
1646 struct ui_stream *stb = ui_out_stream_new (uiout);
1647 struct cleanup *old_chain = make_cleanup_ui_out_stream_delete (stb);
1648 ...
1649 annotate_field (5);
1650 print_expression (b->exp, stb->stream);
1651 ui_out_field_stream (uiout, "what", local_stream);
474c8240 1652@end smallexample
0ee54786
EZ
1653
1654This example, also from @code{print_one_breakpoint}, shows how to use
1655@code{ui_out_text} and @code{ui_out_field_string}. The original code
1656was:
1657
474c8240 1658@smallexample
0ee54786
EZ
1659 annotate_field (5);
1660 if (b->dll_pathname == NULL)
1661 printf_filtered ("<any library> ");
1662 else
1663 printf_filtered ("library \"%s\" ", b->dll_pathname);
474c8240 1664@end smallexample
0ee54786
EZ
1665
1666It became:
1667
474c8240 1668@smallexample
0ee54786
EZ
1669 annotate_field (5);
1670 if (b->dll_pathname == NULL)
1671 @{
1672 ui_out_field_string (uiout, "what", "<any library>");
1673 ui_out_spaces (uiout, 1);
1674 @}
1675 else
1676 @{
1677 ui_out_text (uiout, "library \"");
1678 ui_out_field_string (uiout, "what", b->dll_pathname);
1679 ui_out_text (uiout, "\" ");
1680 @}
474c8240 1681@end smallexample
0ee54786
EZ
1682
1683The following example from @code{print_one_breakpoint} shows how to
1684use @code{ui_out_field_int} and @code{ui_out_spaces}. The original
1685code was:
1686
474c8240 1687@smallexample
0ee54786
EZ
1688 annotate_field (5);
1689 if (b->forked_inferior_pid != 0)
1690 printf_filtered ("process %d ", b->forked_inferior_pid);
474c8240 1691@end smallexample
0ee54786
EZ
1692
1693It became:
1694
474c8240 1695@smallexample
0ee54786
EZ
1696 annotate_field (5);
1697 if (b->forked_inferior_pid != 0)
1698 @{
1699 ui_out_text (uiout, "process ");
1700 ui_out_field_int (uiout, "what", b->forked_inferior_pid);
1701 ui_out_spaces (uiout, 1);
1702 @}
474c8240 1703@end smallexample
0ee54786
EZ
1704
1705Here's an example of using @code{ui_out_field_string}. The original
1706code was:
1707
474c8240 1708@smallexample
0ee54786
EZ
1709 annotate_field (5);
1710 if (b->exec_pathname != NULL)
1711 printf_filtered ("program \"%s\" ", b->exec_pathname);
474c8240 1712@end smallexample
0ee54786
EZ
1713
1714It became:
1715
474c8240 1716@smallexample
0ee54786
EZ
1717 annotate_field (5);
1718 if (b->exec_pathname != NULL)
1719 @{
1720 ui_out_text (uiout, "program \"");
1721 ui_out_field_string (uiout, "what", b->exec_pathname);
1722 ui_out_text (uiout, "\" ");
1723 @}
474c8240 1724@end smallexample
0ee54786
EZ
1725
1726Finally, here's an example of printing an address. The original code:
1727
474c8240 1728@smallexample
0ee54786
EZ
1729 annotate_field (4);
1730 printf_filtered ("%s ",
15a661f3 1731 hex_string_custom ((unsigned long) b->address, 8));
474c8240 1732@end smallexample
0ee54786
EZ
1733
1734It became:
1735
474c8240 1736@smallexample
0ee54786
EZ
1737 annotate_field (4);
1738 ui_out_field_core_addr (uiout, "Address", b->address);
474c8240 1739@end smallexample
0ee54786
EZ
1740
1741
c906108c
SS
1742@section Console Printing
1743
1744@section TUI
1745
89437448 1746@node libgdb
c906108c 1747
89437448
AC
1748@chapter libgdb
1749
1750@section libgdb 1.0
1751@cindex @code{libgdb}
1752@code{libgdb} 1.0 was an abortive project of years ago. The theory was
1753to provide an API to @value{GDBN}'s functionality.
1754
1755@section libgdb 2.0
56caf160 1756@cindex @code{libgdb}
89437448
AC
1757@code{libgdb} 2.0 is an ongoing effort to update @value{GDBN} so that is
1758better able to support graphical and other environments.
1759
1760Since @code{libgdb} development is on-going, its architecture is still
1761evolving. The following components have so far been identified:
1762
1763@itemize @bullet
1764@item
1765Observer - @file{gdb-events.h}.
1766@item
1767Builder - @file{ui-out.h}
1768@item
1769Event Loop - @file{event-loop.h}
1770@item
1771Library - @file{gdb.h}
1772@end itemize
1773
1774The model that ties these components together is described below.
1775
1776@section The @code{libgdb} Model
1777
1778A client of @code{libgdb} interacts with the library in two ways.
1779
1780@itemize @bullet
1781@item
1782As an observer (using @file{gdb-events}) receiving notifications from
1783@code{libgdb} of any internal state changes (break point changes, run
1784state, etc).
1785@item
1786As a client querying @code{libgdb} (using the @file{ui-out} builder) to
1787obtain various status values from @value{GDBN}.
1788@end itemize
1789
c1468174 1790Since @code{libgdb} could have multiple clients (e.g., a GUI supporting
89437448
AC
1791the existing @value{GDBN} CLI), those clients must co-operate when
1792controlling @code{libgdb}. In particular, a client must ensure that
587afa38 1793@code{libgdb} is idle (i.e.@: no other client is using @code{libgdb})
89437448
AC
1794before responding to a @file{gdb-event} by making a query.
1795
1796@section CLI support
1797
1798At present @value{GDBN}'s CLI is very much entangled in with the core of
1799@code{libgdb}. Consequently, a client wishing to include the CLI in
1800their interface needs to carefully co-ordinate its own and the CLI's
1801requirements.
1802
1803It is suggested that the client set @code{libgdb} up to be bi-modal
1804(alternate between CLI and client query modes). The notes below sketch
1805out the theory:
1806
1807@itemize @bullet
1808@item
1809The client registers itself as an observer of @code{libgdb}.
1810@item
1811The client create and install @code{cli-out} builder using its own
1812versions of the @code{ui-file} @code{gdb_stderr}, @code{gdb_stdtarg} and
1813@code{gdb_stdout} streams.
1814@item
1815The client creates a separate custom @code{ui-out} builder that is only
1816used while making direct queries to @code{libgdb}.
1817@end itemize
1818
1819When the client receives input intended for the CLI, it simply passes it
1820along. Since the @code{cli-out} builder is installed by default, all
1821the CLI output in response to that command is routed (pronounced rooted)
1822through to the client controlled @code{gdb_stdout} et.@: al.@: streams.
1823At the same time, the client is kept abreast of internal changes by
1824virtue of being a @code{libgdb} observer.
1825
1826The only restriction on the client is that it must wait until
1827@code{libgdb} becomes idle before initiating any queries (using the
1828client's custom builder).
1829
1830@section @code{libgdb} components
1831
1832@subheading Observer - @file{gdb-events.h}
1833@file{gdb-events} provides the client with a very raw mechanism that can
1834be used to implement an observer. At present it only allows for one
1835observer and that observer must, internally, handle the need to delay
1836the processing of any event notifications until after @code{libgdb} has
1837finished the current command.
1838
1839@subheading Builder - @file{ui-out.h}
1840@file{ui-out} provides the infrastructure necessary for a client to
1841create a builder. That builder is then passed down to @code{libgdb}
1842when doing any queries.
1843
1844@subheading Event Loop - @file{event-loop.h}
1845@c There could be an entire section on the event-loop
1846@file{event-loop}, currently non-re-entrant, provides a simple event
1847loop. A client would need to either plug its self into this loop or,
587afa38 1848implement a new event-loop that @value{GDBN} would use.
89437448
AC
1849
1850The event-loop will eventually be made re-entrant. This is so that
a9f12a31 1851@value{GDBN} can better handle the problem of some commands blocking
89437448
AC
1852instead of returning.
1853
1854@subheading Library - @file{gdb.h}
1855@file{libgdb} is the most obvious component of this system. It provides
1856the query interface. Each function is parameterized by a @code{ui-out}
1857builder. The result of the query is constructed using that builder
1858before the query function returns.
c906108c 1859
5f5233d4
PA
1860@node Values
1861@chapter Values
1862@section Values
1863
1864@cindex values
1865@cindex @code{value} structure
1866@value{GDBN} uses @code{struct value}, or @dfn{values}, as an internal
1867abstraction for the representation of a variety of inferior objects
1868and @value{GDBN} convenience objects.
1869
1870Values have an associated @code{struct type}, that describes a virtual
1871view of the raw data or object stored in or accessed through the
1872value.
1873
1874A value is in addition discriminated by its lvalue-ness, given its
1875@code{enum lval_type} enumeration type:
1876
1877@cindex @code{lval_type} enumeration, for values.
1878@table @code
1879@item @code{not_lval}
1880This value is not an lval. It can't be assigned to.
1881
1882@item @code{lval_memory}
1883This value represents an object in memory.
1884
1885@item @code{lval_register}
1886This value represents an object that lives in a register.
1887
1888@item @code{lval_internalvar}
1889Represents the value of an internal variable.
1890
1891@item @code{lval_internalvar_component}
1892Represents part of a @value{GDBN} internal variable. E.g., a
1893structure field.
1894
1895@cindex computed values
1896@item @code{lval_computed}
1897These are ``computed'' values. They allow creating specialized value
1898objects for specific purposes, all abstracted away from the core value
1899support code. The creator of such a value writes specialized
1900functions to handle the reading and writing to/from the value's
1901backend data, and optionally, a ``copy operator'' and a
1902``destructor''.
1903
1904Pointers to these functions are stored in a @code{struct lval_funcs}
1905instance (declared in @file{value.h}), and passed to the
1906@code{allocate_computed_value} function, as in the example below.
1907
1908@smallexample
1909static void
1910nil_value_read (struct value *v)
1911@{
1912 /* This callback reads data from some backend, and stores it in V.
1913 In this case, we always read null data. You'll want to fill in
1914 something more interesting. */
1915
1916 memset (value_contents_all_raw (v),
1917 value_offset (v),
1918 TYPE_LENGTH (value_type (v)));
1919@}
1920
1921static void
1922nil_value_write (struct value *v, struct value *fromval)
1923@{
1924 /* Takes the data from FROMVAL and stores it in the backend of V. */
1925
1926 to_oblivion (value_contents_all_raw (fromval),
1927 value_offset (v),
1928 TYPE_LENGTH (value_type (fromval)));
1929@}
1930
1931static struct lval_funcs nil_value_funcs =
1932 @{
1933 nil_value_read,
1934 nil_value_write
1935 @};
1936
1937struct value *
1938make_nil_value (void)
1939@{
1940 struct type *type;
1941 struct value *v;
1942
1943 type = make_nils_type ();
1944 v = allocate_computed_value (type, &nil_value_funcs, NULL);
1945
1946 return v;
1947@}
1948@end smallexample
1949
1950See the implementation of the @code{$_siginfo} convenience variable in
1951@file{infrun.c} as a real example use of lval_computed.
1952
1953@end table
1954
669fac23
DJ
1955@node Stack Frames
1956@chapter Stack Frames
1957
1958@cindex frame
1959@cindex call stack frame
1960A frame is a construct that @value{GDBN} uses to keep track of calling
1961and called functions.
1962
1963@cindex unwind frame
1964@value{GDBN}'s frame model, a fresh design, was implemented with the
1965need to support @sc{dwarf}'s Call Frame Information in mind. In fact,
1966the term ``unwind'' is taken directly from that specification.
1967Developers wishing to learn more about unwinders, are encouraged to
1968read the @sc{dwarf} specification, available from
1969@url{http://www.dwarfstd.org}.
1970
1971@findex frame_register_unwind
1972@findex get_frame_register
1973@value{GDBN}'s model is that you find a frame's registers by
1974``unwinding'' them from the next younger frame. That is,
1975@samp{get_frame_register} which returns the value of a register in
1976frame #1 (the next-to-youngest frame), is implemented by calling frame
1977#0's @code{frame_register_unwind} (the youngest frame). But then the
1978obvious question is: how do you access the registers of the youngest
1979frame itself?
1980
1981@cindex sentinel frame
1982@findex get_frame_type
1983@vindex SENTINEL_FRAME
587afa38 1984To answer this question, @value{GDBN} has the @dfn{sentinel} frame, the
669fac23
DJ
1985``-1st'' frame. Unwinding registers from the sentinel frame gives you
1986the current values of the youngest real frame's registers. If @var{f}
1987is a sentinel frame, then @code{get_frame_type (@var{f}) @equiv{}
1988SENTINEL_FRAME}.
1989
1990@section Selecting an Unwinder
1991
1992@findex frame_unwind_prepend_unwinder
1993@findex frame_unwind_append_unwinder
1994The architecture registers a list of frame unwinders (@code{struct
1995frame_unwind}), using the functions
1996@code{frame_unwind_prepend_unwinder} and
1997@code{frame_unwind_append_unwinder}. Each unwinder includes a
1998sniffer. Whenever @value{GDBN} needs to unwind a frame (to fetch the
1999previous frame's registers or the current frame's ID), it calls
2000registered sniffers in order to find one which recognizes the frame.
2001The first time a sniffer returns non-zero, the corresponding unwinder
2002is assigned to the frame.
2003
2004@section Unwinding the Frame ID
2005@cindex frame ID
2006
2007Every frame has an associated ID, of type @code{struct frame_id}.
2008The ID includes the stack base and function start address for
2009the frame. The ID persists through the entire life of the frame,
2010including while other called frames are running; it is used to
2011locate an appropriate @code{struct frame_info} from the cache.
2012
2013Every time the inferior stops, and at various other times, the frame
2014cache is flushed. Because of this, parts of @value{GDBN} which need
2015to keep track of individual frames cannot use pointers to @code{struct
2016frame_info}. A frame ID provides a stable reference to a frame, even
2017when the unwinder must be run again to generate a new @code{struct
2018frame_info} for the same frame.
2019
2020The frame's unwinder's @code{this_id} method is called to find the ID.
2021Note that this is different from register unwinding, where the next
2022frame's @code{prev_register} is called to unwind this frame's
2023registers.
2024
2025Both stack base and function address are required to identify the
2026frame, because a recursive function has the same function address for
2027two consecutive frames and a leaf function may have the same stack
2028address as its caller. On some platforms, a third address is part of
2029the ID to further disambiguate frames---for instance, on IA-64
2030the separate register stack address is included in the ID.
2031
005ca36a 2032An invalid frame ID (@code{outer_frame_id}) returned from the
669fac23
DJ
2033@code{this_id} method means to stop unwinding after this frame.
2034
005ca36a
JB
2035@code{null_frame_id} is another invalid frame ID which should be used
2036when there is no frame. For instance, certain breakpoints are attached
2037to a specific frame, and that frame is identified through its frame ID
2038(we use this to implement the "finish" command). Using
2039@code{null_frame_id} as the frame ID for a given breakpoint means
2040that the breakpoint is not specific to any frame. The @code{this_id}
2041method should never return @code{null_frame_id}.
2042
669fac23
DJ
2043@section Unwinding Registers
2044
2045Each unwinder includes a @code{prev_register} method. This method
2046takes a frame, an associated cache pointer, and a register number.
2047It returns a @code{struct value *} describing the requested register,
2048as saved by this frame. This is the value of the register that is
2049current in this frame's caller.
2050
2051The returned value must have the same type as the register. It may
2052have any lvalue type. In most circumstances one of these routines
2053will generate the appropriate value:
2054
2055@table @code
2056@item frame_unwind_got_optimized
2057@findex frame_unwind_got_optimized
2058This register was not saved.
2059
2060@item frame_unwind_got_register
2061@findex frame_unwind_got_register
2062This register was copied into another register in this frame. This
2063is also used for unchanged registers; they are ``copied'' into the
2064same register.
2065
2066@item frame_unwind_got_memory
2067@findex frame_unwind_got_memory
2068This register was saved in memory.
2069
2070@item frame_unwind_got_constant
2071@findex frame_unwind_got_constant
2072This register was not saved, but the unwinder can compute the previous
2073value some other way.
2074
2075@item frame_unwind_got_address
2076@findex frame_unwind_got_address
2077Same as @code{frame_unwind_got_constant}, except that the value is a target
2078address. This is frequently used for the stack pointer, which is not
2079explicitly saved but has a known offset from this frame's stack
2080pointer. For architectures with a flat unified address space, this is
2081generally the same as @code{frame_unwind_got_constant}.
2082@end table
2083
c906108c
SS
2084@node Symbol Handling
2085
2086@chapter Symbol Handling
2087
1f70da6a
SS
2088Symbols are a key part of @value{GDBN}'s operation. Symbols include
2089variables, functions, and types.
2090
2091Symbol information for a large program can be truly massive, and
2092reading of symbol information is one of the major performance
2093bottlenecks in @value{GDBN}; it can take many minutes to process it
2094all. Studies have shown that nearly all the time spent is
2095computational, rather than file reading.
2096
2097One of the ways for @value{GDBN} to provide a good user experience is
2098to start up quickly, taking no more than a few seconds. It is simply
2099not possible to process all of a program's debugging info in that
2100time, and so we attempt to handle symbols incrementally. For instance,
2101we create @dfn{partial symbol tables} consisting of only selected
2102symbols, and only expand them to full symbol tables when necessary.
c906108c
SS
2103
2104@section Symbol Reading
2105
56caf160
EZ
2106@cindex symbol reading
2107@cindex reading of symbols
2108@cindex symbol files
2109@value{GDBN} reads symbols from @dfn{symbol files}. The usual symbol
2110file is the file containing the program which @value{GDBN} is
2111debugging. @value{GDBN} can be directed to use a different file for
2112symbols (with the @samp{symbol-file} command), and it can also read
1f70da6a
SS
2113more symbols via the @samp{add-file} and @samp{load} commands. In
2114addition, it may bring in more symbols while loading shared
2115libraries.
56caf160
EZ
2116
2117@findex find_sym_fns
2118Symbol files are initially opened by code in @file{symfile.c} using
2119the BFD library (@pxref{Support Libraries}). BFD identifies the type
2120of the file by examining its header. @code{find_sym_fns} then uses
2121this identification to locate a set of symbol-reading functions.
2122
2123@findex add_symtab_fns
2124@cindex @code{sym_fns} structure
2125@cindex adding a symbol-reading module
2126Symbol-reading modules identify themselves to @value{GDBN} by calling
c906108c
SS
2127@code{add_symtab_fns} during their module initialization. The argument
2128to @code{add_symtab_fns} is a @code{struct sym_fns} which contains the
2129name (or name prefix) of the symbol format, the length of the prefix,
2130and pointers to four functions. These functions are called at various
56caf160 2131times to process symbol files whose identification matches the specified
c906108c
SS
2132prefix.
2133
2134The functions supplied by each module are:
2135
2136@table @code
2137@item @var{xyz}_symfile_init(struct sym_fns *sf)
2138
56caf160 2139@cindex secondary symbol file
c906108c
SS
2140Called from @code{symbol_file_add} when we are about to read a new
2141symbol file. This function should clean up any internal state (possibly
2142resulting from half-read previous files, for example) and prepare to
56caf160
EZ
2143read a new symbol file. Note that the symbol file which we are reading
2144might be a new ``main'' symbol file, or might be a secondary symbol file
c906108c
SS
2145whose symbols are being added to the existing symbol table.
2146
2147The argument to @code{@var{xyz}_symfile_init} is a newly allocated
2148@code{struct sym_fns} whose @code{bfd} field contains the BFD for the
2149new symbol file being read. Its @code{private} field has been zeroed,
2150and can be modified as desired. Typically, a struct of private
2151information will be @code{malloc}'d, and a pointer to it will be placed
2152in the @code{private} field.
2153
2154There is no result from @code{@var{xyz}_symfile_init}, but it can call
2155@code{error} if it detects an unavoidable problem.
2156
2157@item @var{xyz}_new_init()
2158
2159Called from @code{symbol_file_add} when discarding existing symbols.
56caf160
EZ
2160This function needs only handle the symbol-reading module's internal
2161state; the symbol table data structures visible to the rest of
2162@value{GDBN} will be discarded by @code{symbol_file_add}. It has no
2163arguments and no result. It may be called after
2164@code{@var{xyz}_symfile_init}, if a new symbol table is being read, or
2165may be called alone if all symbols are simply being discarded.
c906108c
SS
2166
2167@item @var{xyz}_symfile_read(struct sym_fns *sf, CORE_ADDR addr, int mainline)
2168
2169Called from @code{symbol_file_add} to actually read the symbols from a
2170symbol-file into a set of psymtabs or symtabs.
2171
56caf160 2172@code{sf} points to the @code{struct sym_fns} originally passed to
c906108c
SS
2173@code{@var{xyz}_sym_init} for possible initialization. @code{addr} is
2174the offset between the file's specified start address and its true
2175address in memory. @code{mainline} is 1 if this is the main symbol
c1468174 2176table being read, and 0 if a secondary symbol file (e.g., shared library
c906108c
SS
2177or dynamically loaded file) is being read.@refill
2178@end table
2179
2180In addition, if a symbol-reading module creates psymtabs when
2181@var{xyz}_symfile_read is called, these psymtabs will contain a pointer
2182to a function @code{@var{xyz}_psymtab_to_symtab}, which can be called
25822942 2183from any point in the @value{GDBN} symbol-handling code.
c906108c
SS
2184
2185@table @code
2186@item @var{xyz}_psymtab_to_symtab (struct partial_symtab *pst)
2187
56caf160 2188Called from @code{psymtab_to_symtab} (or the @code{PSYMTAB_TO_SYMTAB} macro) if
c906108c
SS
2189the psymtab has not already been read in and had its @code{pst->symtab}
2190pointer set. The argument is the psymtab to be fleshed-out into a
56caf160
EZ
2191symtab. Upon return, @code{pst->readin} should have been set to 1, and
2192@code{pst->symtab} should contain a pointer to the new corresponding symtab, or
c906108c
SS
2193zero if there were no symbols in that part of the symbol file.
2194@end table
2195
2196@section Partial Symbol Tables
2197
56caf160 2198@value{GDBN} has three types of symbol tables:
c906108c
SS
2199
2200@itemize @bullet
56caf160
EZ
2201@cindex full symbol table
2202@cindex symtabs
2203@item
2204Full symbol tables (@dfn{symtabs}). These contain the main
2205information about symbols and addresses.
c906108c 2206
56caf160
EZ
2207@cindex psymtabs
2208@item
2209Partial symbol tables (@dfn{psymtabs}). These contain enough
c906108c
SS
2210information to know when to read the corresponding part of the full
2211symbol table.
2212
56caf160
EZ
2213@cindex minimal symbol table
2214@cindex minsymtabs
2215@item
2216Minimal symbol tables (@dfn{msymtabs}). These contain information
c906108c 2217gleaned from non-debugging symbols.
c906108c
SS
2218@end itemize
2219
56caf160 2220@cindex partial symbol table
c906108c
SS
2221This section describes partial symbol tables.
2222
2223A psymtab is constructed by doing a very quick pass over an executable
2224file's debugging information. Small amounts of information are
56caf160 2225extracted---enough to identify which parts of the symbol table will
c906108c 2226need to be re-read and fully digested later, when the user needs the
25822942 2227information. The speed of this pass causes @value{GDBN} to start up very
c906108c
SS
2228quickly. Later, as the detailed rereading occurs, it occurs in small
2229pieces, at various times, and the delay therefrom is mostly invisible to
2230the user.
2231@c (@xref{Symbol Reading}.)
2232
2233The symbols that show up in a file's psymtab should be, roughly, those
2234visible to the debugger's user when the program is not running code from
2235that file. These include external symbols and types, static symbols and
56caf160 2236types, and @code{enum} values declared at file scope.
c906108c
SS
2237
2238The psymtab also contains the range of instruction addresses that the
2239full symbol table would represent.
2240
56caf160
EZ
2241@cindex finding a symbol
2242@cindex symbol lookup
c906108c
SS
2243The idea is that there are only two ways for the user (or much of the
2244code in the debugger) to reference a symbol:
2245
2246@itemize @bullet
56caf160
EZ
2247@findex find_pc_function
2248@findex find_pc_line
2249@item
c1468174 2250By its address (e.g., execution stops at some address which is inside a
56caf160
EZ
2251function in this file). The address will be noticed to be in the
2252range of this psymtab, and the full symtab will be read in.
2253@code{find_pc_function}, @code{find_pc_line}, and other
2254@code{find_pc_@dots{}} functions handle this.
c906108c 2255
56caf160
EZ
2256@cindex lookup_symbol
2257@item
2258By its name
c1468174 2259(e.g., the user asks to print a variable, or set a breakpoint on a
c906108c
SS
2260function). Global names and file-scope names will be found in the
2261psymtab, which will cause the symtab to be pulled in. Local names will
2262have to be qualified by a global name, or a file-scope name, in which
2263case we will have already read in the symtab as we evaluated the
56caf160 2264qualifier. Or, a local symbol can be referenced when we are ``in'' a
c906108c
SS
2265local scope, in which case the first case applies. @code{lookup_symbol}
2266does most of the work here.
c906108c
SS
2267@end itemize
2268
2269The only reason that psymtabs exist is to cause a symtab to be read in
2270at the right moment. Any symbol that can be elided from a psymtab,
2271while still causing that to happen, should not appear in it. Since
2272psymtabs don't have the idea of scope, you can't put local symbols in
2273them anyway. Psymtabs don't have the idea of the type of a symbol,
2274either, so types need not appear, unless they will be referenced by
2275name.
2276
56caf160
EZ
2277It is a bug for @value{GDBN} to behave one way when only a psymtab has
2278been read, and another way if the corresponding symtab has been read
2279in. Such bugs are typically caused by a psymtab that does not contain
2280all the visible symbols, or which has the wrong instruction address
2281ranges.
c906108c 2282
56caf160 2283The psymtab for a particular section of a symbol file (objfile) could be
c906108c
SS
2284thrown away after the symtab has been read in. The symtab should always
2285be searched before the psymtab, so the psymtab will never be used (in a
2286bug-free environment). Currently, psymtabs are allocated on an obstack,
2287and all the psymbols themselves are allocated in a pair of large arrays
2288on an obstack, so there is little to be gained by trying to free them
2289unless you want to do a lot more work.
2290
ccefe4c4
TT
2291Whether or not psymtabs are created depends on the objfile's symbol
2292reader. The core of @value{GDBN} hides the details of partial symbols
2293and partial symbol tables behind a set of function pointers known as
2294the @dfn{quick symbol functions}. These are documented in
2295@file{symfile.h}.
2296
c906108c
SS
2297@section Types
2298
56caf160 2299@unnumberedsubsec Fundamental Types (e.g., @code{FT_VOID}, @code{FT_BOOLEAN}).
c906108c 2300
56caf160 2301@cindex fundamental types
25822942 2302These are the fundamental types that @value{GDBN} uses internally. Fundamental
c906108c
SS
2303types from the various debugging formats (stabs, ELF, etc) are mapped
2304into one of these. They are basically a union of all fundamental types
56caf160
EZ
2305that @value{GDBN} knows about for all the languages that @value{GDBN}
2306knows about.
c906108c 2307
56caf160 2308@unnumberedsubsec Type Codes (e.g., @code{TYPE_CODE_PTR}, @code{TYPE_CODE_ARRAY}).
c906108c 2309
56caf160
EZ
2310@cindex type codes
2311Each time @value{GDBN} builds an internal type, it marks it with one
2312of these types. The type may be a fundamental type, such as
2313@code{TYPE_CODE_INT}, or a derived type, such as @code{TYPE_CODE_PTR}
2314which is a pointer to another type. Typically, several @code{FT_*}
2315types map to one @code{TYPE_CODE_*} type, and are distinguished by
2316other members of the type struct, such as whether the type is signed
2317or unsigned, and how many bits it uses.
c906108c 2318
56caf160 2319@unnumberedsubsec Builtin Types (e.g., @code{builtin_type_void}, @code{builtin_type_char}).
c906108c
SS
2320
2321These are instances of type structs that roughly correspond to
56caf160
EZ
2322fundamental types and are created as global types for @value{GDBN} to
2323use for various ugly historical reasons. We eventually want to
2324eliminate these. Note for example that @code{builtin_type_int}
2325initialized in @file{gdbtypes.c} is basically the same as a
2326@code{TYPE_CODE_INT} type that is initialized in @file{c-lang.c} for
2327an @code{FT_INTEGER} fundamental type. The difference is that the
2328@code{builtin_type} is not associated with any particular objfile, and
2329only one instance exists, while @file{c-lang.c} builds as many
2330@code{TYPE_CODE_INT} types as needed, with each one associated with
2331some particular objfile.
c906108c
SS
2332
2333@section Object File Formats
56caf160 2334@cindex object file formats
c906108c
SS
2335
2336@subsection a.out
2337
56caf160
EZ
2338@cindex @code{a.out} format
2339The @code{a.out} format is the original file format for Unix. It
2340consists of three sections: @code{text}, @code{data}, and @code{bss},
2341which are for program code, initialized data, and uninitialized data,
2342respectively.
c906108c 2343
56caf160 2344The @code{a.out} format is so simple that it doesn't have any reserved
c906108c 2345place for debugging information. (Hey, the original Unix hackers used
56caf160
EZ
2346@samp{adb}, which is a machine-language debugger!) The only debugging
2347format for @code{a.out} is stabs, which is encoded as a set of normal
c906108c
SS
2348symbols with distinctive attributes.
2349
56caf160 2350The basic @code{a.out} reader is in @file{dbxread.c}.
c906108c
SS
2351
2352@subsection COFF
2353
56caf160 2354@cindex COFF format
c906108c
SS
2355The COFF format was introduced with System V Release 3 (SVR3) Unix.
2356COFF files may have multiple sections, each prefixed by a header. The
2357number of sections is limited.
2358
2359The COFF specification includes support for debugging. Although this
1f70da6a
SS
2360was a step forward, the debugging information was woefully limited.
2361For instance, it was not possible to represent code that came from an
2362included file. GNU's COFF-using configs often use stabs-type info,
2363encapsulated in special sections.
c906108c
SS
2364
2365The COFF reader is in @file{coffread.c}.
2366
2367@subsection ECOFF
2368
56caf160 2369@cindex ECOFF format
c906108c
SS
2370ECOFF is an extended COFF originally introduced for Mips and Alpha
2371workstations.
2372
2373The basic ECOFF reader is in @file{mipsread.c}.
2374
2375@subsection XCOFF
2376
56caf160 2377@cindex XCOFF format
c906108c
SS
2378The IBM RS/6000 running AIX uses an object file format called XCOFF.
2379The COFF sections, symbols, and line numbers are used, but debugging
56caf160
EZ
2380symbols are @code{dbx}-style stabs whose strings are located in the
2381@code{.debug} section (rather than the string table). For more
2382information, see @ref{Top,,,stabs,The Stabs Debugging Format}.
c906108c
SS
2383
2384The shared library scheme has a clean interface for figuring out what
2385shared libraries are in use, but the catch is that everything which
2386refers to addresses (symbol tables and breakpoints at least) needs to be
2387relocated for both shared libraries and the main executable. At least
2388using the standard mechanism this can only be done once the program has
2389been run (or the core file has been read).
2390
2391@subsection PE
2392
56caf160
EZ
2393@cindex PE-COFF format
2394Windows 95 and NT use the PE (@dfn{Portable Executable}) format for their
c906108c
SS
2395executables. PE is basically COFF with additional headers.
2396
25822942 2397While BFD includes special PE support, @value{GDBN} needs only the basic
c906108c
SS
2398COFF reader.
2399
2400@subsection ELF
2401
56caf160 2402@cindex ELF format
1f70da6a
SS
2403The ELF format came with System V Release 4 (SVR4) Unix. ELF is
2404similar to COFF in being organized into a number of sections, but it
2405removes many of COFF's limitations. Debugging info may be either stabs
2406encapsulated in ELF sections, or more commonly these days, DWARF.
c906108c
SS
2407
2408The basic ELF reader is in @file{elfread.c}.
2409
2410@subsection SOM
2411
56caf160 2412@cindex SOM format
c906108c
SS
2413SOM is HP's object file and debug format (not to be confused with IBM's
2414SOM, which is a cross-language ABI).
2415
1a92f856 2416The SOM reader is in @file{somread.c}.
c906108c 2417
c906108c
SS
2418@section Debugging File Formats
2419
2420This section describes characteristics of debugging information that
2421are independent of the object file format.
2422
2423@subsection stabs
2424
56caf160 2425@cindex stabs debugging info
c906108c
SS
2426@code{stabs} started out as special symbols within the @code{a.out}
2427format. Since then, it has been encapsulated into other file
2428formats, such as COFF and ELF.
2429
2430While @file{dbxread.c} does some of the basic stab processing,
2431including for encapsulated versions, @file{stabsread.c} does
2432the real work.
2433
2434@subsection COFF
2435
56caf160 2436@cindex COFF debugging info
c906108c
SS
2437The basic COFF definition includes debugging information. The level
2438of support is minimal and non-extensible, and is not often used.
2439
2440@subsection Mips debug (Third Eye)
2441
56caf160 2442@cindex ECOFF debugging info
c906108c
SS
2443ECOFF includes a definition of a special debug format.
2444
2445The file @file{mdebugread.c} implements reading for this format.
2446
1f70da6a
SS
2447@c mention DWARF 1 as a formerly-supported format
2448
c906108c
SS
2449@subsection DWARF 2
2450
56caf160 2451@cindex DWARF 2 debugging info
c906108c
SS
2452DWARF 2 is an improved but incompatible version of DWARF 1.
2453
2454The DWARF 2 reader is in @file{dwarf2read.c}.
2455
31fffb02
CS
2456@subsection Compressed DWARF 2
2457
2458@cindex Compressed DWARF 2 debugging info
2459Compressed DWARF 2 is not technically a separate debugging format, but
2460merely DWARF 2 debug information that has been compressed. In this
2461format, every object-file section holding DWARF 2 debugging
2462information is compressed and prepended with a header. (The section
2463is also typically renamed, so a section called @code{.debug_info} in a
2464DWARF 2 binary would be called @code{.zdebug_info} in a compressed
2465DWARF 2 binary.) The header is 12 bytes long:
2466
2467@itemize @bullet
2468@item
24694 bytes: the literal string ``ZLIB''
2470@item
24718 bytes: the uncompressed size of the section, in big-endian byte
2472order.
2473@end itemize
2474
2475The same reader is used for both compressed an normal DWARF 2 info.
2476Section decompression is done in @code{zlib_decompress_section} in
2477@file{dwarf2read.c}.
2478
1f70da6a
SS
2479@subsection DWARF 3
2480
2481@cindex DWARF 3 debugging info
2482DWARF 3 is an improved version of DWARF 2.
2483
c906108c
SS
2484@subsection SOM
2485
56caf160 2486@cindex SOM debugging info
c906108c
SS
2487Like COFF, the SOM definition includes debugging information.
2488
25822942 2489@section Adding a New Symbol Reader to @value{GDBN}
c906108c 2490
56caf160
EZ
2491@cindex adding debugging info reader
2492If you are using an existing object file format (@code{a.out}, COFF, ELF, etc),
c906108c
SS
2493there is probably little to be done.
2494
2495If you need to add a new object file format, you must first add it to
2496BFD. This is beyond the scope of this document.
2497
2498You must then arrange for the BFD code to provide access to the
1f70da6a
SS
2499debugging symbols. Generally @value{GDBN} will have to call swapping
2500routines from BFD and a few other BFD internal routines to locate the
2501debugging information. As much as possible, @value{GDBN} should not
2502depend on the BFD internal data structures.
c906108c
SS
2503
2504For some targets (e.g., COFF), there is a special transfer vector used
2505to call swapping routines, since the external data structures on various
2506platforms have different sizes and layouts. Specialized routines that
2507will only ever be implemented by one object file format may be called
2508directly. This interface should be described in a file
56caf160 2509@file{bfd/lib@var{xyz}.h}, which is included by @value{GDBN}.
c906108c 2510
c91d38aa
DJ
2511@section Memory Management for Symbol Files
2512
2513Most memory associated with a loaded symbol file is stored on
2514its @code{objfile_obstack}. This includes symbols, types,
2515namespace data, and other information produced by the symbol readers.
2516
2517Because this data lives on the objfile's obstack, it is automatically
2518released when the objfile is unloaded or reloaded. Therefore one
2519objfile must not reference symbol or type data from another objfile;
2520they could be unloaded at different times.
2521
2522User convenience variables, et cetera, have associated types. Normally
2523these types live in the associated objfile. However, when the objfile
2524is unloaded, those types are deep copied to global memory, so that
2525the values of the user variables and history items are not lost.
2526
c906108c
SS
2527
2528@node Language Support
2529
2530@chapter Language Support
2531
56caf160
EZ
2532@cindex language support
2533@value{GDBN}'s language support is mainly driven by the symbol reader,
2534although it is possible for the user to set the source language
2535manually.
c906108c 2536
56caf160
EZ
2537@value{GDBN} chooses the source language by looking at the extension
2538of the file recorded in the debug info; @file{.c} means C, @file{.f}
2539means Fortran, etc. It may also use a special-purpose language
2540identifier if the debug format supports it, like with DWARF.
c906108c 2541
25822942 2542@section Adding a Source Language to @value{GDBN}
c906108c 2543
56caf160
EZ
2544@cindex adding source language
2545To add other languages to @value{GDBN}'s expression parser, follow the
2546following steps:
c906108c
SS
2547
2548@table @emph
2549@item Create the expression parser.
2550
56caf160 2551@cindex expression parser
c906108c 2552This should reside in a file @file{@var{lang}-exp.y}. Routines for
56caf160 2553building parsed expressions into a @code{union exp_element} list are in
c906108c
SS
2554@file{parse.c}.
2555
56caf160 2556@cindex language parser
c906108c
SS
2557Since we can't depend upon everyone having Bison, and YACC produces
2558parsers that define a bunch of global names, the following lines
56caf160 2559@strong{must} be included at the top of the YACC parser, to prevent the
c906108c
SS
2560various parsers from defining the same global names:
2561
474c8240 2562@smallexample
56caf160
EZ
2563#define yyparse @var{lang}_parse
2564#define yylex @var{lang}_lex
2565#define yyerror @var{lang}_error
2566#define yylval @var{lang}_lval
2567#define yychar @var{lang}_char
2568#define yydebug @var{lang}_debug
2569#define yypact @var{lang}_pact
2570#define yyr1 @var{lang}_r1
2571#define yyr2 @var{lang}_r2
2572#define yydef @var{lang}_def
2573#define yychk @var{lang}_chk
2574#define yypgo @var{lang}_pgo
2575#define yyact @var{lang}_act
2576#define yyexca @var{lang}_exca
2577#define yyerrflag @var{lang}_errflag
2578#define yynerrs @var{lang}_nerrs
474c8240 2579@end smallexample
c906108c
SS
2580
2581At the bottom of your parser, define a @code{struct language_defn} and
2582initialize it with the right values for your language. Define an
2583@code{initialize_@var{lang}} routine and have it call
25822942 2584@samp{add_language(@var{lang}_language_defn)} to tell the rest of @value{GDBN}
c906108c
SS
2585that your language exists. You'll need some other supporting variables
2586and functions, which will be used via pointers from your
2587@code{@var{lang}_language_defn}. See the declaration of @code{struct
2588language_defn} in @file{language.h}, and the other @file{*-exp.y} files,
2589for more information.
2590
2591@item Add any evaluation routines, if necessary
2592
56caf160
EZ
2593@cindex expression evaluation routines
2594@findex evaluate_subexp
2595@findex prefixify_subexp
2596@findex length_of_subexp
c906108c
SS
2597If you need new opcodes (that represent the operations of the language),
2598add them to the enumerated type in @file{expression.h}. Add support
56caf160
EZ
2599code for these operations in the @code{evaluate_subexp} function
2600defined in the file @file{eval.c}. Add cases
c906108c 2601for new opcodes in two functions from @file{parse.c}:
56caf160 2602@code{prefixify_subexp} and @code{length_of_subexp}. These compute
c906108c
SS
2603the number of @code{exp_element}s that a given operation takes up.
2604
2605@item Update some existing code
2606
2607Add an enumerated identifier for your language to the enumerated type
2608@code{enum language} in @file{defs.h}.
2609
2610Update the routines in @file{language.c} so your language is included.
2611These routines include type predicates and such, which (in some cases)
2612are language dependent. If your language does not appear in the switch
2613statement, an error is reported.
2614
56caf160 2615@vindex current_language
c906108c
SS
2616Also included in @file{language.c} is the code that updates the variable
2617@code{current_language}, and the routines that translate the
2618@code{language_@var{lang}} enumerated identifier into a printable
2619string.
2620
56caf160 2621@findex _initialize_language
c906108c
SS
2622Update the function @code{_initialize_language} to include your
2623language. This function picks the default language upon startup, so is
25822942 2624dependent upon which languages that @value{GDBN} is built for.
c906108c 2625
56caf160 2626@findex allocate_symtab
c906108c
SS
2627Update @code{allocate_symtab} in @file{symfile.c} and/or symbol-reading
2628code so that the language of each symtab (source file) is set properly.
2629This is used to determine the language to use at each stack frame level.
2630Currently, the language is set based upon the extension of the source
2631file. If the language can be better inferred from the symbol
2632information, please set the language of the symtab in the symbol-reading
2633code.
2634
56caf160
EZ
2635@findex print_subexp
2636@findex op_print_tab
2637Add helper code to @code{print_subexp} (in @file{expprint.c}) to handle any new
c906108c
SS
2638expression opcodes you have added to @file{expression.h}. Also, add the
2639printed representations of your operators to @code{op_print_tab}.
2640
2641@item Add a place of call
2642
56caf160 2643@findex parse_exp_1
c906108c 2644Add a call to @code{@var{lang}_parse()} and @code{@var{lang}_error} in
56caf160 2645@code{parse_exp_1} (defined in @file{parse.c}).
c906108c 2646
c906108c
SS
2647@item Edit @file{Makefile.in}
2648
2649Add dependencies in @file{Makefile.in}. Make sure you update the macro
2650variables such as @code{HFILES} and @code{OBJS}, otherwise your code may
2651not get linked in, or, worse yet, it may not get @code{tar}red into the
2652distribution!
c906108c
SS
2653@end table
2654
2655
2656@node Host Definition
2657
2658@chapter Host Definition
2659
56caf160 2660With the advent of Autoconf, it's rarely necessary to have host
7fd60527
AC
2661definition machinery anymore. The following information is provided,
2662mainly, as an historical reference.
c906108c
SS
2663
2664@section Adding a New Host
2665
56caf160
EZ
2666@cindex adding a new host
2667@cindex host, adding
7fd60527
AC
2668@value{GDBN}'s host configuration support normally happens via Autoconf.
2669New host-specific definitions should not be needed. Older hosts
2670@value{GDBN} still use the host-specific definitions and files listed
2671below, but these mostly exist for historical reasons, and will
56caf160 2672eventually disappear.
c906108c 2673
c906108c 2674@table @file
c906108c 2675@item gdb/config/@var{arch}/@var{xyz}.mh
1f70da6a
SS
2676This file is a Makefile fragment that once contained both host and
2677native configuration information (@pxref{Native Debugging}) for the
2678machine @var{xyz}. The host configuration information is now handled
2679by Autoconf.
7fd60527 2680
1f70da6a 2681Host configuration information included definitions for @code{CC},
7708fa01
AC
2682@code{SYSV_DEFINE}, @code{XM_CFLAGS}, @code{XM_ADD_FILES},
2683@code{XM_CLIBS}, @code{XM_CDEPS}, etc.; see @file{Makefile.in}.
c906108c 2684
1f70da6a 2685New host-only configurations do not need this file.
c906108c 2686
c906108c
SS
2687@end table
2688
1f70da6a
SS
2689(Files named @file{gdb/config/@var{arch}/xm-@var{xyz}.h} were once
2690used to define host-specific macros, but were no longer needed and
2691have all been removed.)
2692
c906108c
SS
2693@subheading Generic Host Support Files
2694
56caf160 2695@cindex generic host support
c906108c 2696There are some ``generic'' versions of routines that can be used by
1f70da6a 2697various systems.
c906108c
SS
2698
2699@table @file
56caf160
EZ
2700@cindex remote debugging support
2701@cindex serial line support
c906108c 2702@item ser-unix.c
1f70da6a
SS
2703This contains serial line support for Unix systems. It is included by
2704default on all Unix-like hosts.
2705
2706@item ser-pipe.c
2707This contains serial pipe support for Unix systems. It is included by
2708default on all Unix-like hosts.
2709
2710@item ser-mingw.c
2711This contains serial line support for 32-bit programs running under
2712Windows using MinGW.
c906108c
SS
2713
2714@item ser-go32.c
2715This contains serial line support for 32-bit programs running under DOS,
56caf160 2716using the DJGPP (a.k.a.@: GO32) execution environment.
c906108c 2717
56caf160 2718@cindex TCP remote support
c906108c 2719@item ser-tcp.c
1f70da6a
SS
2720This contains generic TCP support using sockets. It is included by
2721default on all Unix-like hosts and with MinGW.
c906108c
SS
2722@end table
2723
2724@section Host Conditionals
2725
56caf160
EZ
2726When @value{GDBN} is configured and compiled, various macros are
2727defined or left undefined, to control compilation based on the
1f70da6a
SS
2728attributes of the host system. While formerly they could be set in
2729host-specific header files, at present they can be changed only by
2730setting @code{CFLAGS} when building, or by editing the source code.
2731
2732These macros and their meanings (or if the meaning is not documented
2733here, then one of the source files where they are used is indicated)
2734are:
c906108c 2735
56caf160 2736@ftable @code
25822942 2737@item @value{GDBN}INIT_FILENAME
56caf160
EZ
2738The default name of @value{GDBN}'s initialization file (normally
2739@file{.gdbinit}).
c906108c 2740
c906108c 2741@item CRLF_SOURCE_FILES
56caf160 2742@cindex DOS text files
c906108c
SS
2743Define this if host files use @code{\r\n} rather than @code{\n} as a
2744line terminator. This will cause source file listings to omit @code{\r}
56caf160
EZ
2745characters when printing and it will allow @code{\r\n} line endings of files
2746which are ``sourced'' by gdb. It must be possible to open files in binary
c906108c
SS
2747mode using @code{O_BINARY} or, for fopen, @code{"rb"}.
2748
2749@item DEFAULT_PROMPT
56caf160 2750@cindex prompt
c906108c
SS
2751The default value of the prompt string (normally @code{"(gdb) "}).
2752
2753@item DEV_TTY
56caf160 2754@cindex terminal device
c906108c
SS
2755The name of the generic TTY device, defaults to @code{"/dev/tty"}.
2756
c906108c
SS
2757@item ISATTY
2758Substitute for isatty, if not available.
2759
1f70da6a
SS
2760@item FOPEN_RB
2761Define this if binary files are opened the same way as text files.
c906108c 2762
c906108c
SS
2763@item PRINTF_HAS_LONG_LONG
2764Define this if the host can handle printing of long long integers via
56caf160
EZ
2765the printf format conversion specifier @code{ll}. This is set by the
2766@code{configure} script.
c906108c 2767
c906108c
SS
2768@item LSEEK_NOT_LINEAR
2769Define this if @code{lseek (n)} does not necessarily move to byte number
2770@code{n} in the file. This is only used when reading source files. It
2771is normally faster to define @code{CRLF_SOURCE_FILES} when possible.
2772
c906108c 2773@item lint
56caf160 2774Define this to help placate @code{lint} in some situations.
c906108c
SS
2775
2776@item volatile
2777Define this to override the defaults of @code{__volatile__} or
2778@code{/**/}.
56caf160 2779@end ftable
c906108c
SS
2780
2781
2782@node Target Architecture Definition
2783
2784@chapter Target Architecture Definition
2785
56caf160
EZ
2786@cindex target architecture definition
2787@value{GDBN}'s target architecture defines what sort of
2788machine-language programs @value{GDBN} can work with, and how it works
2789with them.
c906108c 2790
af6c57ea
AC
2791The target architecture object is implemented as the C structure
2792@code{struct gdbarch *}. The structure, and its methods, are generated
93c2c750 2793using the Bourne shell script @file{gdbarch.sh}.
c906108c 2794
b6fd0dfb
NR
2795@menu
2796* OS ABI Variant Handling::
2797* Initialize New Architecture::
2798* Registers and Memory::
2799* Pointers and Addresses::
2800* Address Classes::
587afa38 2801* Register Representation::
b6fd0dfb
NR
2802* Frame Interpretation::
2803* Inferior Call Setup::
b39f4988 2804* Adding support for debugging core files::
587afa38 2805* Defining Other Architecture Features::
b6fd0dfb 2806* Adding a New Target::
b6fd0dfb
NR
2807@end menu
2808
2809@node OS ABI Variant Handling
70f80edf
JT
2810@section Operating System ABI Variant Handling
2811@cindex OS ABI variants
2812
2813@value{GDBN} provides a mechanism for handling variations in OS
2814ABIs. An OS ABI variant may have influence over any number of
2815variables in the target architecture definition. There are two major
2816components in the OS ABI mechanism: sniffers and handlers.
2817
2818A @dfn{sniffer} examines a file matching a BFD architecture/flavour pair
2819(the architecture may be wildcarded) in an attempt to determine the
2820OS ABI of that file. Sniffers with a wildcarded architecture are considered
2821to be @dfn{generic}, while sniffers for a specific architecture are
2822considered to be @dfn{specific}. A match from a specific sniffer
2823overrides a match from a generic sniffer. Multiple sniffers for an
2824architecture/flavour may exist, in order to differentiate between two
2825different operating systems which use the same basic file format. The
2826OS ABI framework provides a generic sniffer for ELF-format files which
2827examines the @code{EI_OSABI} field of the ELF header, as well as note
2828sections known to be used by several operating systems.
2829
2830@cindex fine-tuning @code{gdbarch} structure
2831A @dfn{handler} is used to fine-tune the @code{gdbarch} structure for the
2832selected OS ABI. There may be only one handler for a given OS ABI
2833for each BFD architecture.
2834
f4b3909f 2835The following OS ABI variants are defined in @file{defs.h}:
70f80edf
JT
2836
2837@table @code
2838
f4b3909f
EZ
2839@findex GDB_OSABI_UNINITIALIZED
2840@item GDB_OSABI_UNINITIALIZED
2841Used for struct gdbarch_info if ABI is still uninitialized.
2842
70f80edf
JT
2843@findex GDB_OSABI_UNKNOWN
2844@item GDB_OSABI_UNKNOWN
2845The ABI of the inferior is unknown. The default @code{gdbarch}
2846settings for the architecture will be used.
2847
2848@findex GDB_OSABI_SVR4
2849@item GDB_OSABI_SVR4
f4b3909f 2850UNIX System V Release 4.
70f80edf
JT
2851
2852@findex GDB_OSABI_HURD
2853@item GDB_OSABI_HURD
f4b3909f 2854GNU using the Hurd kernel.
70f80edf
JT
2855
2856@findex GDB_OSABI_SOLARIS
2857@item GDB_OSABI_SOLARIS
f4b3909f 2858Sun Solaris.
70f80edf
JT
2859
2860@findex GDB_OSABI_OSF1
2861@item GDB_OSABI_OSF1
f4b3909f 2862OSF/1, including Digital UNIX and Compaq Tru64 UNIX.
70f80edf
JT
2863
2864@findex GDB_OSABI_LINUX
2865@item GDB_OSABI_LINUX
f4b3909f 2866GNU using the Linux kernel.
70f80edf
JT
2867
2868@findex GDB_OSABI_FREEBSD_AOUT
2869@item GDB_OSABI_FREEBSD_AOUT
f4b3909f 2870FreeBSD using the @code{a.out} executable format.
70f80edf
JT
2871
2872@findex GDB_OSABI_FREEBSD_ELF
2873@item GDB_OSABI_FREEBSD_ELF
f4b3909f 2874FreeBSD using the ELF executable format.
70f80edf
JT
2875
2876@findex GDB_OSABI_NETBSD_AOUT
2877@item GDB_OSABI_NETBSD_AOUT
f4b3909f 2878NetBSD using the @code{a.out} executable format.
70f80edf
JT
2879
2880@findex GDB_OSABI_NETBSD_ELF
2881@item GDB_OSABI_NETBSD_ELF
f4b3909f
EZ
2882NetBSD using the ELF executable format.
2883
2884@findex GDB_OSABI_OPENBSD_ELF
2885@item GDB_OSABI_OPENBSD_ELF
2886OpenBSD using the ELF executable format.
70f80edf
JT
2887
2888@findex GDB_OSABI_WINCE
2889@item GDB_OSABI_WINCE
f4b3909f 2890Windows CE.
70f80edf 2891
1029b7fa
MK
2892@findex GDB_OSABI_GO32
2893@item GDB_OSABI_GO32
f4b3909f 2894DJGPP.
1029b7fa 2895
f4b3909f
EZ
2896@findex GDB_OSABI_IRIX
2897@item GDB_OSABI_IRIX
2898Irix.
2899
f4b3909f
EZ
2900@findex GDB_OSABI_INTERIX
2901@item GDB_OSABI_INTERIX
2902Interix (Posix layer for MS-Windows systems).
1029b7fa 2903
f4b3909f
EZ
2904@findex GDB_OSABI_HPUX_ELF
2905@item GDB_OSABI_HPUX_ELF
2906HP/UX using the ELF executable format.
70f80edf 2907
f4b3909f
EZ
2908@findex GDB_OSABI_HPUX_SOM
2909@item GDB_OSABI_HPUX_SOM
2910HP/UX using the SOM executable format.
70f80edf 2911
f4b3909f
EZ
2912@findex GDB_OSABI_QNXNTO
2913@item GDB_OSABI_QNXNTO
2914QNX Neutrino.
2915
2916@findex GDB_OSABI_CYGWIN
2917@item GDB_OSABI_CYGWIN
2918Cygwin.
2919
2920@findex GDB_OSABI_AIX
2921@item GDB_OSABI_AIX
2922AIX.
70f80edf
JT
2923
2924@end table
2925
2926Here are the functions that make up the OS ABI framework:
2927
587afa38 2928@deftypefun {const char *} gdbarch_osabi_name (enum gdb_osabi @var{osabi})
70f80edf
JT
2929Return the name of the OS ABI corresponding to @var{osabi}.
2930@end deftypefun
2931
c133ab7a 2932@deftypefun void gdbarch_register_osabi (enum bfd_architecture @var{arch}, unsigned long @var{machine}, enum gdb_osabi @var{osabi}, void (*@var{init_osabi})(struct gdbarch_info @var{info}, struct gdbarch *@var{gdbarch}))
70f80edf 2933Register the OS ABI handler specified by @var{init_osabi} for the
c133ab7a
MK
2934architecture, machine type and OS ABI specified by @var{arch},
2935@var{machine} and @var{osabi}. In most cases, a value of zero for the
2936machine type, which implies the architecture's default machine type,
2937will suffice.
70f80edf
JT
2938@end deftypefun
2939
2940@deftypefun void gdbarch_register_osabi_sniffer (enum bfd_architecture @var{arch}, enum bfd_flavour @var{flavour}, enum gdb_osabi (*@var{sniffer})(bfd *@var{abfd}))
2941Register the OS ABI file sniffer specified by @var{sniffer} for the
2942BFD architecture/flavour pair specified by @var{arch} and @var{flavour}.
2943If @var{arch} is @code{bfd_arch_unknown}, the sniffer is considered to
2944be generic, and is allowed to examine @var{flavour}-flavoured files for
2945any architecture.
2946@end deftypefun
2947
587afa38 2948@deftypefun {enum gdb_osabi} gdbarch_lookup_osabi (bfd *@var{abfd})
70f80edf
JT
2949Examine the file described by @var{abfd} to determine its OS ABI.
2950The value @code{GDB_OSABI_UNKNOWN} is returned if the OS ABI cannot
2951be determined.
2952@end deftypefun
2953
2954@deftypefun void gdbarch_init_osabi (struct gdbarch info @var{info}, struct gdbarch *@var{gdbarch}, enum gdb_osabi @var{osabi})
2955Invoke the OS ABI handler corresponding to @var{osabi} to fine-tune the
2956@code{gdbarch} structure specified by @var{gdbarch}. If a handler
2957corresponding to @var{osabi} has not been registered for @var{gdbarch}'s
2958architecture, a warning will be issued and the debugging session will continue
2959with the defaults already established for @var{gdbarch}.
2960@end deftypefun
2961
f4b3909f
EZ
2962@deftypefun void generic_elf_osabi_sniff_abi_tag_sections (bfd *@var{abfd}, asection *@var{sect}, void *@var{obj})
2963Helper routine for ELF file sniffers. Examine the file described by
2964@var{abfd} and look at ABI tag note sections to determine the OS ABI
2965from the note. This function should be called via
2966@code{bfd_map_over_sections}.
2967@end deftypefun
2968
b6fd0dfb 2969@node Initialize New Architecture
7a107747
DJ
2970@section Initializing a New Architecture
2971
587afa38
EZ
2972@menu
2973* How an Architecture is Represented::
2974* Looking Up an Existing Architecture::
2975* Creating a New Architecture::
2976@end menu
2977
2978@node How an Architecture is Represented
2979@subsection How an Architecture is Represented
2980@cindex architecture representation
2981@cindex representation of architecture
2982
7a107747 2983Each @code{gdbarch} is associated with a single @sc{bfd} architecture,
587afa38
EZ
2984via a @code{bfd_arch_@var{arch}} in the @code{bfd_architecture}
2985enumeration. The @code{gdbarch} is registered by a call to
2986@code{register_gdbarch_init}, usually from the file's
2987@code{_initialize_@var{filename}} routine, which will be automatically
2988called during @value{GDBN} startup. The arguments are a @sc{bfd}
2989architecture constant and an initialization function.
2990
2991@findex _initialize_@var{arch}_tdep
2992@cindex @file{@var{arch}-tdep.c}
2993A @value{GDBN} description for a new architecture, @var{arch} is created by
2994defining a global function @code{_initialize_@var{arch}_tdep}, by
2995convention in the source file @file{@var{arch}-tdep.c}. For example,
2996in the case of the OpenRISC 1000, this function is called
2997@code{_initialize_or1k_tdep} and is found in the file
2998@file{or1k-tdep.c}.
2999
3000@cindex @file{configure.tgt}
3001@cindex @code{gdbarch}
3002@findex gdbarch_register
3003The resulting object files containing the implementation of the
3004@code{_initialize_@var{arch}_tdep} function are specified in the @value{GDBN}
3005@file{configure.tgt} file, which includes a large case statement
3006pattern matching against the @code{--target} option of the
3007@code{configure} script. The new @code{struct gdbarch} is created
3008within the @code{_initialize_@var{arch}_tdep} function by calling
3009@code{gdbarch_register}:
3010
3011@smallexample
3012void gdbarch_register (enum bfd_architecture @var{architecture},
3013 gdbarch_init_ftype *@var{init_func},
3014 gdbarch_dump_tdep_ftype *@var{tdep_dump_func});
3015@end smallexample
3016
3017The @var{architecture} will identify the unique @sc{bfd} to be
3018associated with this @code{gdbarch}. The @var{init_func} funciton is
3019called to create and return the new @code{struct gdbarch}. The
3020@var{tdep_dump_func} function will dump the target specific details
3021associated with this architecture.
3022
3023For example the function @code{_initialize_or1k_tdep} creates its
3024architecture for 32-bit OpenRISC 1000 architectures by calling:
3025
3026@smallexample
3027gdbarch_register (bfd_arch_or32, or1k_gdbarch_init, or1k_dump_tdep);
3028@end smallexample
3029
3030@node Looking Up an Existing Architecture
3031@subsection Looking Up an Existing Architecture
3032@cindex @code{gdbarch} lookup
7a107747 3033
587afa38 3034The initialization function has this prototype:
7a107747
DJ
3035
3036@smallexample
3037static struct gdbarch *
3038@var{arch}_gdbarch_init (struct gdbarch_info @var{info},
3039 struct gdbarch_list *@var{arches})
3040@end smallexample
3041
3042The @var{info} argument contains parameters used to select the correct
3043architecture, and @var{arches} is a list of architectures which
3044have already been created with the same @code{bfd_arch_@var{arch}}
3045value.
3046
3047The initialization function should first make sure that @var{info}
3048is acceptable, and return @code{NULL} if it is not. Then, it should
3049search through @var{arches} for an exact match to @var{info}, and
3050return one if found. Lastly, if no exact match was found, it should
3051create a new architecture based on @var{info} and return it.
3052
587afa38
EZ
3053@findex gdbarch_list_lookup_by_info
3054@cindex @code{gdbarch_info}
3055The lookup is done using @code{gdbarch_list_lookup_by_info}. It is
3056passed the list of existing architectures, @var{arches}, and the
3057@code{struct gdbarch_info}, @var{info}, and returns the first matching
3058architecture it finds, or @code{NULL} if none are found. If an
3059architecture is found it can be returned as the result from the
3060initialization function, otherwise a new @code{struct gdbach} will need
3061to be created.
3062
3063The struct gdbarch_info has the following components:
3064
3065@smallexample
3066struct gdbarch_info
3067@{
3068 const struct bfd_arch_info *bfd_arch_info;
3069 int byte_order;
3070 bfd *abfd;
3071 struct gdbarch_tdep_info *tdep_info;
3072 enum gdb_osabi osabi;
3073 const struct target_desc *target_desc;
3074@};
3075@end smallexample
3076
3077@vindex bfd_arch_info
3078The @code{bfd_arch_info} member holds the key details about the
3079architecture. The @code{byte_order} member is a value in an
3080enumeration indicating the endianism. The @code{abfd} member is a
3081pointer to the full @sc{bfd}, the @code{tdep_info} member is
3082additional custom target specific information, @code{osabi} identifies
3083which (if any) of a number of operating specific ABIs are used by this
3084architecture and the @code{target_desc} member is a set of name-value
3085pairs with information about register usage in this target.
3086
3087When the @code{struct gdbarch} initialization function is called, not
3088all the fields are provided---only those which can be deduced from the
3089@sc{bfd}. The @code{struct gdbarch_info}, @var{info} is used as a
3090look-up key with the list of existing architectures, @var{arches} to
3091see if a suitable architecture already exists. The @var{tdep_info},
3092@var{osabi} and @var{target_desc} fields may be added before this
3093lookup to refine the search.
3094
7a107747
DJ
3095Only information in @var{info} should be used to choose the new
3096architecture. Historically, @var{info} could be sparse, and
3097defaults would be collected from the first element on @var{arches}.
3098However, @value{GDBN} now fills in @var{info} more thoroughly,
3099so new @code{gdbarch} initialization functions should not take
3100defaults from @var{arches}.
3101
587afa38
EZ
3102@node Creating a New Architecture
3103@subsection Creating a New Architecture
3104@cindex @code{struct gdbarch} creation
3105
3106@findex gdbarch_alloc
3107@cindex @code{gdbarch_tdep} when allocating new @code{gdbarch}
3108If no architecture is found, then a new architecture must be created,
3109by calling @code{gdbarch_alloc} using the supplied @code{@w{struct
3110gdbarch_info}} and any additional custom target specific
3111information in a @code{struct gdbarch_tdep}. The prototype for
3112@code{gdbarch_alloc} is:
3113
3114@smallexample
3115struct gdbarch *gdbarch_alloc (const struct gdbarch_info *@var{info},
3116 struct gdbarch_tdep *@var{tdep});
3117@end smallexample
3118
3119@cindex @code{set_gdbarch} functions
3120@cindex @code{gdbarch} accessor functions
3121The newly created struct gdbarch must then be populated. Although
3122there are default values, in most cases they are not what is
3123required.
3124
3125For each element, @var{X}, there is are a pair of corresponding accessor
3126functions, one to set the value of that element,
3127@code{set_gdbarch_@var{X}}, the second to either get the value of an
3128element (if it is a variable) or to apply the element (if it is a
3129function), @code{gdbarch_@var{X}}. Note that both accessor functions
3130take a pointer to the @code{@w{struct gdbarch}} as first
3131argument. Populating the new @code{gdbarch} should use the
3132@code{set_gdbarch} functions.
3133
3134The following sections identify the main elements that should be set
3135in this way. This is not the complete list, but represents the
3136functions and elements that must commonly be specified for a new
3137architecture. Many of the functions and variables are described in the
3138header file @file{gdbarch.h}.
3139
3140This is the main work in defining a new architecture. Implementing the
3141set of functions to populate the @code{struct gdbarch}.
3142
3143@cindex @code{gdbarch_tdep} definition
3144@code{struct gdbarch_tdep} is not defined within @value{GDBN}---it is up
3145to the user to define this struct if it is needed to hold custom target
3146information that is not covered by the standard @code{@w{struct
3147gdbarch}}. For example with the OpenRISC 1000 architecture it is used to
3148hold the number of matchpoints available in the target (along with other
3149information).
3150
3151If there is no additional target specific information, it can be set to
3152@code{NULL}.
3153
b6fd0dfb 3154@node Registers and Memory
c906108c
SS
3155@section Registers and Memory
3156
56caf160
EZ
3157@value{GDBN}'s model of the target machine is rather simple.
3158@value{GDBN} assumes the machine includes a bank of registers and a
3159block of memory. Each register may have a different size.
c906108c 3160
56caf160
EZ
3161@value{GDBN} does not have a magical way to match up with the
3162compiler's idea of which registers are which; however, it is critical
3163that they do match up accurately. The only way to make this work is
3164to get accurate information about the order that the compiler uses,
4a9bb1df 3165and to reflect that in the @code{gdbarch_register_name} and related functions.
c906108c 3166
25822942 3167@value{GDBN} can handle big-endian, little-endian, and bi-endian architectures.
c906108c 3168
b6fd0dfb 3169@node Pointers and Addresses
93e79dbd
JB
3170@section Pointers Are Not Always Addresses
3171@cindex pointer representation
3172@cindex address representation
3173@cindex word-addressed machines
3174@cindex separate data and code address spaces
3175@cindex spaces, separate data and code address
3176@cindex address spaces, separate data and code
3177@cindex code pointers, word-addressed
3178@cindex converting between pointers and addresses
3179@cindex D10V addresses
3180
3181On almost all 32-bit architectures, the representation of a pointer is
3182indistinguishable from the representation of some fixed-length number
3183whose value is the byte address of the object pointed to. On such
56caf160 3184machines, the words ``pointer'' and ``address'' can be used interchangeably.
93e79dbd
JB
3185However, architectures with smaller word sizes are often cramped for
3186address space, so they may choose a pointer representation that breaks this
3187identity, and allows a larger code address space.
3188
1f70da6a
SS
3189@c D10V is gone from sources - more current example?
3190
172c2a43 3191For example, the Renesas D10V is a 16-bit VLIW processor whose
93e79dbd
JB
3192instructions are 32 bits long@footnote{Some D10V instructions are
3193actually pairs of 16-bit sub-instructions. However, since you can't
3194jump into the middle of such a pair, code addresses can only refer to
3195full 32 bit instructions, which is what matters in this explanation.}.
3196If the D10V used ordinary byte addresses to refer to code locations,
3197then the processor would only be able to address 64kb of instructions.
3198However, since instructions must be aligned on four-byte boundaries, the
56caf160
EZ
3199low two bits of any valid instruction's byte address are always
3200zero---byte addresses waste two bits. So instead of byte addresses,
3201the D10V uses word addresses---byte addresses shifted right two bits---to
93e79dbd
JB
3202refer to code. Thus, the D10V can use 16-bit words to address 256kb of
3203code space.
3204
3205However, this means that code pointers and data pointers have different
3206forms on the D10V. The 16-bit word @code{0xC020} refers to byte address
3207@code{0xC020} when used as a data address, but refers to byte address
3208@code{0x30080} when used as a code address.
3209
3210(The D10V also uses separate code and data address spaces, which also
3211affects the correspondence between pointers and addresses, but we're
3212going to ignore that here; this example is already too long.)
3213
56caf160
EZ
3214To cope with architectures like this---the D10V is not the only
3215one!---@value{GDBN} tries to distinguish between @dfn{addresses}, which are
93e79dbd
JB
3216byte numbers, and @dfn{pointers}, which are the target's representation
3217of an address of a particular type of data. In the example above,
3218@code{0xC020} is the pointer, which refers to one of the addresses
3219@code{0xC020} or @code{0x30080}, depending on the type imposed upon it.
3220@value{GDBN} provides functions for turning a pointer into an address
3221and vice versa, in the appropriate way for the current architecture.
3222
3223Unfortunately, since addresses and pointers are identical on almost all
3224processors, this distinction tends to bit-rot pretty quickly. Thus,
3225each time you port @value{GDBN} to an architecture which does
3226distinguish between pointers and addresses, you'll probably need to
3227clean up some architecture-independent code.
3228
3229Here are functions which convert between pointers and addresses:
3230
3231@deftypefun CORE_ADDR extract_typed_address (void *@var{buf}, struct type *@var{type})
3232Treat the bytes at @var{buf} as a pointer or reference of type
3233@var{type}, and return the address it represents, in a manner
3234appropriate for the current architecture. This yields an address
3235@value{GDBN} can use to read target memory, disassemble, etc. Note that
3236@var{buf} refers to a buffer in @value{GDBN}'s memory, not the
3237inferior's.
3238
3239For example, if the current architecture is the Intel x86, this function
3240extracts a little-endian integer of the appropriate length from
3241@var{buf} and returns it. However, if the current architecture is the
3242D10V, this function will return a 16-bit integer extracted from
3243@var{buf}, multiplied by four if @var{type} is a pointer to a function.
3244
3245If @var{type} is not a pointer or reference type, then this function
3246will signal an internal error.
3247@end deftypefun
3248
3249@deftypefun CORE_ADDR store_typed_address (void *@var{buf}, struct type *@var{type}, CORE_ADDR @var{addr})
3250Store the address @var{addr} in @var{buf}, in the proper format for a
3251pointer of type @var{type} in the current architecture. Note that
3252@var{buf} refers to a buffer in @value{GDBN}'s memory, not the
3253inferior's.
3254
3255For example, if the current architecture is the Intel x86, this function
3256stores @var{addr} unmodified as a little-endian integer of the
3257appropriate length in @var{buf}. However, if the current architecture
3258is the D10V, this function divides @var{addr} by four if @var{type} is
3259a pointer to a function, and then stores it in @var{buf}.
3260
3261If @var{type} is not a pointer or reference type, then this function
3262will signal an internal error.
3263@end deftypefun
3264
f23631e4 3265@deftypefun CORE_ADDR value_as_address (struct value *@var{val})
93e79dbd
JB
3266Assuming that @var{val} is a pointer, return the address it represents,
3267as appropriate for the current architecture.
3268
3269This function actually works on integral values, as well as pointers.
3270For pointers, it performs architecture-specific conversions as
3271described above for @code{extract_typed_address}.
3272@end deftypefun
3273
3274@deftypefun CORE_ADDR value_from_pointer (struct type *@var{type}, CORE_ADDR @var{addr})
3275Create and return a value representing a pointer of type @var{type} to
3276the address @var{addr}, as appropriate for the current architecture.
3277This function performs architecture-specific conversions as described
3278above for @code{store_typed_address}.
3279@end deftypefun
3280
4a9bb1df 3281Here are two functions which architectures can define to indicate the
93e79dbd
JB
3282relationship between pointers and addresses. These have default
3283definitions, appropriate for architectures on which all pointers are
fc0c74b1 3284simple unsigned byte addresses.
93e79dbd 3285
473f94e6 3286@deftypefun CORE_ADDR gdbarch_pointer_to_address (struct gdbarch *@var{gdbarch}, struct type *@var{type}, char *@var{buf})
93e79dbd
JB
3287Assume that @var{buf} holds a pointer of type @var{type}, in the
3288appropriate format for the current architecture. Return the byte
3289address the pointer refers to.
3290
3291This function may safely assume that @var{type} is either a pointer or a
56caf160 3292C@t{++} reference type.
4a9bb1df 3293@end deftypefun
93e79dbd 3294
473f94e6 3295@deftypefun void gdbarch_address_to_pointer (struct gdbarch *@var{gdbarch}, struct type *@var{type}, char *@var{buf}, CORE_ADDR @var{addr})
93e79dbd
JB
3296Store in @var{buf} a pointer of type @var{type} representing the address
3297@var{addr}, in the appropriate format for the current architecture.
3298
3299This function may safely assume that @var{type} is either a pointer or a
56caf160 3300C@t{++} reference type.
4a9bb1df 3301@end deftypefun
93e79dbd 3302
b6fd0dfb 3303@node Address Classes
b5b0480a
KB
3304@section Address Classes
3305@cindex address classes
3306@cindex DW_AT_byte_size
3307@cindex DW_AT_address_class
3308
3309Sometimes information about different kinds of addresses is available
3310via the debug information. For example, some programming environments
3311define addresses of several different sizes. If the debug information
3312distinguishes these kinds of address classes through either the size
3313info (e.g, @code{DW_AT_byte_size} in @w{DWARF 2}) or through an explicit
3314address class attribute (e.g, @code{DW_AT_address_class} in @w{DWARF 2}), the
3315following macros should be defined in order to disambiguate these
3316types within @value{GDBN} as well as provide the added information to
3317a @value{GDBN} user when printing type expressions.
3318
473f94e6 3319@deftypefun int gdbarch_address_class_type_flags (struct gdbarch *@var{gdbarch}, int @var{byte_size}, int @var{dwarf2_addr_class})
b5b0480a
KB
3320Returns the type flags needed to construct a pointer type whose size
3321is @var{byte_size} and whose address class is @var{dwarf2_addr_class}.
3322This function is normally called from within a symbol reader. See
3323@file{dwarf2read.c}.
4a9bb1df 3324@end deftypefun
b5b0480a 3325
473f94e6 3326@deftypefun {char *} gdbarch_address_class_type_flags_to_name (struct gdbarch *@var{gdbarch}, int @var{type_flags})
b5b0480a
KB
3327Given the type flags representing an address class qualifier, return
3328its name.
4a9bb1df 3329@end deftypefun
473f94e6 3330@deftypefun int gdbarch_address_class_name_to_type_flags (struct gdbarch *@var{gdbarch}, int @var{name}, int *@var{type_flags_ptr})
d3e8051b 3331Given an address qualifier name, set the @code{int} referenced by @var{type_flags_ptr} to the type flags
b5b0480a 3332for that address class qualifier.
4a9bb1df 3333@end deftypefun
b5b0480a
KB
3334
3335Since the need for address classes is rather rare, none of
4a9bb1df
UW
3336the address class functions are defined by default. Predicate
3337functions are provided to detect when they are defined.
b5b0480a
KB
3338
3339Consider a hypothetical architecture in which addresses are normally
334032-bits wide, but 16-bit addresses are also supported. Furthermore,
3341suppose that the @w{DWARF 2} information for this architecture simply
3342uses a @code{DW_AT_byte_size} value of 2 to indicate the use of one
3343of these "short" pointers. The following functions could be defined
4a9bb1df 3344to implement the address class functions:
b5b0480a
KB
3345
3346@smallexample
3347somearch_address_class_type_flags (int byte_size,
3348 int dwarf2_addr_class)
f2abfe65 3349@{
b5b0480a
KB
3350 if (byte_size == 2)
3351 return TYPE_FLAG_ADDRESS_CLASS_1;
3352 else
3353 return 0;
f2abfe65 3354@}
b5b0480a
KB
3355
3356static char *
3357somearch_address_class_type_flags_to_name (int type_flags)
f2abfe65 3358@{
b5b0480a
KB
3359 if (type_flags & TYPE_FLAG_ADDRESS_CLASS_1)
3360 return "short";
3361 else
3362 return NULL;
f2abfe65 3363@}
b5b0480a
KB
3364
3365int
3366somearch_address_class_name_to_type_flags (char *name,
3367 int *type_flags_ptr)
f2abfe65 3368@{
b5b0480a 3369 if (strcmp (name, "short") == 0)
f2abfe65 3370 @{
b5b0480a
KB
3371 *type_flags_ptr = TYPE_FLAG_ADDRESS_CLASS_1;
3372 return 1;
f2abfe65 3373 @}
b5b0480a
KB
3374 else
3375 return 0;
f2abfe65 3376@}
b5b0480a
KB
3377@end smallexample
3378
3379The qualifier @code{@@short} is used in @value{GDBN}'s type expressions
587afa38
EZ
3380to indicate the presence of one of these ``short'' pointers. For
3381example if the debug information indicates that @code{short_ptr_var} is
3382one of these short pointers, @value{GDBN} might show the following
3383behavior:
b5b0480a
KB
3384
3385@smallexample
3386(gdb) ptype short_ptr_var
3387type = int * @@short
3388@end smallexample
3389
93e79dbd 3390
587afa38
EZ
3391@node Register Representation
3392@section Register Representation
3393
3394@menu
3395* Raw and Cooked Registers::
3396* Register Architecture Functions & Variables::
3397* Register Information Functions::
3398* Register and Memory Data::
3399* Register Caching::
3400@end menu
3401
3402@node Raw and Cooked Registers
3403@subsection Raw and Cooked Registers
13d01224 3404@cindex raw register representation
587afa38
EZ
3405@cindex cooked register representation
3406@cindex representations, raw and cooked registers
3407
3408@value{GDBN} considers registers to be a set with members numbered
3409linearly from 0 upwards. The first part of that set corresponds to real
3410physical registers, the second part to any @dfn{pseudo-registers}.
3411Pseudo-registers have no independent physical existence, but are useful
3412representations of information within the architecture. For example the
3413OpenRISC 1000 architecture has up to 32 general purpose registers, which
3414are typically represented as 32-bit (or 64-bit) integers. However the
3415GPRs are also used as operands to the floating point operations, and it
3416could be convenient to define a set of pseudo-registers, to show the
3417GPRs represented as floating point values.
3418
3419For any architecture, the implementer will decide on a mapping from
3420hardware to @value{GDBN} register numbers. The registers corresponding to real
3421hardware are referred to as @dfn{raw} registers, the remaining registers are
3422@dfn{pseudo-registers}. The total register set (raw and pseudo) is called
3423the @dfn{cooked} register set.
3424
3425
3426@node Register Architecture Functions & Variables
3427@subsection Functions and Variables Specifying the Register Architecture
3428@cindex @code{gdbarch} register architecture functions
3429
3430These @code{struct gdbarch} functions and variables specify the number
3431and type of registers in the architecture.
3432
3433@deftypefn {Architecture Function} CORE_ADDR read_pc (struct regcache *@var{regcache})
3434@end deftypefn
3435@deftypefn {Architecture Function} void write_pc (struct regcache *@var{regcache}, CORE_ADDR @var{val})
13d01224 3436
587afa38
EZ
3437Read or write the program counter. The default value of both
3438functions is @code{NULL} (no function available). If the program
3439counter is just an ordinary register, it can be specified in
3440@code{struct gdbarch} instead (see @code{pc_regnum} below) and it will
3441be read or written using the standard routines to access registers. This
3442function need only be specified if the program counter is not an
3443ordinary register.
3444
3445Any register information can be obtained using the supplied register
3446cache, @var{regcache}. @xref{Register Caching, , Register Caching}.
3447
3448@end deftypefn
3449
3450@deftypefn {Architecture Function} void pseudo_register_read (struct gdbarch *@var{gdbarch}, struct regcache *@var{regcache}, int @var{regnum}, const gdb_byte *@var{buf})
3451@end deftypefn
3452@deftypefn {Architecture Function} void pseudo_register_write (struct gdbarch *@var{gdbarch}, struct regcache *@var{regcache}, int @var{regnum}, const gdb_byte *@var{buf})
3453
3454These functions should be defined if there are any pseudo-registers.
3455The default value is @code{NULL}. @var{regnum} is the number of the
3456register to read or write (which will be a @dfn{cooked} register
3457number) and @var{buf} is the buffer where the value read will be
3458placed, or from which the value to be written will be taken. The
3459value in the buffer may be converted to or from a signed or unsigned
3460integral value using one of the utility functions (@pxref{Register and
d0384fc4 3461Memory Data, , Using Different Register and Memory Data
587afa38 3462Representations}).
af6c57ea 3463
587afa38
EZ
3464The access should be for the specified architecture,
3465@var{gdbarch}. Any register information can be obtained using the
3466supplied register cache, @var{regcache}. @xref{Register Caching, ,
3467Register Caching}.
9fb4dd36 3468
587afa38 3469@end deftypefn
13d01224 3470
587afa38
EZ
3471@deftypevr {Architecture Variable} int sp_regnum
3472@vindex sp_regnum
3473@cindex stack pointer
3474@cindex @kbd{$sp}
9fb4dd36 3475
587afa38
EZ
3476This specifies the register holding the stack pointer, which may be a
3477raw or pseudo-register. It defaults to -1 (not defined), but it is an
3478error for it not to be defined.
9fb4dd36 3479
587afa38
EZ
3480The value of the stack pointer register can be accessed withing
3481@value{GDBN} as the variable @kbd{$sp}.
3482
3483@end deftypevr
3484
3485@deftypevr {Architecture Variable} int pc_regnum
3486@vindex pc_regnum
3487@cindex program counter
3488@cindex @kbd{$pc}
3489
3490This specifies the register holding the program counter, which may be a
3491raw or pseudo-register. It defaults to -1 (not defined). If
3492@code{pc_regnum} is not defined, then the functions @code{read_pc} and
3493@code{write_pc} (see above) must be defined.
3494
3495The value of the program counter (whether defined as a register, or
3496through @code{read_pc} and @code{write_pc}) can be accessed withing
3497@value{GDBN} as the variable @kbd{$pc}.
3498
3499@end deftypevr
3500
3501@deftypevr {Architecture Variable} int ps_regnum
3502@vindex ps_regnum
3503@cindex processor status register
3504@cindex status register
3505@cindex @kbd{$ps}
3506
3507This specifies the register holding the processor status (often called
3508the status register), which may be a raw or pseudo-register. It
3509defaults to -1 (not defined).
3510
3511If defined, the value of this register can be accessed withing
3512@value{GDBN} as the variable @kbd{$ps}.
3513
3514@end deftypevr
3515
3516@deftypevr {Architecture Variable} int fp0_regnum
3517@vindex fp0_regnum
3518@cindex first floating point register
3519
3520This specifies the first floating point register. It defaults to
35210. @code{fp0_regnum} is not needed unless the target offers support
3522for floating point.
9fb4dd36 3523
587afa38 3524@end deftypevr
9fb4dd36 3525
587afa38
EZ
3526@node Register Information Functions
3527@subsection Functions Giving Register Information
3528@cindex @code{gdbarch} register information functions
9fb4dd36 3529
587afa38
EZ
3530These functions return information about registers.
3531
3532@deftypefn {Architecture Function} {const char *} register_name (struct gdbarch *@var{gdbarch}, int @var{regnum})
3533
3534This function should convert a register number (raw or pseudo) to a
3535register name (as a C @code{const char *}). This is used both to
3536determine the name of a register for output and to work out the meaning
3537of any register names used as input. The function may also return
3538@code{NULL}, to indicate that @var{regnum} is not a valid register.
3539
3540For example with the OpenRISC 1000, @value{GDBN} registers 0-31 are the
3541General Purpose Registers, register 32 is the program counter and
3542register 33 is the supervision register (i.e.@: the processor status
3543register), which map to the strings @code{"gpr00"} through
3544@code{"gpr31"}, @code{"pc"} and @code{"sr"} respectively. This means
3545that the @value{GDBN} command @kbd{print $gpr5} should print the value of
3546the OR1K general purpose register 5@footnote{
3547@cindex frame pointer
3548@cindex @kbd{$fp}
3549Historically, @value{GDBN} always had a concept of a frame pointer
3550register, which could be accessed via the @value{GDBN} variable,
3551@kbd{$fp}. That concept is now deprecated, recognizing that not all
3552architectures have a frame pointer. However if an architecture does
3553have a frame pointer register, and defines a register or
3554pseudo-register with the name @code{"fp"}, then that register will be
3555used as the value of the @kbd{$fp} variable.}.
3556
3557The default value for this function is @code{NULL}, meaning
3558undefined. It should always be defined.
3559
3560The access should be for the specified architecture, @var{gdbarch}.
6f6ef15a 3561
9fb4dd36
JB
3562@end deftypefn
3563
587afa38 3564@deftypefn {Architecture Function} {struct type *} register_type (struct gdbarch *@var{gdbarch}, int @var{regnum})
9fb4dd36 3565
587afa38
EZ
3566Given a register number, this function identifies the type of data it
3567may be holding, specified as a @code{struct type}. @value{GDBN} allows
3568creation of arbitrary types, but a number of built in types are
3569provided (@code{builtin_type_void}, @code{builtin_type_int32} etc),
3570together with functions to derive types from these.
3571
3572Typically the program counter will have a type of ``pointer to
3573function'' (it points to code), the frame pointer and stack pointer
3574will have types of ``pointer to void'' (they point to data on the stack)
3575and all other integer registers will have a type of 32-bit integer or
357664-bit integer.
3577
3578This information guides the formatting when displaying register
3579information. The default value is @code{NULL} meaning no information is
3580available to guide formatting when displaying registers.
3581
3582@end deftypefn
3583
3584@deftypefn {Architecture Function} void print_registers_info (struct gdbarch *@var{gdbarch}, struct ui_file *@var{file}, struct frame_info *@var{frame}, int @var{regnum}, int @var{all})
3585
3586Define this function to print out one or all of the registers for the
3587@value{GDBN} @kbd{info registers} command. The default value is the
3588function @code{default_print_registers_info}, which uses the register
3589type information (see @code{register_type} above) to determine how each
3590register should be printed. Define a custom version of this function
3591for fuller control over how the registers are displayed.
3592
3593The access should be for the specified architecture, @var{gdbarch},
7a9dd1b2 3594with output to the file specified by the User Interface
587afa38
EZ
3595Independent Output file handle, @var{file} (@pxref{UI-Independent
3596Output, , UI-Independent Output---the @code{ui_out}
3597Functions}).
3598
3599The registers should show their values in the frame specified by
3600@var{frame}. If @var{regnum} is -1 and @var{all} is zero, then all
3601the ``significant'' registers should be shown (the implementer should
3602decide which registers are ``significant''). Otherwise only the value of
3603the register specified by @var{regnum} should be output. If
3604@var{regnum} is -1 and @var{all} is non-zero (true), then the value of
3605all registers should be shown.
3606
3607By default @code{default_print_registers_info} prints one register per
3608line, and if @var{all} is zero omits floating-point registers.
3609
3610@end deftypefn
3611
3612@deftypefn {Architecture Function} void print_float_info (struct gdbarch *@var{gdbarch}, struct ui_file *@var{file}, struct frame_info *@var{frame}, const char *@var{args})
3613
3614Define this function to provide output about the floating point unit and
3615registers for the @value{GDBN} @kbd{info float} command respectively.
3616The default value is @code{NULL} (not defined), meaning no information
3617will be provided.
3618
3619The @var{gdbarch} and @var{file} and @var{frame} arguments have the same
3620meaning as in the @code{print_registers_info} function above. The string
3621@var{args} contains any supplementary arguments to the @kbd{info float}
3622command.
3623
3624Define this function if the target supports floating point operations.
6f6ef15a 3625
9fb4dd36
JB
3626@end deftypefn
3627
587afa38
EZ
3628@deftypefn {Architecture Function} void print_vector_info (struct gdbarch *@var{gdbarch}, struct ui_file *@var{file}, struct frame_info *@var{frame}, const char *@var{args})
3629
3630Define this function to provide output about the vector unit and
3631registers for the @value{GDBN} @kbd{info vector} command respectively.
3632The default value is @code{NULL} (not defined), meaning no information
3633will be provided.
3634
3635The @var{gdbarch}, @var{file} and @var{frame} arguments have the
3636same meaning as in the @code{print_registers_info} function above. The
3637string @var{args} contains any supplementary arguments to the @kbd{info
3638vector} command.
3639
3640Define this function if the target supports vector operations.
9fb4dd36 3641
9fb4dd36
JB
3642@end deftypefn
3643
587afa38
EZ
3644@deftypefn {Architecture Function} int register_reggroup_p (struct gdbarch *@var{gdbarch}, int @var{regnum}, struct reggroup *@var{group})
3645
3646@value{GDBN} groups registers into different categories (general,
3647vector, floating point etc). This function, given a register,
3648@var{regnum}, and group, @var{group}, returns 1 (true) if the register
3649is in the group and 0 (false) otherwise.
3650
3651The information should be for the specified architecture,
3652@var{gdbarch}
3653
3654The default value is the function @code{default_register_reggroup_p}
3655which will do a reasonable job based on the type of the register (see
3656the function @code{register_type} above), with groups for general
3657purpose registers, floating point registers, vector registers and raw
3658(i.e not pseudo) registers.
3659
3660@end deftypefn
9fb4dd36 3661
b6fd0dfb 3662@node Register and Memory Data
587afa38 3663@subsection Using Different Register and Memory Data Representations
13d01224
AC
3664@cindex register representation
3665@cindex memory representation
3666@cindex representations, register and memory
3667@cindex register data formats, converting
3668@cindex @code{struct value}, converting register contents to
3669
587afa38
EZ
3670Some architectures have different representations of data objects,
3671depending whether the object is held in a register or memory. For
3672example:
13d01224
AC
3673
3674@itemize @bullet
3675
3676@item
3677The Alpha architecture can represent 32 bit integer values in
3678floating-point registers.
3679
3680@item
3681The x86 architecture supports 80-bit floating-point registers. The
587afa38
EZ
3682@code{long double} data type occupies 96 bits in memory but only 80
3683bits when stored in a register.
13d01224
AC
3684
3685@end itemize
3686
3687In general, the register representation of a data type is determined by
3688the architecture, or @value{GDBN}'s interface to the architecture, while
3689the memory representation is determined by the Application Binary
3690Interface.
3691
3692For almost all data types on almost all architectures, the two
3693representations are identical, and no special handling is needed.
587afa38
EZ
3694However, they do occasionally differ. An architecture may define the
3695following @code{struct gdbarch} functions to request conversions
3696between the register and memory representations of a data type:
13d01224 3697
587afa38 3698@deftypefn {Architecture Function} int gdbarch_convert_register_p (struct gdbarch *@var{gdbarch}, int @var{reg})
13d01224 3699
587afa38
EZ
3700Return non-zero (true) if the representation of a data value stored in
3701this register may be different to the representation of that same data
3702value when stored in memory. The default value is @code{NULL}
3703(undefined).
83acabca 3704
587afa38
EZ
3705If this function is defined and returns non-zero, the @code{struct
3706gdbarch} functions @code{gdbarch_register_to_value} and
3707@code{gdbarch_value_to_register} (see below) should be used to perform
3708any necessary conversion.
13d01224 3709
587afa38
EZ
3710If defined, this function should return zero for the register's native
3711type, when no conversion is necessary.
3712@end deftypefn
13d01224 3713
587afa38 3714@deftypefn {Architecture Function} void gdbarch_register_to_value (struct gdbarch *@var{gdbarch}, int @var{reg}, struct type *@var{type}, char *@var{from}, char *@var{to})
13d01224 3715
587afa38
EZ
3716Convert the value of register number @var{reg} to a data object of
3717type @var{type}. The buffer at @var{from} holds the register's value
3718in raw format; the converted value should be placed in the buffer at
3719@var{to}.
3720
3721@quotation
3722@emph{Note:} @code{gdbarch_register_to_value} and
3723@code{gdbarch_value_to_register} take their @var{reg} and @var{type}
3724arguments in different orders.
3725@end quotation
3726
3727@code{gdbarch_register_to_value} should only be used with registers
3728for which the @code{gdbarch_convert_register_p} function returns a
3729non-zero value.
3730
3731@end deftypefn
3732
3733@deftypefn {Architecture Function} void gdbarch_value_to_register (struct gdbarch *@var{gdbarch}, struct type *@var{type}, int @var{reg}, char *@var{from}, char *@var{to})
13d01224 3734
13d01224
AC
3735Convert a data value of type @var{type} to register number @var{reg}'
3736raw format.
3737
587afa38
EZ
3738@quotation
3739@emph{Note:} @code{gdbarch_register_to_value} and
3740@code{gdbarch_value_to_register} take their @var{reg} and @var{type}
3741arguments in different orders.
3742@end quotation
13d01224 3743
587afa38
EZ
3744@code{gdbarch_value_to_register} should only be used with registers
3745for which the @code{gdbarch_convert_register_p} function returns a
3746non-zero value.
3747
3748@end deftypefn
3749
3750@node Register Caching
3751@subsection Register Caching
3752@cindex register caching
3753
3754Caching of registers is used, so that the target does not need to be
3755accessed and reanalyzed multiple times for each register in
3756circumstances where the register value cannot have changed.
3757
3758@cindex @code{struct regcache}
3759@value{GDBN} provides @code{struct regcache}, associated with a
3760particular @code{struct gdbarch} to hold the cached values of the raw
3761registers. A set of functions is provided to access both the raw
3762registers (with @code{raw} in their name) and the full set of cooked
3763registers (with @code{cooked} in their name). Functions are provided
3764to ensure the register cache is kept synchronized with the values of
3765the actual registers in the target.
3766
3767Accessing registers through the @code{struct regcache} routines will
3768ensure that the appropriate @code{struct gdbarch} functions are called
3769when necessary to access the underlying target architecture. In general
3770users should use the @dfn{cooked} functions, since these will map to the
3771@dfn{raw} functions automatically as appropriate.
3772
3773@findex regcache_cooked_read
3774@findex regcache_cooked_write
3775@cindex @code{gdb_byte}
3776@findex regcache_cooked_read_signed
3777@findex regcache_cooked_read_unsigned
3778@findex regcache_cooked_write_signed
3779@findex regcache_cooked_write_unsigned
3780The two key functions are @code{regcache_cooked_read} and
3781@code{regcache_cooked_write} which read or write a register from or to
3782a byte buffer (type @code{gdb_byte *}). For convenience the wrapper
3783functions @code{regcache_cooked_read_signed},
3784@code{regcache_cooked_read_unsigned},
3785@code{regcache_cooked_write_signed} and
3786@code{regcache_cooked_write_unsigned} are provided, which read or
3787write the value using the buffer and convert to or from an integral
3788value as appropriate.
13d01224 3789
b6fd0dfb 3790@node Frame Interpretation
c906108c
SS
3791@section Frame Interpretation
3792
587afa38
EZ
3793@menu
3794* All About Stack Frames::
3795* Frame Handling Terminology::
3796* Prologue Caches::
3797* Functions and Variable to Analyze Frames::
3798* Functions to Access Frame Data::
3799* Analyzing Stacks---Frame Sniffers::
3800@end menu
3801
3802@node All About Stack Frames
3803@subsection All About Stack Frames
3804
3805@value{GDBN} needs to understand the stack on which local (automatic)
3806variables are stored. The area of the stack containing all the local
3807variables for a function invocation is known as the @dfn{stack frame}
3808for that function (or colloquially just as the @dfn{frame}). In turn the
3809function that called the function will have its stack frame, and so on
3810back through the chain of functions that have been called.
3811
3812Almost all architectures have one register dedicated to point to the
3813end of the stack (the @dfn{stack pointer}). Many have a second register
3814which points to the start of the currently active stack frame (the
3815@dfn{frame pointer}). The specific arrangements for an architecture are
3816a key part of the ABI.
3817
3818A diagram helps to explain this. Here is a simple program to compute
3819factorials:
3820
3821@smallexample
3822#include <stdio.h>
3823int fact (int n)
3824@{
3825 if (0 == n)
3826 @{
3827 return 1;
3828 @}
3829 else
3830 @{
3831 return n * fact (n - 1);
3832 @}
3833@}
3834
3835main ()
3836@{
3837 int i;
3838
3839 for (i = 0; i < 10; i++)
3840 @{
3841 int f = fact (i);
3842 printf ("%d! = %d\n", i, f);
3843 @}
3844@}
3845@end smallexample
3846
3847Consider the state of the stack when the code reaches line 6 after the
3848main program has called @code{fact@w{ }(3)}. The chain of function
3849calls will be @code{main ()}, @code{fact@w{ }(3)}, @code{fact@w{
3850}(2)}, @code{@w{fact (1)}} and @code{fact@w{ }(0)}.
3851
3852In this illustration the stack is falling (as used for example by the
3853OpenRISC 1000 ABI). The stack pointer (SP) is at the end of the stack
3854(lowest address) and the frame pointer (FP) is at the highest address
3855in the current stack frame. The following diagram shows how the stack
3856looks.
3857
3858@center @image{stack_frame,14cm}
3859
3860In each stack frame, offset 0 from the stack pointer is the frame
3861pointer of the previous frame and offset 4 (this is illustrating a
386232-bit architecture) from the stack pointer is the return address.
3863Local variables are indexed from the frame pointer, with negative
3864indexes. In the function @code{fact}, offset -4 from the frame
3865pointer is the argument @var{n}. In the @code{main} function, offset
3866-4 from the frame pointer is the local variable @var{i} and offset -8
3867from the frame pointer is the local variable @var{f}@footnote{This is
3868a simplified example for illustrative purposes only. Good optimizing
3869compilers would not put anything on the stack for such simple
3870functions. Indeed they might eliminate the recursion and use of the
3871stack entirely!}.
3872
3873It is very easy to get confused when examining stacks. @value{GDBN}
3874has terminology it uses rigorously throughout. The stack frame of the
3875function currently executing, or where execution stopped is numbered
3876zero. In this example frame #0 is the stack frame of the call to
3877@code{fact@w{ }(0)}. The stack frame of its calling function
3878(@code{fact@w{ }(1)} in this case) is numbered #1 and so on back
3879through the chain of calls.
3880
3881The main @value{GDBN} data structure describing frames is
3882 @code{@w{struct frame_info}}. It is not used directly, but only via
3883its accessor functions. @code{frame_info} includes information about
3884the registers in the frame and a pointer to the code of the function
3885with which the frame is associated. The entire stack is represented as
3886a linked list of @code{frame_info} structs.
3887
3888@node Frame Handling Terminology
3889@subsection Frame Handling Terminology
3890
3891It is easy to get confused when referencing stack frames. @value{GDBN}
3892uses some precise terminology.
3893
3894@itemize @bullet
3895
3896@item
3897@cindex THIS frame
3898@cindex stack frame, definition of THIS frame
3899@cindex frame, definition of THIS frame
3900@dfn{THIS} frame is the frame currently under consideration.
3901
3902@item
3903@cindex NEXT frame
3904@cindex stack frame, definition of NEXT frame
3905@cindex frame, definition of NEXT frame
3906The @dfn{NEXT} frame, also sometimes called the inner or newer frame is the
3907frame of the function called by the function of THIS frame.
3908
3909@item
3910@cindex PREVIOUS frame
3911@cindex stack frame, definition of PREVIOUS frame
3912@cindex frame, definition of PREVIOUS frame
3913The @dfn{PREVIOUS} frame, also sometimes called the outer or older frame is
3914the frame of the function which called the function of THIS frame.
3915
3916@end itemize
3917
3918So in the example in the previous section (@pxref{All About Stack
3919Frames, , All About Stack Frames}), if THIS frame is #3 (the call to
3920@code{fact@w{ }(3)}), the NEXT frame is frame #2 (the call to
3921@code{fact@w{ }(2)}) and the PREVIOUS frame is frame #4 (the call to
3922@code{main@w{ }()}).
3923
3924@cindex innermost frame
3925@cindex stack frame, definition of innermost frame
3926@cindex frame, definition of innermost frame
3927The @dfn{innermost} frame is the frame of the current executing
3928function, or where the program stopped, in this example, in the middle
3929of the call to @code{@w{fact (0))}}. It is always numbered frame #0.
3930
3931@cindex base of a frame
3932@cindex stack frame, definition of base of a frame
3933@cindex frame, definition of base of a frame
3934The @dfn{base} of a frame is the address immediately before the start
3935of the NEXT frame. For a stack which grows down in memory (a
3936@dfn{falling} stack) this will be the lowest address and for a stack
3937which grows up in memory (a @dfn{rising} stack) this will be the
3938highest address in the frame.
3939
3940@value{GDBN} functions to analyze the stack are typically given a
3941pointer to the NEXT frame to determine information about THIS
3942frame. Information about THIS frame includes data on where the
3943registers of the PREVIOUS frame are stored in this stack frame. In
3944this example the frame pointer of the PREVIOUS frame is stored at
3945offset 0 from the stack pointer of THIS frame.
3946
3947@cindex unwinding
3948@cindex stack frame, definition of unwinding
3949@cindex frame, definition of unwinding
3950The process whereby a function is given a pointer to the NEXT
3951frame to work out information about THIS frame is referred to as
3952@dfn{unwinding}. The @value{GDBN} functions involved in this typically
3953include unwind in their name.
3954
3955@cindex sniffing
3956@cindex stack frame, definition of sniffing
3957@cindex frame, definition of sniffing
3958The process of analyzing a target to determine the information that
3959should go in struct frame_info is called @dfn{sniffing}. The functions
3960that carry this out are called sniffers and typically include sniffer
3961in their name. More than one sniffer may be required to extract all
3962the information for a particular frame.
3963
3964@cindex sentinel frame
3965@cindex stack frame, definition of sentinel frame
3966@cindex frame, definition of sentinel frame
3967Because so many functions work using the NEXT frame, there is an issue
3968about addressing the innermost frame---it has no NEXT frame. To solve
3969this @value{GDBN} creates a dummy frame #-1, known as the
3970@dfn{sentinel} frame.
3971
3972@node Prologue Caches
3973@subsection Prologue Caches
3974
3975@cindex function prologue
3976@cindex prologue of a function
3977All the frame sniffing functions typically examine the code at the
3978start of the corresponding function, to determine the state of
3979registers. The ABI will save old values and set new values of key
3980registers at the start of each function in what is known as the
3981function @dfn{prologue}.
3982
3983@cindex prologue cache
3984For any particular stack frame this data does not change, so all the
3985standard unwinding functions, in addition to receiving a pointer to
3986the NEXT frame as their first argument, receive a pointer to a
3987@dfn{prologue cache} as their second argument. This can be used to store
3988values associated with a particular frame, for reuse on subsequent
3989calls involving the same frame.
3990
3991It is up to the user to define the structure used (it is a
3992@code{void@w{ }*} pointer) and arrange allocation and deallocation of
3993storage. However for general use, @value{GDBN} provides
3994@code{@w{struct trad_frame_cache}}, with a set of accessor
3995routines. This structure holds the stack and code address of
3996THIS frame, the base address of the frame, a pointer to the
3997struct @code{frame_info} for the NEXT frame and details of
3998where the registers of the PREVIOUS frame may be found in THIS
3999frame.
4000
4001Typically the first time any sniffer function is called with NEXT
4002frame, the prologue sniffer for THIS frame will be @code{NULL}. The
4003sniffer will analyze the frame, allocate a prologue cache structure
4004and populate it. Subsequent calls using the same NEXT frame will
4005pass in this prologue cache, so the data can be returned with no
4006additional analysis.
4007
4008@node Functions and Variable to Analyze Frames
4009@subsection Functions and Variable to Analyze Frames
4010
4011These struct @code{gdbarch} functions and variable should be defined
4012to provide analysis of the stack frame and allow it to be adjusted as
4013required.
4014
4015@deftypefn {Architecture Function} CORE_ADDR skip_prologue (struct gdbarch *@var{gdbarch}, CORE_ADDR @var{pc})
4016
4017The prologue of a function is the code at the beginning of the
4018function which sets up the stack frame, saves the return address
4019etc. The code representing the behavior of the function starts after
4020the prologue.
4021
4022This function skips past the prologue of a function if the program
4023counter, @var{pc}, is within the prologue of a function. The result is
4024the program counter immediately after the prologue. With modern
4025optimizing compilers, this may be a far from trivial exercise. However
4026the required information may be within the binary as DWARF2 debugging
4027information, making the job much easier.
4028
4029The default value is @code{NULL} (not defined). This function should always
4030be provided, but can take advantage of DWARF2 debugging information,
4031if that is available.
4032
4033@end deftypefn
4034
4035@deftypefn {Architecture Function} int inner_than (CORE_ADDR @var{lhs}, CORE_ADDR @var{rhs})
4036@findex core_addr_lessthan
4037@findex core_addr_greaterthan
4038
4039Given two frame or stack pointers, return non-zero (true) if the first
4040represents the @dfn{inner} stack frame and 0 (false) otherwise. This
4041is used to determine whether the target has a stack which grows up in
4042memory (rising stack) or grows down in memory (falling stack).
4043@xref{All About Stack Frames, , All About Stack Frames}, for an
4044explanation of @dfn{inner} frames.
4045
4046The default value of this function is @code{NULL} and it should always
4047be defined. However for almost all architectures one of the built-in
4048functions can be used: @code{core_addr_lessthan} (for stacks growing
4049down in memory) or @code{core_addr_greaterthan} (for stacks growing up
4050in memory).
4051
4052@end deftypefn
4053
4054@anchor{frame_align}
4055@deftypefn {Architecture Function} CORE_ADDR frame_align (struct gdbarch *@var{gdbarch}, CORE_ADDR @var{address})
4056@findex align_down
4057@findex align_up
4058
4059The architecture may have constraints on how its frames are
4060aligned. For example the OpenRISC 1000 ABI requires stack frames to be
4061double-word aligned, but 32-bit versions of the architecture allocate
4062single-word values to the stack. Thus extra padding may be needed at
4063the end of a stack frame.
4064
4065Given a proposed address for the stack pointer, this function
4066returns a suitably aligned address (by expanding the stack frame).
4067
4068The default value is @code{NULL} (undefined). This function should be defined
4069for any architecture where it is possible the stack could become
4070misaligned. The utility functions @code{align_down} (for falling
4071stacks) and @code{align_up} (for rising stacks) will facilitate the
4072implementation of this function.
4073
4074@end deftypefn
4075
4076@deftypevr {Architecture Variable} int frame_red_zone_size
4077
4078Some ABIs reserve space beyond the end of the stack for use by leaf
4079functions without prologue or epilogue or by exception handlers (for
4080example the OpenRISC 1000).
4081
4082This is known as a @dfn{red zone} (AMD terminology). The @sc{amd64}
4083(nee x86-64) ABI documentation refers to the @dfn{red zone} when
4084describing this scratch area.
4085
4086The default value is 0. Set this field if the architecture has such a
4087red zone. The value must be aligned as required by the ABI (see
4088@code{frame_align} above for an explanation of stack frame alignment).
4089
4090@end deftypevr
4091
4092@node Functions to Access Frame Data
4093@subsection Functions to Access Frame Data
4094
4095These functions provide access to key registers and arguments in the
4096stack frame.
4097
4098@deftypefn {Architecture Function} CORE_ADDR unwind_pc (struct gdbarch *@var{gdbarch}, struct frame_info *@var{next_frame})
4099
4100This function is given a pointer to the NEXT stack frame (@pxref{All
4101About Stack Frames, , All About Stack Frames}, for how frames are
4102represented) and returns the value of the program counter in the
4103PREVIOUS frame (i.e.@: the frame of the function that called THIS
4104one). This is commonly referred to as the @dfn{return address}.
4105
4106The implementation, which must be frame agnostic (work with any frame),
4107is typically no more than:
4108
4109@smallexample
4110ULONGEST pc;
4111pc = frame_unwind_register_unsigned (next_frame, @var{ARCH}_PC_REGNUM);
4112return gdbarch_addr_bits_remove (gdbarch, pc);
4113@end smallexample
4114
4115@end deftypefn
4116
4117@deftypefn {Architecture Function} CORE_ADDR unwind_sp (struct gdbarch *@var{gdbarch}, struct frame_info *@var{next_frame})
4118
4119This function is given a pointer to the NEXT stack frame
4120(@pxref{All About Stack Frames, , All About Stack Frames} for how
4121frames are represented) and returns the value of the stack pointer in
4122the PREVIOUS frame (i.e.@: the frame of the function that called
4123THIS one).
4124
4125The implementation, which must be frame agnostic (work with any frame),
4126is typically no more than:
4127
4128@smallexample
4129ULONGEST sp;
4130sp = frame_unwind_register_unsigned (next_frame, @var{ARCH}_SP_REGNUM);
4131return gdbarch_addr_bits_remove (gdbarch, sp);
4132@end smallexample
4133
4134@end deftypefn
4135
4136@deftypefn {Architecture Function} int frame_num_args (struct gdbarch *@var{gdbarch}, struct frame_info *@var{this_frame})
4137
4138This function is given a pointer to THIS stack frame (@pxref{All
4139About Stack Frames, , All About Stack Frames} for how frames are
4140represented), and returns the number of arguments that are being
4141passed, or -1 if not known.
4142
4143The default value is @code{NULL} (undefined), in which case the number of
4144arguments passed on any stack frame is always unknown. For many
4145architectures this will be a suitable default.
4146
4147@end deftypefn
4148
4149@node Analyzing Stacks---Frame Sniffers
4150@subsection Analyzing Stacks---Frame Sniffers
4151
4152When a program stops, @value{GDBN} needs to construct the chain of
4153struct @code{frame_info} representing the state of the stack using
4154appropriate @dfn{sniffers}.
4155
4156Each architecture requires appropriate sniffers, but they do not form
4157entries in @code{@w{struct gdbarch}}, since more than one sniffer may
4158be required and a sniffer may be suitable for more than one
4159@code{@w{struct gdbarch}}. Instead sniffers are associated with
4160architectures using the following functions.
4161
4162@itemize @bullet
4163
4164@item
4165@findex frame_unwind_append_sniffer
4166@code{frame_unwind_append_sniffer} is used to add a new sniffer to
4167analyze THIS frame when given a pointer to the NEXT frame.
4168
4169@item
4170@findex frame_base_append_sniffer
4171@code{frame_base_append_sniffer} is used to add a new sniffer
4172which can determine information about the base of a stack frame.
4173
4174@item
4175@findex frame_base_set_default
4176@code{frame_base_set_default} is used to specify the default base
4177sniffer.
4178
4179@end itemize
4180
4181These functions all take a reference to @code{@w{struct gdbarch}}, so
4182they are associated with a specific architecture. They are usually
4183called in the @code{gdbarch} initialization function, after the
4184@code{gdbarch} struct has been set up. Unless a default has been set, the
4185most recently appended sniffer will be tried first.
4186
4187The main frame unwinding sniffer (as set by
4188@code{frame_unwind_append_sniffer)} returns a structure specifying
4189a set of sniffing functions:
4190
4191@cindex @code{frame_unwind}
4192@smallexample
4193struct frame_unwind
4194@{
4195 enum frame_type type;
4196 frame_this_id_ftype *this_id;
4197 frame_prev_register_ftype *prev_register;
4198 const struct frame_data *unwind_data;
4199 frame_sniffer_ftype *sniffer;
4200 frame_prev_pc_ftype *prev_pc;
4201 frame_dealloc_cache_ftype *dealloc_cache;
4202@};
4203@end smallexample
4204
4205The @code{type} field indicates the type of frame this sniffer can
4206handle: normal, dummy (@pxref{Functions Creating Dummy Frames, ,
4207Functions Creating Dummy Frames}), signal handler or sentinel. Signal
4208handlers sometimes have their own simplified stack structure for
4209efficiency, so may need their own handlers.
4210
4211The @code{unwind_data} field holds additional information which may be
4212relevant to particular types of frame. For example it may hold
4213additional information for signal handler frames.
4214
4215The remaining fields define functions that yield different types of
4216information when given a pointer to the NEXT stack frame. Not all
4217functions need be provided. If an entry is @code{NULL}, the next sniffer will
4218be tried instead.
4219
4220@itemize @bullet
4221
4222@item
4223@code{this_id} determines the stack pointer and function (code
4224entry point) for THIS stack frame.
4225
4226@item
4227@code{prev_register} determines where the values of registers for
4228the PREVIOUS stack frame are stored in THIS stack frame.
4229
4230@item
4231@code{sniffer} takes a look at THIS frame's registers to
4232determine if this is the appropriate unwinder.
4233
4234@item
4235@code{prev_pc} determines the program counter for THIS
4236frame. Only needed if the program counter is not an ordinary register
4237(@pxref{Register Architecture Functions & Variables,
4238, Functions and Variables Specifying the Register Architecture}).
4239
4240@item
4241@code{dealloc_cache} frees any additional memory associated with
4242the prologue cache for this frame (@pxref{Prologue Caches, , Prologue
4243Caches}).
4244
4245@end itemize
4246
4247In general it is only the @code{this_id} and @code{prev_register}
4248fields that need be defined for custom sniffers.
4249
4250The frame base sniffer is much simpler. It is a @code{@w{struct
4251frame_base}}, which refers to the corresponding @code{frame_unwind}
4252struct and whose fields refer to functions yielding various addresses
4253within the frame.
4254
4255@cindex @code{frame_base}
4256@smallexample
4257struct frame_base
4258@{
4259 const struct frame_unwind *unwind;
4260 frame_this_base_ftype *this_base;
4261 frame_this_locals_ftype *this_locals;
4262 frame_this_args_ftype *this_args;
4263@};
4264@end smallexample
4265
4266All the functions referred to take a pointer to the NEXT frame as
4267argument. The function referred to by @code{this_base} returns the
4268base address of THIS frame, the function referred to by
4269@code{this_locals} returns the base address of local variables in THIS
4270frame and the function referred to by @code{this_args} returns the
4271base address of the function arguments in this frame.
4272
4273As described above, the base address of a frame is the address
4274immediately before the start of the NEXT frame. For a falling
4275stack, this is the lowest address in the frame and for a rising stack
4276it is the highest address in the frame. For most architectures the
4277same address is also the base address for local variables and
4278arguments, in which case the same function can be used for all three
4279entries@footnote{It is worth noting that if it cannot be determined in any
4280other way (for example by there being a register with the name
4281@code{"fp"}), then the result of the @code{this_base} function will be
4282used as the value of the frame pointer variable @kbd{$fp} in
4283@value{GDBN}. This is very often not correct (for example with the
4284OpenRISC 1000, this value is the stack pointer, @kbd{$sp}). In this
4285case a register (raw or pseudo) with the name @code{"fp"} should be
4286defined. It will be used in preference as the value of @kbd{$fp}.}.
4287
b6fd0dfb 4288@node Inferior Call Setup
c906108c 4289@section Inferior Call Setup
587afa38
EZ
4290@cindex calls to the inferior
4291
4292@menu
4293* About Dummy Frames::
4294* Functions Creating Dummy Frames::
4295@end menu
4296
4297@node About Dummy Frames
4298@subsection About Dummy Frames
4299@cindex dummy frames
4300
4301@value{GDBN} can call functions in the target code (for example by
4302using the @kbd{call} or @kbd{print} commands). These functions may be
4303breakpointed, and it is essential that if a function does hit a
4304breakpoint, commands like @kbd{backtrace} work correctly.
4305
4306This is achieved by making the stack look as though the function had
4307been called from the point where @value{GDBN} had previously stopped.
4308This requires that @value{GDBN} can set up stack frames appropriate for
4309such function calls.
4310
4311@node Functions Creating Dummy Frames
4312@subsection Functions Creating Dummy Frames
4313
4314The following functions provide the functionality to set up such
4315@dfn{dummy} stack frames.
4316
4317@deftypefn {Architecture Function} CORE_ADDR push_dummy_call (struct gdbarch *@var{gdbarch}, struct value *@var{function}, struct regcache *@var{regcache}, CORE_ADDR @var{bp_addr}, int @var{nargs}, struct value **@var{args}, CORE_ADDR @var{sp}, int @var{struct_return}, CORE_ADDR @var{struct_addr})
4318
4319This function sets up a dummy stack frame for the function about to be
4320called. @code{push_dummy_call} is given the arguments to be passed
4321and must copy them into registers or push them on to the stack as
4322appropriate for the ABI.
4323
4324@var{function} is a pointer to the function
4325that will be called and @var{regcache} the register cache from which
4326values should be obtained. @var{bp_addr} is the address to which the
4327function should return (which is breakpointed, so @value{GDBN} can
4328regain control, hence the name). @var{nargs} is the number of
4329arguments to pass and @var{args} an array containing the argument
4330values. @var{struct_return} is non-zero (true) if the function returns
4331a structure, and if so @var{struct_addr} is the address in which the
4332structure should be returned.
4333
4334 After calling this function, @value{GDBN} will pass control to the
4335target at the address of the function, which will find the stack and
4336registers set up just as expected.
4337
4338The default value of this function is @code{NULL} (undefined). If the
4339function is not defined, then @value{GDBN} will not allow the user to
4340call functions within the target being debugged.
4341
4342@end deftypefn
4343
4344@deftypefn {Architecture Function} {struct frame_id} unwind_dummy_id (struct gdbarch *@var{gdbarch}, struct frame_info *@var{next_frame})
4345
4346This is the inverse of @code{push_dummy_call} which restores the stack
4347pointer and program counter after a call to evaluate a function using
4348a dummy stack frame. The result is a @code{@w{struct frame_id}}, which
4349contains the value of the stack pointer and program counter to be
4350used.
4351
4352The NEXT frame pointer is provided as argument,
4353@var{next_frame}. THIS frame is the frame of the dummy function,
4354which can be unwound, to yield the required stack pointer and program
4355counter from the PREVIOUS frame.
4356
4357The default value is @code{NULL} (undefined). If @code{push_dummy_call} is
4358defined, then this function should also be defined.
c906108c 4359
587afa38
EZ
4360@end deftypefn
4361
4362@deftypefn {Architecture Function} CORE_ADDR push_dummy_code (struct gdbarch *@var{gdbarch}, CORE_ADDR @var{sp}, CORE_ADDR @var{funaddr}, struct value **@var{args}, int @var{nargs}, struct type *@var{value_type}, CORE_ADDR *@var{real_pc}, CORE_ADDR *@var{bp_addr}, struct regcache *@var{regcache})
4363
4364If this function is not defined (its default value is @code{NULL}), a dummy
4365call will use the entry point of the currently loaded code on the
4366target as its return address. A temporary breakpoint will be set
4367there, so the location must be writable and have room for a
4368breakpoint.
c906108c 4369
587afa38
EZ
4370It is possible that this default is not suitable. It might not be
4371writable (in ROM possibly), or the ABI might require code to be
4372executed on return from a call to unwind the stack before the
4373breakpoint is encountered.
c906108c 4374
587afa38
EZ
4375If either of these is the case, then push_dummy_code should be defined
4376to push an instruction sequence onto the end of the stack to which the
4377dummy call should return.
4378
4379The arguments are essentially the same as those to
4380@code{push_dummy_call}. However the function is provided with the
4381type of the function result, @var{value_type}, @var{bp_addr} is used
4382to return a value (the address at which the breakpoint instruction
4383should be inserted) and @var{real pc} is used to specify the resume
4384address when starting the call sequence. The function should return
4385the updated innermost stack address.
4386
4387@quotation
4388@emph{Note:} This does require that code in the stack can be executed.
4389Some Harvard architectures may not allow this.
4390@end quotation
4391
4392@end deftypefn
4393
b39f4988
JB
4394@node Adding support for debugging core files
4395@section Adding support for debugging core files
4396@cindex core files
4397
4398The prerequisite for adding core file support in @value{GDBN} is to have
4399core file support in BFD.
4400
4401Once BFD support is available, writing the apropriate
4402@code{regset_from_core_section} architecture function should be all
4403that is needed in order to add support for core files in @value{GDBN}.
4404
587afa38
EZ
4405@node Defining Other Architecture Features
4406@section Defining Other Architecture Features
4407
4408This section describes other functions and values in @code{gdbarch},
4409together with some useful macros, that you can use to define the
4410target architecture.
c906108c
SS
4411
4412@table @code
4413
4a9bb1df
UW
4414@item CORE_ADDR gdbarch_addr_bits_remove (@var{gdbarch}, @var{addr})
4415@findex gdbarch_addr_bits_remove
adf40b2e 4416If a raw machine instruction address includes any bits that are not
4a9bb1df
UW
4417really part of the address, then this function is used to zero those bits in
4418@var{addr}. This is only used for addresses of instructions, and even then not
4419in all contexts.
adf40b2e
JM
4420
4421For example, the two low-order bits of the PC on the Hewlett-Packard PA
44222.0 architecture contain the privilege level of the corresponding
4423instruction. Since instructions must always be aligned on four-byte
4424boundaries, the processor masks out these bits to generate the actual
4a9bb1df
UW
4425address of the instruction. @code{gdbarch_addr_bits_remove} would then for
4426example look like that:
4427@smallexample
4428arch_addr_bits_remove (CORE_ADDR addr)
4429@{
4430 return (addr &= ~0x3);
4431@}
4432@end smallexample
c906108c 4433
4a9bb1df
UW
4434@item int address_class_name_to_type_flags (@var{gdbarch}, @var{name}, @var{type_flags_ptr})
4435@findex address_class_name_to_type_flags
b5b0480a
KB
4436If @var{name} is a valid address class qualifier name, set the @code{int}
4437referenced by @var{type_flags_ptr} to the mask representing the qualifier
4438and return 1. If @var{name} is not a valid address class qualifier name,
4439return 0.
4440
4441The value for @var{type_flags_ptr} should be one of
4442@code{TYPE_FLAG_ADDRESS_CLASS_1}, @code{TYPE_FLAG_ADDRESS_CLASS_2}, or
4443possibly some combination of these values or'd together.
4444@xref{Target Architecture Definition, , Address Classes}.
4445
4a9bb1df
UW
4446@item int address_class_name_to_type_flags_p (@var{gdbarch})
4447@findex address_class_name_to_type_flags_p
4448Predicate which indicates whether @code{address_class_name_to_type_flags}
b5b0480a
KB
4449has been defined.
4450
4a9bb1df
UW
4451@item int gdbarch_address_class_type_flags (@var{gdbarch}, @var{byte_size}, @var{dwarf2_addr_class})
4452@findex gdbarch_address_class_type_flags
b5b0480a
KB
4453Given a pointers byte size (as described by the debug information) and
4454the possible @code{DW_AT_address_class} value, return the type flags
4455used by @value{GDBN} to represent this address class. The value
4456returned should be one of @code{TYPE_FLAG_ADDRESS_CLASS_1},
4457@code{TYPE_FLAG_ADDRESS_CLASS_2}, or possibly some combination of these
4458values or'd together.
4459@xref{Target Architecture Definition, , Address Classes}.
4460
4a9bb1df
UW
4461@item int gdbarch_address_class_type_flags_p (@var{gdbarch})
4462@findex gdbarch_address_class_type_flags_p
4463Predicate which indicates whether @code{gdbarch_address_class_type_flags_p} has
b5b0480a
KB
4464been defined.
4465
4a9bb1df
UW
4466@item const char *gdbarch_address_class_type_flags_to_name (@var{gdbarch}, @var{type_flags})
4467@findex gdbarch_address_class_type_flags_to_name
b5b0480a
KB
4468Return the name of the address class qualifier associated with the type
4469flags given by @var{type_flags}.
4470
4a9bb1df
UW
4471@item int gdbarch_address_class_type_flags_to_name_p (@var{gdbarch})
4472@findex gdbarch_address_class_type_flags_to_name_p
4473Predicate which indicates whether @code{gdbarch_address_class_type_flags_to_name} has been defined.
b5b0480a
KB
4474@xref{Target Architecture Definition, , Address Classes}.
4475
4a9bb1df
UW
4476@item void gdbarch_address_to_pointer (@var{gdbarch}, @var{type}, @var{buf}, @var{addr})
4477@findex gdbarch_address_to_pointer
93e79dbd
JB
4478Store in @var{buf} a pointer of type @var{type} representing the address
4479@var{addr}, in the appropriate format for the current architecture.
4a9bb1df 4480This function may safely assume that @var{type} is either a pointer or a
56caf160 4481C@t{++} reference type.
93e79dbd
JB
4482@xref{Target Architecture Definition, , Pointers Are Not Always Addresses}.
4483
4a9bb1df
UW
4484@item int gdbarch_believe_pcc_promotion (@var{gdbarch})
4485@findex gdbarch_believe_pcc_promotion
4486Used to notify if the compiler promotes a @code{short} or @code{char}
56caf160
EZ
4487parameter to an @code{int}, but still reports the parameter as its
4488original type, rather than the promoted type.
c906108c 4489
32c9a795
MD
4490@item gdbarch_bits_big_endian (@var{gdbarch})
4491@findex gdbarch_bits_big_endian
4492This is used if the numbering of bits in the targets does @strong{not} match
587afa38 4493the endianism of the target byte order. A value of 1 means that the bits
56caf160 4494are numbered in a big-endian bit order, 0 means little-endian.
c906108c 4495
32c9a795
MD
4496@item set_gdbarch_bits_big_endian (@var{gdbarch}, @var{bits_big_endian})
4497@findex set_gdbarch_bits_big_endian
4498Calling set_gdbarch_bits_big_endian with a value of 1 indicates that the
4499bits in the target are numbered in a big-endian bit order, 0 indicates
4500little-endian.
4501
c906108c 4502@item BREAKPOINT
56caf160 4503@findex BREAKPOINT
c906108c
SS
4504This is the character array initializer for the bit pattern to put into
4505memory where a breakpoint is set. Although it's common to use a trap
4506instruction for a breakpoint, it's not required; for instance, the bit
4507pattern could be an invalid instruction. The breakpoint must be no
4508longer than the shortest instruction of the architecture.
4509
56caf160 4510@code{BREAKPOINT} has been deprecated in favor of
4a9bb1df 4511@code{gdbarch_breakpoint_from_pc}.
7a292a7a 4512
c906108c 4513@item BIG_BREAKPOINT
56caf160
EZ
4514@itemx LITTLE_BREAKPOINT
4515@findex LITTLE_BREAKPOINT
4516@findex BIG_BREAKPOINT
c906108c
SS
4517Similar to BREAKPOINT, but used for bi-endian targets.
4518
56caf160 4519@code{BIG_BREAKPOINT} and @code{LITTLE_BREAKPOINT} have been deprecated in
4a9bb1df 4520favor of @code{gdbarch_breakpoint_from_pc}.
7a292a7a 4521
4a9bb1df
UW
4522@item const gdb_byte *gdbarch_breakpoint_from_pc (@var{gdbarch}, @var{pcptr}, @var{lenptr})
4523@findex gdbarch_breakpoint_from_pc
4524@anchor{gdbarch_breakpoint_from_pc} Use the program counter to determine the
2dd0da42 4525contents and size of a breakpoint instruction. It returns a pointer to
a655d424 4526a static string of bytes that encode a breakpoint instruction, stores the
2dd0da42
AC
4527length of the string to @code{*@var{lenptr}}, and adjusts the program
4528counter (if necessary) to point to the actual memory location where the
121c73f3
JK
4529breakpoint should be inserted. On input, the program counter
4530(@code{*@var{pcptr}} is the encoded inferior's PC register. If software
4531breakpoints are supported, the function sets this argument to the PC's
4532plain address. If software breakpoints are not supported, the function
4533returns NULL instead of the encoded breakpoint instruction.
c906108c
SS
4534
4535Although it is common to use a trap instruction for a breakpoint, it's
4536not required; for instance, the bit pattern could be an invalid
4537instruction. The breakpoint must be no longer than the shortest
4538instruction of the architecture.
4539
a655d424
JK
4540Provided breakpoint bytes can be also used by @code{bp_loc_is_permanent} to
4541detect permanent breakpoints. @code{gdbarch_breakpoint_from_pc} should return
4542an unchanged memory copy if it was called for a location with permanent
4543breakpoint as some architectures use breakpoint instructions containing
4544arbitrary parameter value.
4545
7a292a7a
SS
4546Replaces all the other @var{BREAKPOINT} macros.
4547
4a9bb1df
UW
4548@item int gdbarch_memory_insert_breakpoint (@var{gdbarch}, @var{bp_tgt})
4549@itemx gdbarch_memory_remove_breakpoint (@var{gdbarch}, @var{bp_tgt})
4550@findex gdbarch_memory_remove_breakpoint
4551@findex gdbarch_memory_insert_breakpoint
917317f4
JM
4552Insert or remove memory based breakpoints. Reasonable defaults
4553(@code{default_memory_insert_breakpoint} and
4554@code{default_memory_remove_breakpoint} respectively) have been
4a9bb1df
UW
4555provided so that it is not necessary to set these for most
4556architectures. Architectures which may want to set
4557@code{gdbarch_memory_insert_breakpoint} and @code{gdbarch_memory_remove_breakpoint} will likely have instructions that are oddly sized or are not stored in a
917317f4
JM
4558conventional manner.
4559
4560It may also be desirable (from an efficiency standpoint) to define
4561custom breakpoint insertion and removal routines if
4a9bb1df 4562@code{gdbarch_breakpoint_from_pc} needs to read the target's memory for some
917317f4
JM
4563reason.
4564
4a9bb1df
UW
4565@item CORE_ADDR gdbarch_adjust_breakpoint_address (@var{gdbarch}, @var{bpaddr})
4566@findex gdbarch_adjust_breakpoint_address
1485d690
KB
4567@cindex breakpoint address adjusted
4568Given an address at which a breakpoint is desired, return a breakpoint
4569address adjusted to account for architectural constraints on
4570breakpoint placement. This method is not needed by most targets.
4571
4572The FR-V target (see @file{frv-tdep.c}) requires this method.
4573The FR-V is a VLIW architecture in which a number of RISC-like
4574instructions are grouped (packed) together into an aggregate
4575instruction or instruction bundle. When the processor executes
4576one of these bundles, the component instructions are executed
4577in parallel.
4578
4579In the course of optimization, the compiler may group instructions
4580from distinct source statements into the same bundle. The line number
4581information associated with one of the latter statements will likely
4582refer to some instruction other than the first one in the bundle. So,
4583if the user attempts to place a breakpoint on one of these latter
4584statements, @value{GDBN} must be careful to @emph{not} place the break
4585instruction on any instruction other than the first one in the bundle.
4586(Remember though that the instructions within a bundle execute
4587in parallel, so the @emph{first} instruction is the instruction
4588at the lowest address and has nothing to do with execution order.)
4589
4a9bb1df 4590The FR-V's @code{gdbarch_adjust_breakpoint_address} method will adjust a
1485d690
KB
4591breakpoint's address by scanning backwards for the beginning of
4592the bundle, returning the address of the bundle.
4593
4594Since the adjustment of a breakpoint may significantly alter a user's
4595expectation, @value{GDBN} prints a warning when an adjusted breakpoint
4596is initially set and each time that that breakpoint is hit.
4597
4a9bb1df
UW
4598@item int gdbarch_call_dummy_location (@var{gdbarch})
4599@findex gdbarch_call_dummy_location
56caf160 4600See the file @file{inferior.h}.
7a292a7a 4601
4a9bb1df
UW
4602This method has been replaced by @code{gdbarch_push_dummy_code}
4603(@pxref{gdbarch_push_dummy_code}).
7043d8dc 4604
4a9bb1df
UW
4605@item int gdbarch_cannot_fetch_register (@var{gdbarch}, @var{regum})
4606@findex gdbarch_cannot_fetch_register
4607This function should return nonzero if @var{regno} cannot be fetched
a53f55d8 4608from an inferior process.
c906108c 4609
4a9bb1df
UW
4610@item int gdbarch_cannot_store_register (@var{gdbarch}, @var{regnum})
4611@findex gdbarch_cannot_store_register
4612This function should return nonzero if @var{regno} should not be
c906108c 4613written to the target. This is often the case for program counters,
4a9bb1df
UW
4614status words, and other special registers. This function returns 0 as
4615default so that @value{GDBN} will assume that all registers may be written.
c906108c 4616
4a9bb1df
UW
4617@item int gdbarch_convert_register_p (@var{gdbarch}, @var{regnum}, struct type *@var{type})
4618@findex gdbarch_convert_register_p
83acabca
DJ
4619Return non-zero if register @var{regnum} represents data values of type
4620@var{type} in a non-standard form.
13d01224
AC
4621@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
4622
a53f55d8
PA
4623@item int gdbarch_fp0_regnum (@var{gdbarch})
4624@findex gdbarch_fp0_regnum
4625This function returns the number of the first floating point register,
4626if the machine has such registers. Otherwise, it returns -1.
4627
4a9bb1df
UW
4628@item CORE_ADDR gdbarch_decr_pc_after_break (@var{gdbarch})
4629@findex gdbarch_decr_pc_after_break
4630This function shall return the amount by which to decrement the PC after the
c906108c 4631program encounters a breakpoint. This is often the number of bytes in
56caf160 4632@code{BREAKPOINT}, though not always. For most targets this value will be 0.
c906108c 4633
56caf160
EZ
4634@item DISABLE_UNSETTABLE_BREAK (@var{addr})
4635@findex DISABLE_UNSETTABLE_BREAK
c906108c
SS
4636If defined, this should evaluate to 1 if @var{addr} is in a shared
4637library in which breakpoints cannot be set and so should be disabled.
4638
4a9bb1df
UW
4639@item int gdbarch_dwarf2_reg_to_regnum (@var{gdbarch}, @var{dwarf2_regnr})
4640@findex gdbarch_dwarf2_reg_to_regnum
4641Convert DWARF2 register number @var{dwarf2_regnr} into @value{GDBN} regnum.
4642If not defined, no conversion will be performed.
0dcedd82 4643
4a9bb1df
UW
4644@item int gdbarch_ecoff_reg_to_regnum (@var{gdbarch}, @var{ecoff_regnr})
4645@findex gdbarch_ecoff_reg_to_regnum
4646Convert ECOFF register number @var{ecoff_regnr} into @value{GDBN} regnum. If
4647not defined, no conversion will be performed.
c906108c 4648
c906108c 4649@item GCC_COMPILED_FLAG_SYMBOL
56caf160
EZ
4650@itemx GCC2_COMPILED_FLAG_SYMBOL
4651@findex GCC2_COMPILED_FLAG_SYMBOL
4652@findex GCC_COMPILED_FLAG_SYMBOL
4653If defined, these are the names of the symbols that @value{GDBN} will
4654look for to detect that GCC compiled the file. The default symbols
4655are @code{gcc_compiled.} and @code{gcc2_compiled.},
4656respectively. (Currently only defined for the Delta 68.)
c906108c 4657
4a9bb1df
UW
4658@item gdbarch_get_longjmp_target
4659@findex gdbarch_get_longjmp_target
1f70da6a
SS
4660This function determines the target PC address that @code{longjmp}
4661will jump to, assuming that we have just stopped at a @code{longjmp}
4662breakpoint. It takes a @code{CORE_ADDR *} as argument, and stores the
4663target PC value through this pointer. It examines the current state
4664of the machine as needed, typically by using a manually-determined
587afa38 4665offset into the @code{jmp_buf}. (While we might like to get the offset
1f70da6a
SS
4666from the target's @file{jmpbuf.h}, that header file cannot be assumed
4667to be available when building a cross-debugger.)
c906108c 4668
9742079a
EZ
4669@item I386_USE_GENERIC_WATCHPOINTS
4670An x86-based target can define this to use the generic x86 watchpoint
4671support; see @ref{Algorithms, I386_USE_GENERIC_WATCHPOINTS}.
4672
4a9bb1df 4673@item gdbarch_in_function_epilogue_p (@var{gdbarch}, @var{addr})
9e5abb06 4674@findex gdbarch_in_function_epilogue_p
4a9bb1df 4675Returns non-zero if the given @var{addr} is in the epilogue of a function.
9e5abb06
CV
4676The epilogue of a function is defined as the part of a function where
4677the stack frame of the function already has been destroyed up to the
4678final `return from function call' instruction.
4679
4a9bb1df
UW
4680@item int gdbarch_in_solib_return_trampoline (@var{gdbarch}, @var{pc}, @var{name})
4681@findex gdbarch_in_solib_return_trampoline
4682Define this function to return nonzero if the program is stopped in the
c906108c
SS
4683trampoline that returns from a shared library.
4684
cfd8ab24
SS
4685@item target_so_ops.in_dynsym_resolve_code (@var{pc})
4686@findex in_dynsym_resolve_code
4a9bb1df 4687Define this to return nonzero if the program is stopped in the
d4f3574e
SS
4688dynamic linker.
4689
56caf160
EZ
4690@item SKIP_SOLIB_RESOLVER (@var{pc})
4691@findex SKIP_SOLIB_RESOLVER
d4f3574e
SS
4692Define this to evaluate to the (nonzero) address at which execution
4693should continue to get past the dynamic linker's symbol resolution
4694function. A zero value indicates that it is not important or necessary
4695to set a breakpoint to get through the dynamic linker and that single
4696stepping will suffice.
4697
4a9bb1df
UW
4698@item CORE_ADDR gdbarch_integer_to_address (@var{gdbarch}, @var{type}, @var{buf})
4699@findex gdbarch_integer_to_address
fc0c74b1
AC
4700@cindex converting integers to addresses
4701Define this when the architecture needs to handle non-pointer to address
4702conversions specially. Converts that value to an address according to
4703the current architectures conventions.
4704
4705@emph{Pragmatics: When the user copies a well defined expression from
4706their source code and passes it, as a parameter, to @value{GDBN}'s
4707@code{print} command, they should get the same value as would have been
4708computed by the target program. Any deviation from this rule can cause
4709major confusion and annoyance, and needs to be justified carefully. In
4710other words, @value{GDBN} doesn't really have the freedom to do these
4711conversions in clever and useful ways. It has, however, been pointed
4712out that users aren't complaining about how @value{GDBN} casts integers
4713to pointers; they are complaining that they can't take an address from a
4714disassembly listing and give it to @code{x/i}. Adding an architecture
4a9bb1df 4715method like @code{gdbarch_integer_to_address} certainly makes it possible for
fc0c74b1
AC
4716@value{GDBN} to ``get it right'' in all circumstances.}
4717
4718@xref{Target Architecture Definition, , Pointers Are Not Always
4719Addresses}.
4720
4a9bb1df
UW
4721@item CORE_ADDR gdbarch_pointer_to_address (@var{gdbarch}, @var{type}, @var{buf})
4722@findex gdbarch_pointer_to_address
93e79dbd
JB
4723Assume that @var{buf} holds a pointer of type @var{type}, in the
4724appropriate format for the current architecture. Return the byte
4725address the pointer refers to.
4726@xref{Target Architecture Definition, , Pointers Are Not Always Addresses}.
4727
4a9bb1df
UW
4728@item void gdbarch_register_to_value(@var{gdbarch}, @var{frame}, @var{regnum}, @var{type}, @var{fur})
4729@findex gdbarch_register_to_value
13d01224
AC
4730Convert the raw contents of register @var{regnum} into a value of type
4731@var{type}.
4281a42e 4732@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
9fb4dd36 4733
9fb4dd36 4734@item REGISTER_CONVERT_TO_VIRTUAL(@var{reg}, @var{type}, @var{from}, @var{to})
56caf160 4735@findex REGISTER_CONVERT_TO_VIRTUAL
9fb4dd36 4736Convert the value of register @var{reg} from its raw form to its virtual
4281a42e 4737form.
13d01224 4738@xref{Target Architecture Definition, , Raw and Virtual Register Representations}.
9fb4dd36
JB
4739
4740@item REGISTER_CONVERT_TO_RAW(@var{type}, @var{reg}, @var{from}, @var{to})
56caf160 4741@findex REGISTER_CONVERT_TO_RAW
9fb4dd36 4742Convert the value of register @var{reg} from its virtual form to its raw
4281a42e 4743form.
13d01224 4744@xref{Target Architecture Definition, , Raw and Virtual Register Representations}.
9fb4dd36 4745
0ab4b752
MK
4746@item const struct regset *regset_from_core_section (struct gdbarch * @var{gdbarch}, const char * @var{sect_name}, size_t @var{sect_size})
4747@findex regset_from_core_section
4748Return the appropriate register set for a core file section with name
4749@var{sect_name} and size @var{sect_size}.
4750
b0ed3589 4751@item SOFTWARE_SINGLE_STEP_P()
56caf160 4752@findex SOFTWARE_SINGLE_STEP_P
c906108c 4753Define this as 1 if the target does not have a hardware single-step
56caf160 4754mechanism. The macro @code{SOFTWARE_SINGLE_STEP} must also be defined.
c906108c 4755
d3e8051b 4756@item SOFTWARE_SINGLE_STEP(@var{signal}, @var{insert_breakpoints_p})
56caf160
EZ
4757@findex SOFTWARE_SINGLE_STEP
4758A function that inserts or removes (depending on
d3e8051b 4759@var{insert_breakpoints_p}) breakpoints at each possible destinations of
587afa38 4760the next instruction. See @file{sparc-tdep.c} and @file{rs6000-tdep.c}
c906108c
SS
4761for examples.
4762
e35879db
UW
4763@item set_gdbarch_sofun_address_maybe_missing (@var{gdbarch}, @var{set})
4764@findex set_gdbarch_sofun_address_maybe_missing
4765Somebody clever observed that, the more actual addresses you have in the
4766debug information, the more time the linker has to spend relocating
4767them. So whenever there's some other way the debugger could find the
4768address it needs, you should omit it from the debug info, to make
4769linking faster.
4770
4771Calling @code{set_gdbarch_sofun_address_maybe_missing} with a non-zero
4772argument @var{set} indicates that a particular set of hacks of this sort
4773are in use, affecting @code{N_SO} and @code{N_FUN} entries in stabs-format
4774debugging information. @code{N_SO} stabs mark the beginning and ending
4775addresses of compilation units in the text segment. @code{N_FUN} stabs
4776mark the starts and ends of functions.
4777
4778In this case, @value{GDBN} assumes two things:
4779
4780@itemize @bullet
4781@item
4782@code{N_FUN} stabs have an address of zero. Instead of using those
4783addresses, you should find the address where the function starts by
4784taking the function name from the stab, and then looking that up in the
4785minsyms (the linker/assembler symbol table). In other words, the stab
4786has the name, and the linker/assembler symbol table is the only place
4787that carries the address.
4788
4789@item
4790@code{N_SO} stabs have an address of zero, too. You just look at the
4791@code{N_FUN} stabs that appear before and after the @code{N_SO} stab, and
4792guess the starting and ending addresses of the compilation unit from them.
4793@end itemize
4794
4a9bb1df
UW
4795@item int gdbarch_stabs_argument_has_addr (@var{gdbarch}, @var{type})
4796@findex gdbarch_stabs_argument_has_addr
4a9bb1df
UW
4797@anchor{gdbarch_stabs_argument_has_addr} Define this function to return
4798nonzero if a function argument of type @var{type} is passed by reference
4799instead of value.
a38c9fe6 4800
4a9bb1df
UW
4801@item CORE_ADDR gdbarch_push_dummy_call (@var{gdbarch}, @var{function}, @var{regcache}, @var{bp_addr}, @var{nargs}, @var{args}, @var{sp}, @var{struct_return}, @var{struct_addr})
4802@findex gdbarch_push_dummy_call
4a9bb1df
UW
4803@anchor{gdbarch_push_dummy_call} Define this to push the dummy frame's call to
4804the inferior function onto the stack. In addition to pushing @var{nargs}, the
4805code should push @var{struct_addr} (when @var{struct_return} is non-zero), and
121c73f3 4806the return address (@var{bp_addr}, in inferior's PC register encoding).
c906108c 4807
86fe4aaa 4808@var{function} is a pointer to a @code{struct value}; on architectures that use
d4b6d575
RC
4809function descriptors, this contains the function descriptor value.
4810
b24da7d0 4811Returns the updated top-of-stack pointer.
b81774d8 4812
4a9bb1df
UW
4813@item CORE_ADDR gdbarch_push_dummy_code (@var{gdbarch}, @var{sp}, @var{funaddr}, @var{using_gcc}, @var{args}, @var{nargs}, @var{value_type}, @var{real_pc}, @var{bp_addr}, @var{regcache})
4814@findex gdbarch_push_dummy_code
4815@anchor{gdbarch_push_dummy_code} Given a stack based call dummy, push the
7043d8dc
AC
4816instruction sequence (including space for a breakpoint) to which the
4817called function should return.
4818
4819Set @var{bp_addr} to the address at which the breakpoint instruction
121c73f3
JK
4820should be inserted (in inferior's PC register encoding), @var{real_pc} to the
4821resume address when starting the call sequence, and return the updated
4822inner-most stack address.
7043d8dc
AC
4823
4824By default, the stack is grown sufficient to hold a frame-aligned
4825(@pxref{frame_align}) breakpoint, @var{bp_addr} is set to the address
121c73f3
JK
4826reserved for that breakpoint (in inferior's PC register encoding), and
4827@var{real_pc} set to @var{funaddr}.
7043d8dc 4828
1f70da6a 4829This method replaces @w{@code{gdbarch_call_dummy_location (@var{gdbarch})}}.
7043d8dc 4830
4a9bb1df
UW
4831@item int gdbarch_sdb_reg_to_regnum (@var{gdbarch}, @var{sdb_regnr})
4832@findex gdbarch_sdb_reg_to_regnum
4833Use this function to convert sdb register @var{sdb_regnr} into @value{GDBN}
4834regnum. If not defined, no conversion will be done.
c906108c 4835
963e2bb7 4836@item enum return_value_convention gdbarch_return_value (struct gdbarch *@var{gdbarch}, struct type *@var{valtype}, struct regcache *@var{regcache}, void *@var{readbuf}, const void *@var{writebuf})
92ad9cd9
AC
4837@findex gdbarch_return_value
4838@anchor{gdbarch_return_value} Given a function with a return-value of
4839type @var{rettype}, return which return-value convention that function
4840would use.
4841
4842@value{GDBN} currently recognizes two function return-value conventions:
4843@code{RETURN_VALUE_REGISTER_CONVENTION} where the return value is found
4844in registers; and @code{RETURN_VALUE_STRUCT_CONVENTION} where the return
4845value is found in memory and the address of that memory location is
4846passed in as the function's first parameter.
4847
963e2bb7
AC
4848If the register convention is being used, and @var{writebuf} is
4849non-@code{NULL}, also copy the return-value in @var{writebuf} into
92ad9cd9
AC
4850@var{regcache}.
4851
963e2bb7 4852If the register convention is being used, and @var{readbuf} is
92ad9cd9 4853non-@code{NULL}, also copy the return value from @var{regcache} into
963e2bb7 4854@var{readbuf} (@var{regcache} contains a copy of the registers from the
92ad9cd9
AC
4855just returned function).
4856
92ad9cd9
AC
4857@emph{Maintainer note: This method replaces separate predicate, extract,
4858store methods. By having only one method, the logic needed to determine
4859the return-value convention need only be implemented in one place. If
4860@value{GDBN} were written in an @sc{oo} language, this method would
4861instead return an object that knew how to perform the register
4862return-value extract and store.}
4863
4864@emph{Maintainer note: This method does not take a @var{gcc_p}
4865parameter, and such a parameter should not be added. If an architecture
4866that requires per-compiler or per-function information be identified,
4867then the replacement of @var{rettype} with @code{struct value}
d3e8051b 4868@var{function} should be pursued.}
92ad9cd9
AC
4869
4870@emph{Maintainer note: The @var{regcache} parameter limits this methods
4871to the inner most frame. While replacing @var{regcache} with a
4872@code{struct frame_info} @var{frame} parameter would remove that
4873limitation there has yet to be a demonstrated need for such a change.}
4874
4a9bb1df
UW
4875@item void gdbarch_skip_permanent_breakpoint (@var{gdbarch}, @var{regcache})
4876@findex gdbarch_skip_permanent_breakpoint
25822942 4877Advance the inferior's PC past a permanent breakpoint. @value{GDBN} normally
c2c6d25f
JM
4878steps over a breakpoint by removing it, stepping one instruction, and
4879re-inserting the breakpoint. However, permanent breakpoints are
4880hardwired into the inferior, and can't be removed, so this strategy
4a9bb1df
UW
4881doesn't work. Calling @code{gdbarch_skip_permanent_breakpoint} adjusts the
4882processor's state so that execution will resume just after the breakpoint.
4883This function does the right thing even when the breakpoint is in the delay slot
c2c6d25f
JM
4884of a branch or jump.
4885
4a9bb1df
UW
4886@item CORE_ADDR gdbarch_skip_trampoline_code (@var{gdbarch}, @var{frame}, @var{pc})
4887@findex gdbarch_skip_trampoline_code
c906108c 4888If the target machine has trampoline code that sits between callers and
4a9bb1df 4889the functions being called, then define this function to return a new PC
c906108c
SS
4890that is at the start of the real function.
4891
1f70da6a
SS
4892@item int gdbarch_deprecated_fp_regnum (@var{gdbarch})
4893@findex gdbarch_deprecated_fp_regnum
4894If the frame pointer is in a register, use this function to return the
4895number of that register.
4896
4a9bb1df
UW
4897@item int gdbarch_stab_reg_to_regnum (@var{gdbarch}, @var{stab_regnr})
4898@findex gdbarch_stab_reg_to_regnum
4899Use this function to convert stab register @var{stab_regnr} into @value{GDBN}
4900regnum. If not defined, no conversion will be done.
4901
c906108c 4902@item TARGET_CHAR_BIT
56caf160 4903@findex TARGET_CHAR_BIT
c906108c
SS
4904Number of bits in a char; defaults to 8.
4905
4a9bb1df
UW
4906@item int gdbarch_char_signed (@var{gdbarch})
4907@findex gdbarch_char_signed
c3d3ce5b
JB
4908Non-zero if @code{char} is normally signed on this architecture; zero if
4909it should be unsigned.
4910
4911The ISO C standard requires the compiler to treat @code{char} as
4912equivalent to either @code{signed char} or @code{unsigned char}; any
4913character in the standard execution set is supposed to be positive.
4914Most compilers treat @code{char} as signed, but @code{char} is unsigned
4915on the IBM S/390, RS6000, and PowerPC targets.
4916
4a9bb1df
UW
4917@item int gdbarch_double_bit (@var{gdbarch})
4918@findex gdbarch_double_bit
4919Number of bits in a double float; defaults to @w{@code{8 * TARGET_CHAR_BIT}}.
c906108c 4920
4a9bb1df
UW
4921@item int gdbarch_float_bit (@var{gdbarch})
4922@findex gdbarch_float_bit
4923Number of bits in a float; defaults to @w{@code{4 * TARGET_CHAR_BIT}}.
ac9a91a7 4924
4a9bb1df
UW
4925@item int gdbarch_int_bit (@var{gdbarch})
4926@findex gdbarch_int_bit
4927Number of bits in an integer; defaults to @w{@code{4 * TARGET_CHAR_BIT}}.
c906108c 4928
4a9bb1df
UW
4929@item int gdbarch_long_bit (@var{gdbarch})
4930@findex gdbarch_long_bit
4931Number of bits in a long integer; defaults to @w{@code{4 * TARGET_CHAR_BIT}}.
c906108c 4932
4a9bb1df
UW
4933@item int gdbarch_long_double_bit (@var{gdbarch})
4934@findex gdbarch_long_double_bit
c906108c 4935Number of bits in a long double float;
4a9bb1df
UW
4936defaults to @w{@code{2 * gdbarch_double_bit (@var{gdbarch})}}.
4937
4938@item int gdbarch_long_long_bit (@var{gdbarch})
4939@findex gdbarch_long_long_bit
4940Number of bits in a long long integer; defaults to
4941@w{@code{2 * gdbarch_long_bit (@var{gdbarch})}}.
4942
4943@item int gdbarch_ptr_bit (@var{gdbarch})
4944@findex gdbarch_ptr_bit
4945Number of bits in a pointer; defaults to
4946@w{@code{gdbarch_int_bit (@var{gdbarch})}}.
4947
4948@item int gdbarch_short_bit (@var{gdbarch})
4949@findex gdbarch_short_bit
4950Number of bits in a short integer; defaults to @w{@code{2 * TARGET_CHAR_BIT}}.
4951
4a9bb1df
UW
4952@item void gdbarch_virtual_frame_pointer (@var{gdbarch}, @var{pc}, @var{frame_regnum}, @var{frame_offset})
4953@findex gdbarch_virtual_frame_pointer
1f70da6a
SS
4954Returns a @code{(@var{register}, @var{offset})} pair representing the virtual
4955frame pointer in use at the code address @var{pc}. If virtual frame
4956pointers are not used, a default definition simply returns
4957@code{gdbarch_deprecated_fp_regnum} (or @code{gdbarch_sp_regnum}, if
4958no frame pointer is defined), with an offset of zero.
4959
587afa38
EZ
4960@c need to explain virtual frame pointers, they are recorded in agent
4961@c expressions for tracepoints
c906108c 4962
9742079a
EZ
4963@item TARGET_HAS_HARDWARE_WATCHPOINTS
4964If non-zero, the target has support for hardware-assisted
4965watchpoints. @xref{Algorithms, watchpoints}, for more details and
4966other related macros.
4967
4a9bb1df
UW
4968@item int gdbarch_print_insn (@var{gdbarch}, @var{vma}, @var{info})
4969@findex gdbarch_print_insn
7ccaa899 4970This is the function used by @value{GDBN} to print an assembly
4a9bb1df 4971instruction. It prints the instruction at address @var{vma} in
1f70da6a
SS
4972debugged memory and returns the length of the instruction, in bytes.
4973This usually points to a function in the @code{opcodes} library
4974(@pxref{Support Libraries, ,Opcodes}). @var{info} is a structure (of
4975type @code{disassemble_info}) defined in the header file
4976@file{include/dis-asm.h}, and used to pass information to the
4977instruction decoding routine.
7ccaa899 4978
669fac23
DJ
4979@item frame_id gdbarch_dummy_id (@var{gdbarch}, @var{frame})
4980@findex gdbarch_dummy_id
4981@anchor{gdbarch_dummy_id} Given @var{frame} return a @w{@code{struct
4a9bb1df 4982frame_id}} that uniquely identifies an inferior function call's dummy
b24da7d0 4983frame. The value returned must match the dummy frame stack value
669fac23 4984previously saved by @code{call_function_by_hand}.
6314f104 4985
4a9bb1df
UW
4986@item void gdbarch_value_to_register (@var{gdbarch}, @var{frame}, @var{type}, @var{buf})
4987@findex gdbarch_value_to_register
4988Convert a value of type @var{type} into the raw contents of a register.
13d01224
AC
4989@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
4990
c906108c
SS
4991@end table
4992
4993Motorola M68K target conditionals.
4994
56caf160 4995@ftable @code
c906108c
SS
4996@item BPT_VECTOR
4997Define this to be the 4-bit location of the breakpoint trap vector. If
4998not defined, it will default to @code{0xf}.
4999
5000@item REMOTE_BPT_VECTOR
5001Defaults to @code{1}.
a23a7bf1 5002
56caf160 5003@end ftable
c906108c 5004
b6fd0dfb 5005@node Adding a New Target
c906108c
SS
5006@section Adding a New Target
5007
56caf160 5008@cindex adding a target
af6c57ea 5009The following files add a target to @value{GDBN}:
c906108c
SS
5010
5011@table @file
f0323ca0 5012@cindex target dependent files
c906108c 5013
c906108c
SS
5014@item gdb/@var{ttt}-tdep.c
5015Contains any miscellaneous code required for this target machine. On
1f70da6a 5016some machines it doesn't exist at all.
c906108c 5017
af6c57ea
AC
5018@item gdb/@var{arch}-tdep.c
5019@itemx gdb/@var{arch}-tdep.h
1f70da6a
SS
5020This is required to describe the basic layout of the target machine's
5021processor chip (registers, stack, etc.). It can be shared among many
5022targets that use the same processor architecture.
af6c57ea 5023
c906108c
SS
5024@end table
5025
1f70da6a
SS
5026(Target header files such as
5027@file{gdb/config/@var{arch}/tm-@var{ttt}.h},
5028@file{gdb/config/@var{arch}/tm-@var{arch}.h}, and
5029@file{config/tm-@var{os}.h} are no longer used.)
c906108c 5030
587afa38
EZ
5031@findex _initialize_@var{arch}_tdep
5032A @value{GDBN} description for a new architecture, arch is created by
5033defining a global function @code{_initialize_@var{arch}_tdep}, by
5034convention in the source file @file{@var{arch}-tdep.c}. For
5035example, in the case of the OpenRISC 1000, this function is called
5036@code{_initialize_or1k_tdep} and is found in the file
5037@file{or1k-tdep.c}.
5038
5039The object file resulting from compiling this source file, which will
5040contain the implementation of the
5041@code{_initialize_@var{arch}_tdep} function is specified in the
5042@value{GDBN} @file{configure.tgt} file, which includes a large case
5043statement pattern matching against the @code{--target} option of the
5044@kbd{configure} script.
5045
5046@quotation
5047@emph{Note:} If the architecture requires multiple source files, the
5048corresponding binaries should be included in
5049@file{configure.tgt}. However if there are header files, the
5050dependencies on these will not be picked up from the entries in
5051@file{configure.tgt}. The @file{Makefile.in} file will need extending to
5052show these dependencies.
5053@end quotation
5054
5055@findex gdbarch_register
5056A new struct gdbarch, defining the new architecture, is created within
5057the @code{_initialize_@var{arch}_tdep} function by calling
5058@code{gdbarch_register}:
5059
5060@smallexample
5061void gdbarch_register (enum bfd_architecture architecture,
5062 gdbarch_init_ftype *init_func,
5063 gdbarch_dump_tdep_ftype *tdep_dump_func);
5064@end smallexample
5065
5066This function has been described fully in an earlier
5067section. @xref{How an Architecture is Represented, , How an
5068Architecture is Represented}.
5069
5070The new @code{@w{struct gdbarch}} should contain implementations of
5071the necessary functions (described in the previous sections) to
5072describe the basic layout of the target machine's processor chip
5073(registers, stack, etc.). It can be shared among many targets that use
5074the same processor architecture.
5075
123dc839
DJ
5076@node Target Descriptions
5077@chapter Target Descriptions
5078@cindex target descriptions
5079
5080The target architecture definition (@pxref{Target Architecture Definition})
5081contains @value{GDBN}'s hard-coded knowledge about an architecture. For
5082some platforms, it is handy to have more flexible knowledge about a specific
5083instance of the architecture---for instance, a processor or development board.
5084@dfn{Target descriptions} provide a mechanism for the user to tell @value{GDBN}
5085more about what their target supports, or for the target to tell @value{GDBN}
5086directly.
5087
5088For details on writing, automatically supplying, and manually selecting
5089target descriptions, see @ref{Target Descriptions, , , gdb,
5090Debugging with @value{GDBN}}. This section will cover some related
5091topics about the @value{GDBN} internals.
5092
5093@menu
5094* Target Descriptions Implementation::
5095* Adding Target Described Register Support::
5096@end menu
5097
5098@node Target Descriptions Implementation
5099@section Target Descriptions Implementation
5100@cindex target descriptions, implementation
5101
5102Before @value{GDBN} connects to a new target, or runs a new program on
5103an existing target, it discards any existing target description and
5104reverts to a default gdbarch. Then, after connecting, it looks for a
5105new target description by calling @code{target_find_description}.
5106
5107A description may come from a user specified file (XML), the remote
5108@samp{qXfer:features:read} packet (also XML), or from any custom
5109@code{to_read_description} routine in the target vector. For instance,
5110the remote target supports guessing whether a MIPS target is 32-bit or
511164-bit based on the size of the @samp{g} packet.
5112
5113If any target description is found, @value{GDBN} creates a new gdbarch
5114incorporating the description by calling @code{gdbarch_update_p}. Any
5115@samp{<architecture>} element is handled first, to determine which
5116architecture's gdbarch initialization routine is called to create the
5117new architecture. Then the initialization routine is called, and has
5118a chance to adjust the constructed architecture based on the contents
5119of the target description. For instance, it can recognize any
5120properties set by a @code{to_read_description} routine. Also
5121see @ref{Adding Target Described Register Support}.
5122
5123@node Adding Target Described Register Support
5124@section Adding Target Described Register Support
5125@cindex target descriptions, adding register support
5126
5127Target descriptions can report additional registers specific to an
5128instance of the target. But it takes a little work in the architecture
5129specific routines to support this.
5130
5131A target description must either have no registers or a complete
5132set---this avoids complexity in trying to merge standard registers
5133with the target defined registers. It is the architecture's
5134responsibility to validate that a description with registers has
5135everything it needs. To keep architecture code simple, the same
5136mechanism is used to assign fixed internal register numbers to
5137standard registers.
5138
5139If @code{tdesc_has_registers} returns 1, the description contains
5140registers. The architecture's @code{gdbarch_init} routine should:
5141
5142@itemize @bullet
5143
5144@item
5145Call @code{tdesc_data_alloc} to allocate storage, early, before
5146searching for a matching gdbarch or allocating a new one.
5147
5148@item
5149Use @code{tdesc_find_feature} to locate standard features by name.
5150
5151@item
5152Use @code{tdesc_numbered_register} and @code{tdesc_numbered_register_choices}
5153to locate the expected registers in the standard features.
5154
5155@item
5156Return @code{NULL} if a required feature is missing, or if any standard
5157feature is missing expected registers. This will produce a warning that
5158the description was incomplete.
5159
5160@item
5161Free the allocated data before returning, unless @code{tdesc_use_registers}
5162is called.
5163
5164@item
5165Call @code{set_gdbarch_num_regs} as usual, with a number higher than any
5166fixed number passed to @code{tdesc_numbered_register}.
5167
5168@item
5169Call @code{tdesc_use_registers} after creating a new gdbarch, before
5170returning it.
5171
5172@end itemize
5173
5174After @code{tdesc_use_registers} has been called, the architecture's
5175@code{register_name}, @code{register_type}, and @code{register_reggroup_p}
5176routines will not be called; that information will be taken from
5177the target description. @code{num_regs} may be increased to account
5178for any additional registers in the description.
5179
5180Pseudo-registers require some extra care:
5181
5182@itemize @bullet
5183
5184@item
5185Using @code{tdesc_numbered_register} allows the architecture to give
5186constant register numbers to standard architectural registers, e.g.@:
5187as an @code{enum} in @file{@var{arch}-tdep.h}. But because
5188pseudo-registers are always numbered above @code{num_regs},
5189which may be increased by the description, constant numbers
5190can not be used for pseudos. They must be numbered relative to
5191@code{num_regs} instead.
5192
5193@item
5194The description will not describe pseudo-registers, so the
5195architecture must call @code{set_tdesc_pseudo_register_name},
5196@code{set_tdesc_pseudo_register_type}, and
5197@code{set_tdesc_pseudo_register_reggroup_p} to supply routines
5198describing pseudo registers. These routines will be passed
5199internal register numbers, so the same routines used for the
5200gdbarch equivalents are usually suitable.
5201
5202@end itemize
5203
5204
c906108c
SS
5205@node Target Vector Definition
5206
5207@chapter Target Vector Definition
56caf160 5208@cindex target vector
c906108c 5209
56caf160
EZ
5210The target vector defines the interface between @value{GDBN}'s
5211abstract handling of target systems, and the nitty-gritty code that
5212actually exercises control over a process or a serial port.
5213@value{GDBN} includes some 30-40 different target vectors; however,
5214each configuration of @value{GDBN} includes only a few of them.
c906108c 5215
52bb452f
DJ
5216@menu
5217* Managing Execution State::
5218* Existing Targets::
5219@end menu
5220
5221@node Managing Execution State
5222@section Managing Execution State
5223@cindex execution state
5224
5225A target vector can be completely inactive (not pushed on the target
5226stack), active but not running (pushed, but not connected to a fully
5227manifested inferior), or completely active (pushed, with an accessible
5228inferior). Most targets are only completely inactive or completely
d3e8051b 5229active, but some support persistent connections to a target even
52bb452f
DJ
5230when the target has exited or not yet started.
5231
5232For example, connecting to the simulator using @code{target sim} does
5233not create a running program. Neither registers nor memory are
5234accessible until @code{run}. Similarly, after @code{kill}, the
5235program can not continue executing. But in both cases @value{GDBN}
5236remains connected to the simulator, and target-specific commands
5237are directed to the simulator.
5238
5239A target which only supports complete activation should push itself
5240onto the stack in its @code{to_open} routine (by calling
5241@code{push_target}), and unpush itself from the stack in its
5242@code{to_mourn_inferior} routine (by calling @code{unpush_target}).
5243
5244A target which supports both partial and complete activation should
5245still call @code{push_target} in @code{to_open}, but not call
5246@code{unpush_target} in @code{to_mourn_inferior}. Instead, it should
5247call either @code{target_mark_running} or @code{target_mark_exited}
5248in its @code{to_open}, depending on whether the target is fully active
5249after connection. It should also call @code{target_mark_running} any
5250time the inferior becomes fully active (e.g.@: in
5251@code{to_create_inferior} and @code{to_attach}), and
5252@code{target_mark_exited} when the inferior becomes inactive (in
5253@code{to_mourn_inferior}). The target should also make sure to call
5254@code{target_mourn_inferior} from its @code{to_kill}, to return the
5255target to inactive state.
5256
5257@node Existing Targets
5258@section Existing Targets
5259@cindex targets
5260
5261@subsection File Targets
c906108c
SS
5262
5263Both executables and core files have target vectors.
5264
52bb452f 5265@subsection Standard Protocol and Remote Stubs
c906108c 5266
587afa38
EZ
5267@value{GDBN}'s file @file{remote.c} talks a serial protocol to code that
5268runs in the target system. @value{GDBN} provides several sample
56caf160 5269@dfn{stubs} that can be integrated into target programs or operating
587afa38 5270systems for this purpose; they are named @file{@var{cpu}-stub.c}. Many
1f70da6a 5271operating systems, embedded targets, emulators, and simulators already
587afa38 5272have a @value{GDBN} stub built into them, and maintenance of the remote
1f70da6a 5273protocol must be careful to preserve compatibility.
c906108c 5274
56caf160
EZ
5275The @value{GDBN} user's manual describes how to put such a stub into
5276your target code. What follows is a discussion of integrating the
5277SPARC stub into a complicated operating system (rather than a simple
5278program), by Stu Grossman, the author of this stub.
c906108c
SS
5279
5280The trap handling code in the stub assumes the following upon entry to
56caf160 5281@code{trap_low}:
c906108c
SS
5282
5283@enumerate
56caf160
EZ
5284@item
5285%l1 and %l2 contain pc and npc respectively at the time of the trap;
c906108c 5286
56caf160
EZ
5287@item
5288traps are disabled;
c906108c 5289
56caf160
EZ
5290@item
5291you are in the correct trap window.
c906108c
SS
5292@end enumerate
5293
5294As long as your trap handler can guarantee those conditions, then there
56caf160 5295is no reason why you shouldn't be able to ``share'' traps with the stub.
c906108c
SS
5296The stub has no requirement that it be jumped to directly from the
5297hardware trap vector. That is why it calls @code{exceptionHandler()},
5298which is provided by the external environment. For instance, this could
56caf160 5299set up the hardware traps to actually execute code which calls the stub
c906108c
SS
5300first, and then transfers to its own trap handler.
5301
5302For the most point, there probably won't be much of an issue with
56caf160 5303``sharing'' traps, as the traps we use are usually not used by the kernel,
c906108c
SS
5304and often indicate unrecoverable error conditions. Anyway, this is all
5305controlled by a table, and is trivial to modify. The most important
5306trap for us is for @code{ta 1}. Without that, we can't single step or
5307do breakpoints. Everything else is unnecessary for the proper operation
5308of the debugger/stub.
5309
5310From reading the stub, it's probably not obvious how breakpoints work.
25822942 5311They are simply done by deposit/examine operations from @value{GDBN}.
c906108c 5312
52bb452f 5313@subsection ROM Monitor Interface
c906108c 5314
52bb452f 5315@subsection Custom Protocols
c906108c 5316
52bb452f 5317@subsection Transport Layer
c906108c 5318
52bb452f 5319@subsection Builtin Simulator
c906108c
SS
5320
5321
5322@node Native Debugging
5323
5324@chapter Native Debugging
56caf160 5325@cindex native debugging
c906108c 5326
25822942 5327Several files control @value{GDBN}'s configuration for native support:
c906108c
SS
5328
5329@table @file
56caf160 5330@vindex NATDEPFILES
c906108c 5331@item gdb/config/@var{arch}/@var{xyz}.mh
7fd60527 5332Specifies Makefile fragments needed by a @emph{native} configuration on
c906108c
SS
5333machine @var{xyz}. In particular, this lists the required
5334native-dependent object files, by defining @samp{NATDEPFILES=@dots{}}.
5335Also specifies the header file which describes native support on
5336@var{xyz}, by defining @samp{NAT_FILE= nm-@var{xyz}.h}. You can also
5337define @samp{NAT_CFLAGS}, @samp{NAT_ADD_FILES}, @samp{NAT_CLIBS},
3d0bb823 5338@samp{NAT_CDEPS}, @samp{NAT_GENERATED_FILES}, etc.; see @file{Makefile.in}.
c906108c 5339
7fd60527
AC
5340@emph{Maintainer's note: The @file{.mh} suffix is because this file
5341originally contained @file{Makefile} fragments for hosting @value{GDBN}
5342on machine @var{xyz}. While the file is no longer used for this
937f164b 5343purpose, the @file{.mh} suffix remains. Perhaps someone will
7fd60527
AC
5344eventually rename these fragments so that they have a @file{.mn}
5345suffix.}
5346
c906108c 5347@item gdb/config/@var{arch}/nm-@var{xyz}.h
56caf160 5348(@file{nm.h} is a link to this file, created by @code{configure}). Contains C
c906108c
SS
5349macro definitions describing the native system environment, such as
5350child process control and core file support.
5351
5352@item gdb/@var{xyz}-nat.c
5353Contains any miscellaneous C code required for this native support of
5354this machine. On some machines it doesn't exist at all.
c906108c
SS
5355@end table
5356
5357There are some ``generic'' versions of routines that can be used by
5358various systems. These can be customized in various ways by macros
5359defined in your @file{nm-@var{xyz}.h} file. If these routines work for
5360the @var{xyz} host, you can just include the generic file's name (with
5361@samp{.o}, not @samp{.c}) in @code{NATDEPFILES}.
5362
5363Otherwise, if your machine needs custom support routines, you will need
5364to write routines that perform the same functions as the generic file.
56caf160 5365Put them into @file{@var{xyz}-nat.c}, and put @file{@var{xyz}-nat.o}
c906108c
SS
5366into @code{NATDEPFILES}.
5367
5368@table @file
c906108c
SS
5369@item inftarg.c
5370This contains the @emph{target_ops vector} that supports Unix child
5371processes on systems which use ptrace and wait to control the child.
5372
5373@item procfs.c
5374This contains the @emph{target_ops vector} that supports Unix child
5375processes on systems which use /proc to control the child.
5376
5377@item fork-child.c
56caf160
EZ
5378This does the low-level grunge that uses Unix system calls to do a ``fork
5379and exec'' to start up a child process.
c906108c
SS
5380
5381@item infptrace.c
5382This is the low level interface to inferior processes for systems using
5383the Unix @code{ptrace} call in a vanilla way.
c906108c
SS
5384@end table
5385
c906108c
SS
5386@section ptrace
5387
5388@section /proc
5389
5390@section win32
5391
5392@section shared libraries
5393
2874cb83
JB
5394@subsection AIX Shared Library Support
5395
5396Shared library support on AIX is based on reading some data provided
5397by the loader. With a live process, this information is accessed
5398via a @code{ptrace} call (@code{PT_LDINFO}), while it is obtained
5399by reading the @samp{.ldinfo} section when debugging from a core file.
5400In both cases, the data has the same format, provided by the
5401@file{sys/ldr.h} system header file.
5402
5403Internally, the relevant portions of the loader information is
5404transformed into an XML representation, which lists all objects
5405currently mapped in memory. The associated DTD can be found in
5406@file{gdb/features/library-list-aix.dtd}. For each library element,
5407the following parameters are reported:
5408
5409@itemize @minus
5410
5411@item
5412@code{name}, the path name of an object. This is usually the name
5413of an archive, or the name of the main executable.
5414
5415@item
5416If the @code{name} parameter refers to an archive, @code{member} provides
5417the name of the object inside the archive on which the program depends.
5418Otherwise, this field should be omitted.
5419
5420@item
5421@code{text_addr}, the address where the @code{.text} section was mapped
5422in memory.
5423
5424@item
5425@code{text_size}, the size of the @code{.text} section.
5426
5427@item
5428@code{data_addr}, the address where the @code{.data} section was mapped
5429in memory.
5430
5431@item
5432@code{data_size}, the size of the @code{.data} section.
5433
5434@end itemize
5435
5436By convention, the library list always has at least one element, and
5437the first entry always refers to the main executable.
5438
5439Below is an example of such XML representation for a small program:
5440
5441@smallexample
5442<library-list-aix version="1.0">
5443 <library name="simple"
5444 text_addr="0x0000000010000000"
5445 text_size="128720"
5446 data_addr="0x0000000020000f00"
5447 data_size="31148">
5448 </library>
5449 <library name="/lib/libc.a"
5450 member="shr.o"
5451 text_addr="0x00000000d0100700"
5452 text_size="4152684"
5453 data_addr="0x00000000f0633e50"
5454 data_size="875944">
5455 </library>
5456</library-list-aix>
5457@end smallexample
5458
5459In that example, the list shows that the main executable is named
5460@file{simple}, and its text section was loaded at 0x10000000.
5461This program depends on member @file{shr.o} from the @file{/lib/libc.a}
5462archive, whose text and data sections were loaded at (resp.)
54630xd0100700 and 0xf0633e50.
5464
c906108c 5465@section Native Conditionals
56caf160 5466@cindex native conditionals
c906108c 5467
56caf160
EZ
5468When @value{GDBN} is configured and compiled, various macros are
5469defined or left undefined, to control compilation when the host and
5470target systems are the same. These macros should be defined (or left
5471undefined) in @file{nm-@var{system}.h}.
c906108c 5472
1f6d4158
AC
5473@table @code
5474
9742079a
EZ
5475@item I386_USE_GENERIC_WATCHPOINTS
5476An x86-based machine can define this to use the generic x86 watchpoint
5477support; see @ref{Algorithms, I386_USE_GENERIC_WATCHPOINTS}.
5478
c906108c 5479@item START_INFERIOR_TRAPS_EXPECTED
56caf160
EZ
5480@findex START_INFERIOR_TRAPS_EXPECTED
5481When starting an inferior, @value{GDBN} normally expects to trap
5482twice; once when
c906108c
SS
5483the shell execs, and once when the program itself execs. If the actual
5484number of traps is something other than 2, then define this macro to
5485expand into the number expected.
5486
c906108c
SS
5487@end table
5488
c906108c
SS
5489@node Support Libraries
5490
5491@chapter Support Libraries
5492
5493@section BFD
56caf160 5494@cindex BFD library
c906108c 5495
25822942 5496BFD provides support for @value{GDBN} in several ways:
c906108c
SS
5497
5498@table @emph
c906108c
SS
5499@item identifying executable and core files
5500BFD will identify a variety of file types, including a.out, coff, and
5501several variants thereof, as well as several kinds of core files.
5502
5503@item access to sections of files
5504BFD parses the file headers to determine the names, virtual addresses,
5505sizes, and file locations of all the various named sections in files
56caf160
EZ
5506(such as the text section or the data section). @value{GDBN} simply
5507calls BFD to read or write section @var{x} at byte offset @var{y} for
5508length @var{z}.
c906108c
SS
5509
5510@item specialized core file support
5511BFD provides routines to determine the failing command name stored in a
5512core file, the signal with which the program failed, and whether a core
56caf160 5513file matches (i.e.@: could be a core dump of) a particular executable
c906108c
SS
5514file.
5515
5516@item locating the symbol information
25822942
DB
5517@value{GDBN} uses an internal interface of BFD to determine where to find the
5518symbol information in an executable file or symbol-file. @value{GDBN} itself
c906108c 5519handles the reading of symbols, since BFD does not ``understand'' debug
25822942 5520symbols, but @value{GDBN} uses BFD's cached information to find the symbols,
c906108c 5521string table, etc.
c906108c
SS
5522@end table
5523
5524@section opcodes
56caf160 5525@cindex opcodes library
c906108c 5526
25822942 5527The opcodes library provides @value{GDBN}'s disassembler. (It's a separate
c906108c
SS
5528library because it's also used in binutils, for @file{objdump}).
5529
5530@section readline
86f04699
EZ
5531@cindex readline library
5532The @code{readline} library provides a set of functions for use by applications
5533that allow users to edit command lines as they are typed in.
c906108c
SS
5534
5535@section libiberty
1eb288ea
EZ
5536@cindex @code{libiberty} library
5537
5538The @code{libiberty} library provides a set of functions and features
5539that integrate and improve on functionality found in modern operating
5540systems. Broadly speaking, such features can be divided into three
5541groups: supplemental functions (functions that may be missing in some
5542environments and operating systems), replacement functions (providing
5543a uniform and easier to use interface for commonly used standard
5544functions), and extensions (which provide additional functionality
5545beyond standard functions).
5546
5547@value{GDBN} uses various features provided by the @code{libiberty}
5548library, for instance the C@t{++} demangler, the @acronym{IEEE}
5549floating format support functions, the input options parser
5550@samp{getopt}, the @samp{obstack} extension, and other functions.
5551
5552@subsection @code{obstacks} in @value{GDBN}
5553@cindex @code{obstacks}
5554
5555The obstack mechanism provides a convenient way to allocate and free
5556chunks of memory. Each obstack is a pool of memory that is managed
5557like a stack. Objects (of any nature, size and alignment) are
5558allocated and freed in a @acronym{LIFO} fashion on an obstack (see
d3e8051b 5559@code{libiberty}'s documentation for a more detailed explanation of
1eb288ea
EZ
5560@code{obstacks}).
5561
5562The most noticeable use of the @code{obstacks} in @value{GDBN} is in
5563object files. There is an obstack associated with each internal
5564representation of an object file. Lots of things get allocated on
5565these @code{obstacks}: dictionary entries, blocks, blockvectors,
5566symbols, minimal symbols, types, vectors of fundamental types, class
5567fields of types, object files section lists, object files section
d3e8051b 5568offset lists, line tables, symbol tables, partial symbol tables,
1eb288ea
EZ
5569string tables, symbol table private data, macros tables, debug
5570information sections and entries, import and export lists (som),
5571unwind information (hppa), dwarf2 location expressions data. Plus
5572various strings such as directory names strings, debug format strings,
5573names of types.
5574
5575An essential and convenient property of all data on @code{obstacks} is
5576that memory for it gets allocated (with @code{obstack_alloc}) at
d3e8051b 5577various times during a debugging session, but it is released all at
1eb288ea
EZ
5578once using the @code{obstack_free} function. The @code{obstack_free}
5579function takes a pointer to where in the stack it must start the
5580deletion from (much like the cleanup chains have a pointer to where to
5581start the cleanups). Because of the stack like structure of the
5582@code{obstacks}, this allows to free only a top portion of the
5583obstack. There are a few instances in @value{GDBN} where such thing
5584happens. Calls to @code{obstack_free} are done after some local data
5585is allocated to the obstack. Only the local data is deleted from the
5586obstack. Of course this assumes that nothing between the
5587@code{obstack_alloc} and the @code{obstack_free} allocates anything
5588else on the same obstack. For this reason it is best and safest to
5589use temporary @code{obstacks}.
5590
5591Releasing the whole obstack is also not safe per se. It is safe only
5592under the condition that we know the @code{obstacks} memory is no
5593longer needed. In @value{GDBN} we get rid of the @code{obstacks} only
5594when we get rid of the whole objfile(s), for instance upon reading a
5595new symbol file.
c906108c
SS
5596
5597@section gnu-regex
56caf160 5598@cindex regular expressions library
c906108c
SS
5599
5600Regex conditionals.
5601
5602@table @code
c906108c
SS
5603@item C_ALLOCA
5604
5605@item NFAILURES
5606
5607@item RE_NREGS
5608
5609@item SIGN_EXTEND_CHAR
5610
5611@item SWITCH_ENUM_BUG
5612
5613@item SYNTAX_TABLE
5614
5615@item Sword
5616
5617@item sparc
c906108c
SS
5618@end table
5619
350da6ee
DJ
5620@section Array Containers
5621@cindex Array Containers
5622@cindex VEC
5623
5624Often it is necessary to manipulate a dynamic array of a set of
5625objects. C forces some bookkeeping on this, which can get cumbersome
d3e8051b 5626and repetitive. The @file{vec.h} file contains macros for defining
350da6ee
DJ
5627and using a typesafe vector type. The functions defined will be
5628inlined when compiling, and so the abstraction cost should be zero.
5629Domain checks are added to detect programming errors.
5630
5631An example use would be an array of symbols or section information.
5632The array can be grown as symbols are read in (or preallocated), and
5633the accessor macros provided keep care of all the necessary
5634bookkeeping. Because the arrays are type safe, there is no danger of
5635accidentally mixing up the contents. Think of these as C++ templates,
5636but implemented in C.
5637
5638Because of the different behavior of structure objects, scalar objects
5639and of pointers, there are three flavors of vector, one for each of
5640these variants. Both the structure object and pointer variants pass
5641pointers to objects around --- in the former case the pointers are
5642stored into the vector and in the latter case the pointers are
5643dereferenced and the objects copied into the vector. The scalar
5644object variant is suitable for @code{int}-like objects, and the vector
5645elements are returned by value.
5646
5647There are both @code{index} and @code{iterate} accessors. The iterator
5648returns a boolean iteration condition and updates the iteration
5649variable passed by reference. Because the iterator will be inlined,
5650the address-of can be optimized away.
5651
5652The vectors are implemented using the trailing array idiom, thus they
5653are not resizeable without changing the address of the vector object
5654itself. This means you cannot have variables or fields of vector type
5655--- always use a pointer to a vector. The one exception is the final
5656field of a structure, which could be a vector type. You will have to
5657use the @code{embedded_size} & @code{embedded_init} calls to create
5658such objects, and they will probably not be resizeable (so don't use
5659the @dfn{safe} allocation variants). The trailing array idiom is used
5660(rather than a pointer to an array of data), because, if we allow
5661@code{NULL} to also represent an empty vector, empty vectors occupy
5662minimal space in the structure containing them.
5663
5664Each operation that increases the number of active elements is
5665available in @dfn{quick} and @dfn{safe} variants. The former presumes
5666that there is sufficient allocated space for the operation to succeed
5667(it dies if there is not). The latter will reallocate the vector, if
5668needed. Reallocation causes an exponential increase in vector size.
5669If you know you will be adding N elements, it would be more efficient
5670to use the reserve operation before adding the elements with the
5671@dfn{quick} operation. This will ensure there are at least as many
5672elements as you ask for, it will exponentially increase if there are
5673too few spare slots. If you want reserve a specific number of slots,
5674but do not want the exponential increase (for instance, you know this
5675is the last allocation), use a negative number for reservation. You
5676can also create a vector of a specific size from the get go.
5677
5678You should prefer the push and pop operations, as they append and
587afa38 5679remove from the end of the vector. If you need to remove several items
350da6ee
DJ
5680in one go, use the truncate operation. The insert and remove
5681operations allow you to change elements in the middle of the vector.
5682There are two remove operations, one which preserves the element
5683ordering @code{ordered_remove}, and one which does not
5684@code{unordered_remove}. The latter function copies the end element
5685into the removed slot, rather than invoke a memmove operation. The
5686@code{lower_bound} function will determine where to place an item in
5687the array using insert that will maintain sorted order.
5688
5689If you need to directly manipulate a vector, then the @code{address}
5690accessor will return the address of the start of the vector. Also the
5691@code{space} predicate will tell you whether there is spare capacity in the
5692vector. You will not normally need to use these two functions.
5693
5694Vector types are defined using a
5695@code{DEF_VEC_@{O,P,I@}(@var{typename})} macro. Variables of vector
5696type are declared using a @code{VEC(@var{typename})} macro. The
5697characters @code{O}, @code{P} and @code{I} indicate whether
5698@var{typename} is an object (@code{O}), pointer (@code{P}) or integral
5699(@code{I}) type. Be careful to pick the correct one, as you'll get an
5700awkward and inefficient API if you use the wrong one. There is a
5701check, which results in a compile-time warning, for the @code{P} and
5702@code{I} versions, but there is no check for the @code{O} versions, as
5703that is not possible in plain C.
5704
5705An example of their use would be,
5706
5707@smallexample
5708DEF_VEC_P(tree); // non-managed tree vector.
5709
5710struct my_struct @{
5711 VEC(tree) *v; // A (pointer to) a vector of tree pointers.
5712@};
5713
5714struct my_struct *s;
5715
5716if (VEC_length(tree, s->v)) @{ we have some contents @}
5717VEC_safe_push(tree, s->v, decl); // append some decl onto the end
5718for (ix = 0; VEC_iterate(tree, s->v, ix, elt); ix++)
5719 @{ do something with elt @}
5720
5721@end smallexample
5722
5723The @file{vec.h} file provides details on how to invoke the various
5724accessors provided. They are enumerated here:
5725
5726@table @code
5727@item VEC_length
5728Return the number of items in the array,
5729
5730@item VEC_empty
5731Return true if the array has no elements.
5732
5733@item VEC_last
5734@itemx VEC_index
5735Return the last or arbitrary item in the array.
5736
5737@item VEC_iterate
5738Access an array element and indicate whether the array has been
5739traversed.
5740
5741@item VEC_alloc
5742@itemx VEC_free
5743Create and destroy an array.
5744
5745@item VEC_embedded_size
5746@itemx VEC_embedded_init
5747Helpers for embedding an array as the final element of another struct.
5748
5749@item VEC_copy
5750Duplicate an array.
5751
5752@item VEC_space
5753Return the amount of free space in an array.
5754
5755@item VEC_reserve
5756Ensure a certain amount of free space.
5757
5758@item VEC_quick_push
5759@itemx VEC_safe_push
5760Append to an array, either assuming the space is available, or making
5761sure that it is.
5762
5763@item VEC_pop
5764Remove the last item from an array.
5765
5766@item VEC_truncate
5767Remove several items from the end of an array.
5768
5769@item VEC_safe_grow
5770Add several items to the end of an array.
5771
5772@item VEC_replace
5773Overwrite an item in the array.
5774
5775@item VEC_quick_insert
5776@itemx VEC_safe_insert
5777Insert an item into the middle of the array. Either the space must
5778already exist, or the space is created.
5779
5780@item VEC_ordered_remove
5781@itemx VEC_unordered_remove
5782Remove an item from the array, preserving order or not.
5783
5784@item VEC_block_remove
5785Remove a set of items from the array.
5786
5787@item VEC_address
5788Provide the address of the first element.
5789
5790@item VEC_lower_bound
5791Binary search the array.
5792
5793@end table
5794
c906108c
SS
5795@section include
5796
a0e0ffdf 5797@node Coding Standards
c906108c 5798
a0e0ffdf
DE
5799@chapter Coding Standards
5800@cindex coding standards
5801
5802@section @value{GDBN} C Coding Standards
5803
5804@value{GDBN} follows the GNU coding standards, as described in
5805@file{etc/standards.texi}. This file is also available for anonymous
5806FTP from GNU archive sites. @value{GDBN} takes a strict interpretation
5807of the standard; in general, when the GNU standard recommends a practice
5808but does not require it, @value{GDBN} requires it.
5809
5810@value{GDBN} follows an additional set of coding standards specific to
5811@value{GDBN}, as described in the following sections.
5812
5813@subsection ISO C
5814
5815@value{GDBN} assumes an ISO/IEC 9899:1990 (a.k.a.@: ISO C90) compliant
5816compiler.
5817
5818@value{GDBN} does not assume an ISO C or POSIX compliant C library.
5819
5820@subsection Formatting
5821
5822@cindex source code formatting
5823The standard GNU recommendations for formatting must be followed
cef35b0f
PA
5824strictly. Any @value{GDBN}-specific deviation from GNU
5825recomendations is described below.
a0e0ffdf
DE
5826
5827A function declaration should not have its name in column zero. A
5828function definition should have its name in column zero.
5829
5830@smallexample
5831/* Declaration */
5832static void foo (void);
5833/* Definition */
5834void
5835foo (void)
5836@{
5837@}
5838@end smallexample
5839
5840@emph{Pragmatics: This simplifies scripting. Function definitions can
5841be found using @samp{^function-name}.}
5842
5843There must be a space between a function or macro name and the opening
5844parenthesis of its argument list (except for macro definitions, as
5845required by C). There must not be a space after an open paren/bracket
5846or before a close paren/bracket.
5847
5848While additional whitespace is generally helpful for reading, do not use
5849more than one blank line to separate blocks, and avoid adding whitespace
5850after the end of a program line (as of 1/99, some 600 lines had
5851whitespace after the semicolon). Excess whitespace causes difficulties
5852for @code{diff} and @code{patch} utilities.
5853
5854Pointers are declared using the traditional K&R C style:
5855
5856@smallexample
5857void *foo;
5858@end smallexample
5859
5860@noindent
5861and not:
5862
5863@smallexample
5864void * foo;
5865void* foo;
5866@end smallexample
5867
cef35b0f
PA
5868In addition, whitespace around casts and unary operators should follow
5869the following guidelines:
5870
5871@multitable @columnfractions .2 .2 .8
5872@item Use... @tab ...instead of @tab
5873
5874@item @code{!x}
5875@tab @code{! x}
5876@item @code{~x}
5877@tab @code{~ x}
5878@item @code{-x}
5879@tab @code{- x}
5880@tab (unary minus)
5881@item @code{(foo) x}
5882@tab @code{(foo)x}
5883@tab (cast)
5884@item @code{*x}
5885@tab @code{* x}
5886@tab (pointer dereference)
5887@end multitable
5888
0ee339bc
JK
5889Any two or more lines in code should be wrapped in braces, even if
5890they are comments, as they look like separate statements:
5891
5892@smallexample
5893if (i)
5894 @{
5895 /* Return success. */
5896 return 0;
5897 @}
5898@end smallexample
5899
5900@noindent
5901and not:
5902
5903@smallexample
5904if (i)
5905 /* Return success. */
5906 return 0;
5907@end smallexample
5908
a0e0ffdf
DE
5909@subsection Comments
5910
5911@cindex comment formatting
5912The standard GNU requirements on comments must be followed strictly.
5913
5914Block comments must appear in the following form, with no @code{/*}- or
5915@code{*/}-only lines, and no leading @code{*}:
5916
5917@smallexample
5918/* Wait for control to return from inferior to debugger. If inferior
5919 gets a signal, we may decide to start it up again instead of
5920 returning. That is why there is a loop in this function. When
5921 this function actually returns it means the inferior should be left
5922 stopped and @value{GDBN} should read more commands. */
5923@end smallexample
5924
5925(Note that this format is encouraged by Emacs; tabbing for a multi-line
5926comment works correctly, and @kbd{M-q} fills the block consistently.)
5927
5928Put a blank line between the block comments preceding function or
5929variable definitions, and the definition itself.
5930
5931In general, put function-body comments on lines by themselves, rather
5932than trying to fit them into the 20 characters left at the end of a
5933line, since either the comment or the code will inevitably get longer
5934than will fit, and then somebody will have to move it anyhow.
5935
5936@subsection C Usage
5937
5938@cindex C data types
5939Code must not depend on the sizes of C data types, the format of the
5940host's floating point numbers, the alignment of anything, or the order
5941of evaluation of expressions.
5942
5943@cindex function usage
5944Use functions freely. There are only a handful of compute-bound areas
5945in @value{GDBN} that might be affected by the overhead of a function
5946call, mainly in symbol reading. Most of @value{GDBN}'s performance is
5947limited by the target interface (whether serial line or system call).
5948
5949However, use functions with moderation. A thousand one-line functions
5950are just as hard to understand as a single thousand-line function.
5951
5952@emph{Macros are bad, M'kay.}
5953(But if you have to use a macro, make sure that the macro arguments are
5954protected with parentheses.)
5955
5956@cindex types
5957
5958Declarations like @samp{struct foo *} should be used in preference to
5959declarations like @samp{typedef struct foo @{ @dots{} @} *foo_ptr}.
5960
3d745be3
JK
5961Zero constant (@code{0}) is not interchangeable with a null pointer
5962constant (@code{NULL}) anywhere. @sc{gcc} does not give a warning for
5963such interchange. Specifically:
5964
5965@multitable @columnfractions .2 .5
5966@item incorrect
5967@tab @code{if (pointervar) @{@}}
5968@item incorrect
5969@tab @code{if (!pointervar) @{@}}
5970@item incorrect
5971@tab @code{if (pointervar != 0) @{@}}
5972@item incorrect
5973@tab @code{if (pointervar == 0) @{@}}
5974@item correct
5975@tab @code{if (pointervar != NULL) @{@}}
5976@item correct
5977@tab @code{if (pointervar == NULL) @{@}}
5978@end multitable
5979
a0e0ffdf
DE
5980@subsection Function Prototypes
5981@cindex function prototypes
5982
5983Prototypes must be used when both @emph{declaring} and @emph{defining}
5984a function. Prototypes for @value{GDBN} functions must include both the
5985argument type and name, with the name matching that used in the actual
5986function definition.
5987
5988All external functions should have a declaration in a header file that
0dfd2fad
PM
5989callers include, that declaration should use the @code{extern} modifier.
5990The only exception concerns @code{_initialize_*} functions, which must
a0e0ffdf
DE
5991be external so that @file{init.c} construction works, but shouldn't be
5992visible to random source files.
5993
5994Where a source file needs a forward declaration of a static function,
5995that declaration must appear in a block near the top of the source file.
5996
5997@subsection File Names
5998
5999Any file used when building the core of @value{GDBN} must be in lower
6000case. Any file used when building the core of @value{GDBN} must be 8.3
6001unique. These requirements apply to both source and generated files.
6002
6003@emph{Pragmatics: The core of @value{GDBN} must be buildable on many
6004platforms including DJGPP and MacOS/HFS. Every time an unfriendly file
6005is introduced to the build process both @file{Makefile.in} and
6006@file{configure.in} need to be modified accordingly. Compare the
6007convoluted conversion process needed to transform @file{COPYING} into
6008@file{copying.c} with the conversion needed to transform
6009@file{version.in} into @file{version.c}.}
6010
6011Any file non 8.3 compliant file (that is not used when building the core
6012of @value{GDBN}) must be added to @file{gdb/config/djgpp/fnchange.lst}.
6013
6014@emph{Pragmatics: This is clearly a compromise.}
6015
6016When @value{GDBN} has a local version of a system header file (ex
6017@file{string.h}) the file name based on the POSIX header prefixed with
6018@file{gdb_} (@file{gdb_string.h}). These headers should be relatively
6019independent: they should use only macros defined by @file{configure},
6020the compiler, or the host; they should include only system headers; they
6021should refer only to system types. They may be shared between multiple
6022programs, e.g.@: @value{GDBN} and @sc{gdbserver}.
6023
6024For other files @samp{-} is used as the separator.
6025
6026@subsection Include Files
6027
6028A @file{.c} file should include @file{defs.h} first.
6029
6030A @file{.c} file should directly include the @code{.h} file of every
6031declaration and/or definition it directly refers to. It cannot rely on
6032indirect inclusion.
6033
6034A @file{.h} file should directly include the @code{.h} file of every
6035declaration and/or definition it directly refers to. It cannot rely on
6036indirect inclusion. Exception: The file @file{defs.h} does not need to
6037be directly included.
6038
6039An external declaration should only appear in one include file.
6040
6041An external declaration should never appear in a @code{.c} file.
6042Exception: a declaration for the @code{_initialize} function that
6043pacifies @option{-Wmissing-declaration}.
6044
6045A @code{typedef} definition should only appear in one include file.
6046
6047An opaque @code{struct} declaration can appear in multiple @file{.h}
6048files. Where possible, a @file{.h} file should use an opaque
6049@code{struct} declaration instead of an include.
6050
6051All @file{.h} files should be wrapped in:
6052
6053@smallexample
6054#ifndef INCLUDE_FILE_NAME_H
6055#define INCLUDE_FILE_NAME_H
6056header body
6057#endif
6058@end smallexample
6059
6060@section @value{GDBN} Python Coding Standards
6061
6062@value{GDBN} follows the published @code{Python} coding standards in
6063@uref{http://www.python.org/dev/peps/pep-0008/, @code{PEP008}}.
6064
6065In addition, the guidelines in the
6066@uref{http://google-styleguide.googlecode.com/svn/trunk/pyguide.html,
6067Google Python Style Guide} are also followed where they do not
6068conflict with @code{PEP008}.
6069
6070@subsection @value{GDBN}-specific exceptions
6071
6072There are a few exceptions to the published standards.
6073They exist mainly for consistency with the @code{C} standards.
6074
6075@c It is expected that there are a few more exceptions,
6076@c so we use itemize here.
6077
6078@itemize @bullet
6079
6080@item
6081Use @code{FIXME} instead of @code{TODO}.
6082
6083@end itemize
6084
6085@node Misc Guidelines
6086
6087@chapter Misc Guidelines
c906108c
SS
6088
6089This chapter covers topics that are lower-level than the major
25822942 6090algorithms of @value{GDBN}.
c906108c
SS
6091
6092@section Cleanups
56caf160 6093@cindex cleanups
c906108c
SS
6094
6095Cleanups are a structured way to deal with things that need to be done
cc1cb004 6096later.
c906108c 6097
cc1cb004
AC
6098When your code does something (e.g., @code{xmalloc} some memory, or
6099@code{open} a file) that needs to be undone later (e.g., @code{xfree}
6100the memory or @code{close} the file), it can make a cleanup. The
6101cleanup will be done at some future point: when the command is finished
6102and control returns to the top level; when an error occurs and the stack
6103is unwound; or when your code decides it's time to explicitly perform
6104cleanups. Alternatively you can elect to discard the cleanups you
6105created.
c906108c
SS
6106
6107Syntax:
6108
6109@table @code
c906108c
SS
6110@item struct cleanup *@var{old_chain};
6111Declare a variable which will hold a cleanup chain handle.
6112
56caf160 6113@findex make_cleanup
c906108c
SS
6114@item @var{old_chain} = make_cleanup (@var{function}, @var{arg});
6115Make a cleanup which will cause @var{function} to be called with
6116@var{arg} (a @code{char *}) later. The result, @var{old_chain}, is a
cc1cb004
AC
6117handle that can later be passed to @code{do_cleanups} or
6118@code{discard_cleanups}. Unless you are going to call
6119@code{do_cleanups} or @code{discard_cleanups}, you can ignore the result
6120from @code{make_cleanup}.
c906108c 6121
56caf160 6122@findex do_cleanups
c906108c 6123@item do_cleanups (@var{old_chain});
cc1cb004
AC
6124Do all cleanups added to the chain since the corresponding
6125@code{make_cleanup} call was made.
6126
6127@findex discard_cleanups
6128@item discard_cleanups (@var{old_chain});
6129Same as @code{do_cleanups} except that it just removes the cleanups from
6130the chain and does not call the specified functions.
6131@end table
6132
6133Cleanups are implemented as a chain. The handle returned by
6134@code{make_cleanups} includes the cleanup passed to the call and any
6135later cleanups appended to the chain (but not yet discarded or
6136performed). E.g.:
56caf160 6137
474c8240 6138@smallexample
c906108c 6139make_cleanup (a, 0);
cc1cb004
AC
6140@{
6141 struct cleanup *old = make_cleanup (b, 0);
6142 make_cleanup (c, 0)
6143 ...
6144 do_cleanups (old);
6145@}
474c8240 6146@end smallexample
56caf160 6147
c906108c 6148@noindent
cc1cb004
AC
6149will call @code{c()} and @code{b()} but will not call @code{a()}. The
6150cleanup that calls @code{a()} will remain in the cleanup chain, and will
6151be done later unless otherwise discarded.@refill
6152
6153Your function should explicitly do or discard the cleanups it creates.
6154Failing to do this leads to non-deterministic behavior since the caller
6155will arbitrarily do or discard your functions cleanups. This need leads
6156to two common cleanup styles.
6157
6158The first style is try/finally. Before it exits, your code-block calls
6159@code{do_cleanups} with the old cleanup chain and thus ensures that your
6160code-block's cleanups are always performed. For instance, the following
6161code-segment avoids a memory leak problem (even when @code{error} is
6162called and a forced stack unwind occurs) by ensuring that the
6163@code{xfree} will always be called:
c906108c 6164
474c8240 6165@smallexample
cc1cb004
AC
6166struct cleanup *old = make_cleanup (null_cleanup, 0);
6167data = xmalloc (sizeof blah);
6168make_cleanup (xfree, data);
6169... blah blah ...
6170do_cleanups (old);
474c8240 6171@end smallexample
cc1cb004
AC
6172
6173The second style is try/except. Before it exits, your code-block calls
6174@code{discard_cleanups} with the old cleanup chain and thus ensures that
6175any created cleanups are not performed. For instance, the following
6176code segment, ensures that the file will be closed but only if there is
6177an error:
6178
474c8240 6179@smallexample
cc1cb004
AC
6180FILE *file = fopen ("afile", "r");
6181struct cleanup *old = make_cleanup (close_file, file);
6182... blah blah ...
6183discard_cleanups (old);
6184return file;
474c8240 6185@end smallexample
c906108c 6186
c1468174 6187Some functions, e.g., @code{fputs_filtered()} or @code{error()}, specify
c906108c
SS
6188that they ``should not be called when cleanups are not in place''. This
6189means that any actions you need to reverse in the case of an error or
6190interruption must be on the cleanup chain before you call these
6191functions, since they might never return to your code (they
6192@samp{longjmp} instead).
6193
ba8c9337
AC
6194@section Per-architecture module data
6195@cindex per-architecture module data
6196@cindex multi-arch data
6197@cindex data-pointer, per-architecture/per-module
6198
fc989b7a
AC
6199The multi-arch framework includes a mechanism for adding module
6200specific per-architecture data-pointers to the @code{struct gdbarch}
6201architecture object.
6202
6203A module registers one or more per-architecture data-pointers using:
6204
587afa38 6205@deftypefn {Architecture Function} {struct gdbarch_data *} gdbarch_data_register_pre_init (gdbarch_data_pre_init_ftype *@var{pre_init})
fc989b7a
AC
6206@var{pre_init} is used to, on-demand, allocate an initial value for a
6207per-architecture data-pointer using the architecture's obstack (passed
6208in as a parameter). Since @var{pre_init} can be called during
6209architecture creation, it is not parameterized with the architecture.
6210and must not call modules that use per-architecture data.
587afa38 6211@end deftypefn
ba8c9337 6212
587afa38 6213@deftypefn {Architecture Function} {struct gdbarch_data *} gdbarch_data_register_post_init (gdbarch_data_post_init_ftype *@var{post_init})
fc989b7a
AC
6214@var{post_init} is used to obtain an initial value for a
6215per-architecture data-pointer @emph{after}. Since @var{post_init} is
6216always called after architecture creation, it both receives the fully
6217initialized architecture and is free to call modules that use
6218per-architecture data (care needs to be taken to ensure that those
6219other modules do not try to call back to this module as that will
6220create in cycles in the initialization call graph).
587afa38 6221@end deftypefn
ba8c9337 6222
fc989b7a
AC
6223These functions return a @code{struct gdbarch_data} that is used to
6224identify the per-architecture data-pointer added for that module.
ba8c9337 6225
fc989b7a 6226The per-architecture data-pointer is accessed using the function:
ba8c9337 6227
587afa38 6228@deftypefn {Architecture Function} {void *} gdbarch_data (struct gdbarch *@var{gdbarch}, struct gdbarch_data *@var{data_handle})
fc989b7a
AC
6229Given the architecture @var{arch} and module data handle
6230@var{data_handle} (returned by @code{gdbarch_data_register_pre_init}
6231or @code{gdbarch_data_register_post_init}), this function returns the
6232current value of the per-architecture data-pointer. If the data
6233pointer is @code{NULL}, it is first initialized by calling the
6234corresponding @var{pre_init} or @var{post_init} method.
587afa38 6235@end deftypefn
ba8c9337 6236
fc989b7a 6237The examples below assume the following definitions:
ba8c9337
AC
6238
6239@smallexample
e7f16015 6240struct nozel @{ int total; @};
ba8c9337 6241static struct gdbarch_data *nozel_handle;
ba8c9337
AC
6242@end smallexample
6243
fc989b7a
AC
6244A module can extend the architecture vector, adding additional
6245per-architecture data, using the @var{pre_init} method. The module's
6246per-architecture data is then initialized during architecture
6247creation.
ba8c9337 6248
fc989b7a
AC
6249In the below, the module's per-architecture @emph{nozel} is added. An
6250architecture can specify its nozel by calling @code{set_gdbarch_nozel}
6251from @code{gdbarch_init}.
ba8c9337
AC
6252
6253@smallexample
fc989b7a
AC
6254static void *
6255nozel_pre_init (struct obstack *obstack)
ba8c9337 6256@{
fc989b7a
AC
6257 struct nozel *data = OBSTACK_ZALLOC (obstack, struct nozel);
6258 return data;
6259@}
ba8c9337
AC
6260@end smallexample
6261
ba8c9337 6262@smallexample
fc989b7a
AC
6263extern void
6264set_gdbarch_nozel (struct gdbarch *gdbarch, int total)
ba8c9337 6265@{
ba8c9337 6266 struct nozel *data = gdbarch_data (gdbarch, nozel_handle);
fc989b7a 6267 data->total = nozel;
ba8c9337
AC
6268@}
6269@end smallexample
6270
587afa38 6271A module can on-demand create architecture dependent data structures
fc989b7a 6272using @code{post_init}.
ba8c9337 6273
fc989b7a
AC
6274In the below, the nozel's total is computed on-demand by
6275@code{nozel_post_init} using information obtained from the
6276architecture.
ba8c9337
AC
6277
6278@smallexample
fc989b7a
AC
6279static void *
6280nozel_post_init (struct gdbarch *gdbarch)
ba8c9337 6281@{
fc989b7a
AC
6282 struct nozel *data = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct nozel);
6283 nozel->total = gdbarch@dots{} (gdbarch);
6284 return data;
ba8c9337
AC
6285@}
6286@end smallexample
6287
6288@smallexample
fc989b7a
AC
6289extern int
6290nozel_total (struct gdbarch *gdbarch)
ba8c9337 6291@{
fc989b7a
AC
6292 struct nozel *data = gdbarch_data (gdbarch, nozel_handle);
6293 return data->total;
ba8c9337
AC
6294@}
6295@end smallexample
6296
c906108c 6297@section Wrapping Output Lines
56caf160 6298@cindex line wrap in output
c906108c 6299
56caf160 6300@findex wrap_here
c906108c
SS
6301Output that goes through @code{printf_filtered} or @code{fputs_filtered}
6302or @code{fputs_demangled} needs only to have calls to @code{wrap_here}
6303added in places that would be good breaking points. The utility
6304routines will take care of actually wrapping if the line width is
6305exceeded.
6306
6307The argument to @code{wrap_here} is an indentation string which is
6308printed @emph{only} if the line breaks there. This argument is saved
6309away and used later. It must remain valid until the next call to
6310@code{wrap_here} or until a newline has been printed through the
6311@code{*_filtered} functions. Don't pass in a local variable and then
6312return!
6313
56caf160 6314It is usually best to call @code{wrap_here} after printing a comma or
c906108c
SS
6315space. If you call it before printing a space, make sure that your
6316indentation properly accounts for the leading space that will print if
6317the line wraps there.
6318
6319Any function or set of functions that produce filtered output must
6320finish by printing a newline, to flush the wrap buffer, before switching
56caf160 6321to unfiltered (@code{printf}) output. Symbol reading routines that
c906108c
SS
6322print warnings are a good example.
6323
a0e0ffdf 6324@section Memory Management
af6c57ea
AC
6325
6326@value{GDBN} does not use the functions @code{malloc}, @code{realloc},
6327@code{calloc}, @code{free} and @code{asprintf}.
6328
6329@value{GDBN} uses the functions @code{xmalloc}, @code{xrealloc} and
6330@code{xcalloc} when allocating memory. Unlike @code{malloc} et.al.@:
6331these functions do not return when the memory pool is empty. Instead,
6332they unwind the stack using cleanups. These functions return
6333@code{NULL} when requested to allocate a chunk of memory of size zero.
6334
6335@emph{Pragmatics: By using these functions, the need to check every
6336memory allocation is removed. These functions provide portable
6337behavior.}
6338
6339@value{GDBN} does not use the function @code{free}.
6340
6341@value{GDBN} uses the function @code{xfree} to return memory to the
6342memory pool. Consistent with ISO-C, this function ignores a request to
6343free a @code{NULL} pointer.
6344
6345@emph{Pragmatics: On some systems @code{free} fails when passed a
6346@code{NULL} pointer.}
6347
6348@value{GDBN} can use the non-portable function @code{alloca} for the
6349allocation of small temporary values (such as strings).
6350
6351@emph{Pragmatics: This function is very non-portable. Some systems
6352restrict the memory being allocated to no more than a few kilobytes.}
6353
6354@value{GDBN} uses the string function @code{xstrdup} and the print
b435e160 6355function @code{xstrprintf}.
af6c57ea
AC
6356
6357@emph{Pragmatics: @code{asprintf} and @code{strdup} can fail. Print
6358functions such as @code{sprintf} are very prone to buffer overflow
6359errors.}
6360
6361
a0e0ffdf 6362@section Compiler Warnings
56caf160 6363@cindex compiler warnings
af6c57ea 6364
aa79a185
DJ
6365With few exceptions, developers should avoid the configuration option
6366@samp{--disable-werror} when building @value{GDBN}. The exceptions
6367are listed in the file @file{gdb/MAINTAINERS}. The default, when
6368building with @sc{gcc}, is @samp{--enable-werror}.
af6c57ea
AC
6369
6370This option causes @value{GDBN} (when built using GCC) to be compiled
6371with a carefully selected list of compiler warning flags. Any warnings
aa79a185 6372from those flags are treated as errors.
af6c57ea
AC
6373
6374The current list of warning flags includes:
6375
6376@table @samp
aa79a185
DJ
6377@item -Wall
6378Recommended @sc{gcc} warnings.
af6c57ea 6379
aa79a185 6380@item -Wdeclaration-after-statement
af6c57ea 6381
aa79a185
DJ
6382@sc{gcc} 3.x (and later) and @sc{c99} allow declarations mixed with
6383code, but @sc{gcc} 2.x and @sc{c89} do not.
af6c57ea 6384
aa79a185 6385@item -Wpointer-arith
af6c57ea 6386
aa79a185
DJ
6387@item -Wformat-nonliteral
6388Non-literal format strings, with a few exceptions, are bugs - they
d3e8051b 6389might contain unintended user-supplied format specifiers.
af6c57ea 6390Since @value{GDBN} uses the @code{format printf} attribute on all
aa79a185 6391@code{printf} like functions this checks not just @code{printf} calls
af6c57ea
AC
6392but also calls to functions such as @code{fprintf_unfiltered}.
6393
bd3f3b55
PA
6394@item -Wpointer-sign
6395This helps make sure @value{GDBN} code uses @code{gdb_byte} which is
6396really @code{unsigned char} for raw bytes instead of @code{char},
5360976e 6397whose signedness is host-dependent. @sc{gcc} enables this with
bd3f3b55
PA
6398@code{-Wall} since version 4.0. We enable it explicitly too to be
6399decoupled from future @sc{gcc} (or other compiler)'s defaults.
7be93b9e 6400
aa79a185
DJ
6401@item -Wno-unused-parameter
6402Due to the way that @value{GDBN} is implemented many functions have
6403unused parameters. Consequently this warning is avoided. The macro
af6c57ea
AC
6404@code{ATTRIBUTE_UNUSED} is not used as it leads to false negatives ---
6405it is not an error to have @code{ATTRIBUTE_UNUSED} on a parameter that
aa79a185
DJ
6406is being used.
6407
6408@item -Wno-unused
6409@itemx -Wno-switch
58b38ee2 6410@itemx -Wno-char-subscripts
aa79a185
DJ
6411These are warnings which might be useful for @value{GDBN}, but are
6412currently too noisy to enable with @samp{-Werror}.
af6c57ea 6413
aa79a185 6414@end table
c906108c 6415
a0e0ffdf 6416@section Internal Error Recovery
af6c57ea
AC
6417
6418During its execution, @value{GDBN} can encounter two types of errors.
6419User errors and internal errors. User errors include not only a user
6420entering an incorrect command but also problems arising from corrupt
6421object files and system errors when interacting with the target.
937f164b
FF
6422Internal errors include situations where @value{GDBN} has detected, at
6423run time, a corrupt or erroneous situation.
af6c57ea
AC
6424
6425When reporting an internal error, @value{GDBN} uses
6426@code{internal_error} and @code{gdb_assert}.
6427
6428@value{GDBN} must not call @code{abort} or @code{assert}.
6429
6430@emph{Pragmatics: There is no @code{internal_warning} function. Either
6431the code detected a user error, recovered from it and issued a
6432@code{warning} or the code failed to correctly recover from the user
6433error and issued an @code{internal_error}.}
6434
a0e0ffdf 6435@section Command Names
aaf4119b
DE
6436
6437GDB U/I commands are written @samp{foo-bar}, not @samp{foo_bar}.
6438
a0e0ffdf 6439@section Clean Design and Portable Implementation
c906108c 6440
56caf160 6441@cindex design
c906108c 6442In addition to getting the syntax right, there's the little question of
25822942 6443semantics. Some things are done in certain ways in @value{GDBN} because long
c906108c
SS
6444experience has shown that the more obvious ways caused various kinds of
6445trouble.
6446
56caf160 6447@cindex assumptions about targets
c906108c
SS
6448You can't assume the byte order of anything that comes from a target
6449(including @var{value}s, object files, and instructions). Such things
56caf160
EZ
6450must be byte-swapped using @code{SWAP_TARGET_AND_HOST} in
6451@value{GDBN}, or one of the swap routines defined in @file{bfd.h},
6452such as @code{bfd_get_32}.
c906108c
SS
6453
6454You can't assume that you know what interface is being used to talk to
6455the target system. All references to the target must go through the
6456current @code{target_ops} vector.
6457
6458You can't assume that the host and target machines are the same machine
6459(except in the ``native'' support modules). In particular, you can't
6460assume that the target machine's header files will be available on the
6461host machine. Target code must bring along its own header files --
6462written from scratch or explicitly donated by their owner, to avoid
6463copyright problems.
6464
56caf160 6465@cindex portability
c906108c
SS
6466Insertion of new @code{#ifdef}'s will be frowned upon. It's much better
6467to write the code portably than to conditionalize it for various
6468systems.
6469
56caf160 6470@cindex system dependencies
c906108c
SS
6471New @code{#ifdef}'s which test for specific compilers or manufacturers
6472or operating systems are unacceptable. All @code{#ifdef}'s should test
6473for features. The information about which configurations contain which
6474features should be segregated into the configuration files. Experience
6475has proven far too often that a feature unique to one particular system
6476often creeps into other systems; and that a conditional based on some
6477predefined macro for your current system will become worthless over
6478time, as new versions of your system come out that behave differently
6479with regard to this feature.
6480
6481Adding code that handles specific architectures, operating systems,
af6c57ea 6482target interfaces, or hosts, is not acceptable in generic code.
c906108c 6483
dab11f21
EZ
6484@cindex portable file name handling
6485@cindex file names, portability
6486One particularly notorious area where system dependencies tend to
6487creep in is handling of file names. The mainline @value{GDBN} code
6488assumes Posix semantics of file names: absolute file names begin with
6489a forward slash @file{/}, slashes are used to separate leading
6490directories, case-sensitive file names. These assumptions are not
6491necessarily true on non-Posix systems such as MS-Windows. To avoid
6492system-dependent code where you need to take apart or construct a file
6493name, use the following portable macros:
6494
6495@table @code
6496@findex HAVE_DOS_BASED_FILE_SYSTEM
6497@item HAVE_DOS_BASED_FILE_SYSTEM
6498This preprocessing symbol is defined to a non-zero value on hosts
6499whose filesystems belong to the MS-DOS/MS-Windows family. Use this
6500symbol to write conditional code which should only be compiled for
6501such hosts.
6502
6503@findex IS_DIR_SEPARATOR
4be31470 6504@item IS_DIR_SEPARATOR (@var{c})
dab11f21
EZ
6505Evaluates to a non-zero value if @var{c} is a directory separator
6506character. On Unix and GNU/Linux systems, only a slash @file{/} is
6507such a character, but on Windows, both @file{/} and @file{\} will
6508pass.
6509
6510@findex IS_ABSOLUTE_PATH
6511@item IS_ABSOLUTE_PATH (@var{file})
6512Evaluates to a non-zero value if @var{file} is an absolute file name.
6513For Unix and GNU/Linux hosts, a name which begins with a slash
6514@file{/} is absolute. On DOS and Windows, @file{d:/foo} and
6515@file{x:\bar} are also absolute file names.
6516
6517@findex FILENAME_CMP
6518@item FILENAME_CMP (@var{f1}, @var{f2})
6519Calls a function which compares file names @var{f1} and @var{f2} as
6520appropriate for the underlying host filesystem. For Posix systems,
6521this simply calls @code{strcmp}; on case-insensitive filesystems it
6522will call @code{strcasecmp} instead.
6523
6524@findex DIRNAME_SEPARATOR
6525@item DIRNAME_SEPARATOR
6526Evaluates to a character which separates directories in
6527@code{PATH}-style lists, typically held in environment variables.
6528This character is @samp{:} on Unix, @samp{;} on DOS and Windows.
6529
6530@findex SLASH_STRING
6531@item SLASH_STRING
6532This evaluates to a constant string you should use to produce an
6533absolute filename from leading directories and the file's basename.
6534@code{SLASH_STRING} is @code{"/"} on most systems, but might be
6535@code{"\\"} for some Windows-based ports.
6536@end table
6537
6538In addition to using these macros, be sure to use portable library
6539functions whenever possible. For example, to extract a directory or a
6540basename part from a file name, use the @code{dirname} and
6541@code{basename} library functions (available in @code{libiberty} for
6542platforms which don't provide them), instead of searching for a slash
6543with @code{strrchr}.
6544
25822942
DB
6545Another way to generalize @value{GDBN} along a particular interface is with an
6546attribute struct. For example, @value{GDBN} has been generalized to handle
56caf160
EZ
6547multiple kinds of remote interfaces---not by @code{#ifdef}s everywhere, but
6548by defining the @code{target_ops} structure and having a current target (as
c906108c
SS
6549well as a stack of targets below it, for memory references). Whenever
6550something needs to be done that depends on which remote interface we are
56caf160
EZ
6551using, a flag in the current target_ops structure is tested (e.g.,
6552@code{target_has_stack}), or a function is called through a pointer in the
c906108c 6553current target_ops structure. In this way, when a new remote interface
56caf160 6554is added, only one module needs to be touched---the one that actually
c906108c
SS
6555implements the new remote interface. Other examples of
6556attribute-structs are BFD access to multiple kinds of object file
25822942 6557formats, or @value{GDBN}'s access to multiple source languages.
c906108c 6558
56caf160
EZ
6559Please avoid duplicating code. For example, in @value{GDBN} 3.x all
6560the code interfacing between @code{ptrace} and the rest of
6561@value{GDBN} was duplicated in @file{*-dep.c}, and so changing
6562something was very painful. In @value{GDBN} 4.x, these have all been
6563consolidated into @file{infptrace.c}. @file{infptrace.c} can deal
6564with variations between systems the same way any system-independent
6565file would (hooks, @code{#if defined}, etc.), and machines which are
6566radically different don't need to use @file{infptrace.c} at all.
c906108c 6567
af6c57ea
AC
6568All debugging code must be controllable using the @samp{set debug
6569@var{module}} command. Do not use @code{printf} to print trace
6570messages. Use @code{fprintf_unfiltered(gdb_stdlog, ...}. Do not use
6571@code{#ifdef DEBUG}.
6572
8487521e 6573@node Porting GDB
c906108c 6574
25822942 6575@chapter Porting @value{GDBN}
56caf160 6576@cindex porting to new machines
c906108c 6577
56caf160 6578Most of the work in making @value{GDBN} compile on a new machine is in
587afa38
EZ
6579specifying the configuration of the machine. Porting a new
6580architecture to @value{GDBN} can be broken into a number of steps.
c906108c 6581
56caf160 6582@itemize @bullet
c906108c 6583
587afa38
EZ
6584@item
6585Ensure a @sc{bfd} exists for executables of the target architecture in
6586the @file{bfd} directory. If one does not exist, create one by
6587modifying an existing similar one.
56caf160 6588
587afa38
EZ
6589@item
6590Implement a disassembler for the target architecture in the @file{opcodes}
6591directory.
56caf160 6592
587afa38
EZ
6593@item
6594Define the target architecture in the @file{gdb} directory
6595(@pxref{Adding a New Target, , Adding a New Target}). Add the pattern
6596for the new target to @file{configure.tgt} with the names of the files
6597that contain the code. By convention the target architecture
6598definition for an architecture @var{arch} is placed in
6599@file{@var{arch}-tdep.c}.
6600
6601Within @file{@var{arch}-tdep.c} define the function
6602@code{_initialize_@var{arch}_tdep} which calls
6603@code{gdbarch_register} to create the new @code{@w{struct
6604gdbarch}} for the architecture.
56caf160 6605
587afa38
EZ
6606@item
6607If a new remote target is needed, consider adding a new remote target
6608by defining a function
6609@code{_initialize_remote_@var{arch}}. However if at all possible
6610use the @value{GDBN} @emph{Remote Serial Protocol} for this and implement
6611the server side protocol independently with the target.
c906108c 6612
587afa38
EZ
6613@item
6614If desired implement a simulator in the @file{sim} directory. This
6615should create the library @file{libsim.a} implementing the interface
6616in @file{remote-sim.h} (found in the @file{include} directory).
c906108c 6617
56caf160 6618@item
587afa38
EZ
6619Build and test. If desired, lobby the @sc{gdb} steering group to
6620have the new port included in the main distribution!
7fd60527 6621
56caf160 6622@item
587afa38
EZ
6623Add a description of the new architecture to the main @value{GDBN} user
6624guide (@pxref{Configuration Specific Information, , Configuration
6625Specific Information, gdb, Debugging with @value{GDBN}}).
6626
56caf160 6627@end itemize
c906108c 6628
d52fe014
AC
6629@node Versions and Branches
6630@chapter Versions and Branches
8973da3a 6631
d52fe014 6632@section Versions
8973da3a 6633
d52fe014
AC
6634@value{GDBN}'s version is determined by the file
6635@file{gdb/version.in} and takes one of the following forms:
fb0ff88f 6636
d52fe014
AC
6637@table @asis
6638@item @var{major}.@var{minor}
6639@itemx @var{major}.@var{minor}.@var{patchlevel}
53531fc1
AC
6640an official release (e.g., 6.2 or 6.2.1)
6641@item @var{major}.@var{minor}.@var{patchlevel}.@var{YYYY}@var{MM}@var{DD}
6642a snapshot taken at @var{YYYY}-@var{MM}-@var{DD}-gmt (e.g.,
66436.1.50.20020302, 6.1.90.20020304, or 6.1.0.20020308)
6644@item @var{major}.@var{minor}.@var{patchlevel}.@var{YYYY}@var{MM}@var{DD}-cvs
6645a @sc{cvs} check out drawn on @var{YYYY}-@var{MM}-@var{DD} (e.g.,
66466.1.50.20020302-cvs, 6.1.90.20020304-cvs, or 6.1.0.20020308-cvs)
6647@item @var{major}.@var{minor}.@var{patchlevel}.@var{YYYY}@var{MM}@var{DD} (@var{vendor})
d52fe014 6648a vendor specific release of @value{GDBN}, that while based on@*
53531fc1
AC
6649@var{major}.@var{minor}.@var{patchlevel}.@var{YYYY}@var{MM}@var{DD},
6650may include additional changes
d52fe014 6651@end table
fb0ff88f 6652
d52fe014
AC
6653@value{GDBN}'s mainline uses the @var{major} and @var{minor} version
6654numbers from the most recent release branch, with a @var{patchlevel}
53531fc1
AC
6655of 50. At the time each new release branch is created, the mainline's
6656@var{major} and @var{minor} version numbers are updated.
fb0ff88f 6657
53531fc1
AC
6658@value{GDBN}'s release branch is similar. When the branch is cut, the
6659@var{patchlevel} is changed from 50 to 90. As draft releases are
6660drawn from the branch, the @var{patchlevel} is incremented. Once the
6661first release (@var{major}.@var{minor}) has been made, the
6662@var{patchlevel} is set to 0 and updates have an incremented
6663@var{patchlevel}.
6664
6665For snapshots, and @sc{cvs} check outs, it is also possible to
6666identify the @sc{cvs} origin:
6667
6668@table @asis
6669@item @var{major}.@var{minor}.50.@var{YYYY}@var{MM}@var{DD}
6670drawn from the @sc{head} of mainline @sc{cvs} (e.g., 6.1.50.20020302)
6671@item @var{major}.@var{minor}.90.@var{YYYY}@var{MM}@var{DD}
6672@itemx @var{major}.@var{minor}.91.@var{YYYY}@var{MM}@var{DD} @dots{}
6673drawn from a release branch prior to the release (e.g.,
66746.1.90.20020304)
6675@item @var{major}.@var{minor}.0.@var{YYYY}@var{MM}@var{DD}
6676@itemx @var{major}.@var{minor}.1.@var{YYYY}@var{MM}@var{DD} @dots{}
6677drawn from a release branch after the release (e.g., 6.2.0.20020308)
6678@end table
fb0ff88f 6679
d52fe014
AC
6680If the previous @value{GDBN} version is 6.1 and the current version is
66816.2, then, substituting 6 for @var{major} and 1 or 2 for @var{minor},
6682here's an illustration of a typical sequence:
fb0ff88f 6683
d52fe014
AC
6684@smallexample
6685 <HEAD>
6686 |
53531fc1 66876.1.50.20020302-cvs
d52fe014 6688 |
53531fc1 6689 +--------------------------.
d52fe014 6690 | <gdb_6_2-branch>
d52fe014 6691 | |
53531fc1
AC
66926.2.50.20020303-cvs 6.1.90 (draft #1)
6693 | |
66946.2.50.20020304-cvs 6.1.90.20020304-cvs
6695 | |
66966.2.50.20020305-cvs 6.1.91 (draft #2)
d52fe014 6697 | |
53531fc1
AC
66986.2.50.20020306-cvs 6.1.91.20020306-cvs
6699 | |
67006.2.50.20020307-cvs 6.2 (release)
6701 | |
67026.2.50.20020308-cvs 6.2.0.20020308-cvs
6703 | |
67046.2.50.20020309-cvs 6.2.1 (update)
6705 | |
67066.2.50.20020310-cvs <branch closed>
d52fe014 6707 |
53531fc1 67086.2.50.20020311-cvs
d52fe014 6709 |
53531fc1 6710 +--------------------------.
d52fe014 6711 | <gdb_6_3-branch>
53531fc1
AC
6712 | |
67136.3.50.20020312-cvs 6.2.90 (draft #1)
6714 | |
d52fe014 6715@end smallexample
fb0ff88f 6716
d52fe014
AC
6717@section Release Branches
6718@cindex Release Branches
fb0ff88f 6719
d52fe014
AC
6720@value{GDBN} draws a release series (6.2, 6.2.1, @dots{}) from a
6721single release branch, and identifies that branch using the @sc{cvs}
6722branch tags:
fb0ff88f 6723
d52fe014
AC
6724@smallexample
6725gdb_@var{major}_@var{minor}-@var{YYYY}@var{MM}@var{DD}-branchpoint
6726gdb_@var{major}_@var{minor}-branch
6727gdb_@var{major}_@var{minor}-@var{YYYY}@var{MM}@var{DD}-release
6728@end smallexample
6729
6730@emph{Pragmatics: To help identify the date at which a branch or
6731release is made, both the branchpoint and release tags include the
6732date that they are cut (@var{YYYY}@var{MM}@var{DD}) in the tag. The
6733branch tag, denoting the head of the branch, does not need this.}
6734
6735@section Vendor Branches
6736@cindex vendor branches
fb0ff88f
AC
6737
6738To avoid version conflicts, vendors are expected to modify the file
6739@file{gdb/version.in} to include a vendor unique alphabetic identifier
6740(an official @value{GDBN} release never uses alphabetic characters in
d3e8051b 6741its version identifier). E.g., @samp{6.2widgit2}, or @samp{6.2 (Widgit
d52fe014
AC
6742Inc Patch 2)}.
6743
6744@section Experimental Branches
6745@cindex experimental branches
6746
6747@subsection Guidelines
6748
6749@value{GDBN} permits the creation of branches, cut from the @sc{cvs}
6750repository, for experimental development. Branches make it possible
6751for developers to share preliminary work, and maintainers to examine
6752significant new developments.
fb0ff88f 6753
d52fe014 6754The following are a set of guidelines for creating such branches:
fb0ff88f 6755
d52fe014
AC
6756@table @emph
6757
6758@item a branch has an owner
6759The owner can set further policy for a branch, but may not change the
6760ground rules. In particular, they can set a policy for commits (be it
6761adding more reviewers or deciding who can commit).
6762
6763@item all commits are posted
6764All changes committed to a branch shall also be posted to
87f9adc1 6765@email{gdb-patches@@sourceware.org, the @value{GDBN} patches
d52fe014
AC
6766mailing list}. While commentary on such changes are encouraged, people
6767should remember that the changes only apply to a branch.
6768
6769@item all commits are covered by an assignment
6770This ensures that all changes belong to the Free Software Foundation,
6771and avoids the possibility that the branch may become contaminated.
6772
6773@item a branch is focused
6774A focused branch has a single objective or goal, and does not contain
6775unnecessary or irrelevant changes. Cleanups, where identified, being
6776be pushed into the mainline as soon as possible.
6777
6778@item a branch tracks mainline
6779This keeps the level of divergence under control. It also keeps the
6780pressure on developers to push cleanups and other stuff into the
6781mainline.
6782
6783@item a branch shall contain the entire @value{GDBN} module
6784The @value{GDBN} module @code{gdb} should be specified when creating a
6785branch (branches of individual files should be avoided). @xref{Tags}.
6786
6787@item a branch shall be branded using @file{version.in}
6788The file @file{gdb/version.in} shall be modified so that it identifies
6789the branch @var{owner} and branch @var{name}, e.g.,
53531fc1 6790@samp{6.2.50.20030303_owner_name} or @samp{6.2 (Owner Name)}.
d52fe014
AC
6791
6792@end table
fb0ff88f 6793
d52fe014
AC
6794@subsection Tags
6795@anchor{Tags}
fb0ff88f 6796
d52fe014
AC
6797To simplify the identification of @value{GDBN} branches, the following
6798branch tagging convention is strongly recommended:
fb0ff88f 6799
d52fe014 6800@table @code
fb0ff88f 6801
d52fe014
AC
6802@item @var{owner}_@var{name}-@var{YYYYMMDD}-branchpoint
6803@itemx @var{owner}_@var{name}-@var{YYYYMMDD}-branch
6804The branch point and corresponding branch tag. @var{YYYYMMDD} is the
6805date that the branch was created. A branch is created using the
6806sequence: @anchor{experimental branch tags}
474c8240 6807@smallexample
d52fe014
AC
6808cvs rtag @var{owner}_@var{name}-@var{YYYYMMDD}-branchpoint gdb
6809cvs rtag -b -r @var{owner}_@var{name}-@var{YYYYMMDD}-branchpoint \
6810 @var{owner}_@var{name}-@var{YYYYMMDD}-branch gdb
474c8240 6811@end smallexample
fb0ff88f 6812
d52fe014
AC
6813@item @var{owner}_@var{name}-@var{yyyymmdd}-mergepoint
6814The tagged point, on the mainline, that was used when merging the branch
6815on @var{yyyymmdd}. To merge in all changes since the branch was cut,
6816use a command sequence like:
474c8240 6817@smallexample
d52fe014
AC
6818cvs rtag @var{owner}_@var{name}-@var{yyyymmdd}-mergepoint gdb
6819cvs update \
6820 -j@var{owner}_@var{name}-@var{YYYYMMDD}-branchpoint
6821 -j@var{owner}_@var{name}-@var{yyyymmdd}-mergepoint
474c8240 6822@end smallexample
d52fe014
AC
6823@noindent
6824Similar sequences can be used to just merge in changes since the last
6825merge.
6826
6827@end table
fb0ff88f 6828
d52fe014
AC
6829@noindent
6830For further information on @sc{cvs}, see
6831@uref{http://www.gnu.org/software/cvs/, Concurrent Versions System}.
6832
55f6ca0f
JB
6833@node Start of New Year Procedure
6834@chapter Start of New Year Procedure
6835@cindex new year procedure
6836
6837At the start of each new year, the following actions should be performed:
6838
6839@itemize @bullet
6840@item
6841Rotate the ChangeLog file
6842
6843The current @file{ChangeLog} file should be renamed into
6844@file{ChangeLog-YYYY} where YYYY is the year that has just passed.
6845A new @file{ChangeLog} file should be created, and its contents should
6846contain a reference to the previous ChangeLog. The following should
6847also be preserved at the end of the new ChangeLog, in order to provide
6848the appropriate settings when editing this file with Emacs:
6849@smallexample
6850Local Variables:
6851mode: change-log
6852left-margin: 8
6853fill-column: 74
6854version-control: never
9cb011d3 6855coding: utf-8
55f6ca0f
JB
6856End:
6857@end smallexample
6858
7f893741
JB
6859@item
6860Add an entry for the newly created ChangeLog file (@file{ChangeLog-YYYY})
6861in @file{gdb/config/djgpp/fnchange.lst}.
6862
55f6ca0f
JB
6863@item
6864Update the copyright year in the startup message
6865
9cb011d3
JB
6866Update the copyright year in:
6867@itemize @bullet
e6f3ec50
JB
6868 @item
6869 file @file{top.c}, function @code{print_gdb_version}
6870 @item
6871 file @file{gdbserver/server.c}, function @code{gdbserver_version}
6872 @item
6873 file @file{gdbserver/gdbreplay.c}, function @code{gdbreplay_version}
9cb011d3 6874@end itemize
6ec2edbe
JB
6875
6876@item
ce1b17c4
JB
6877Run the @file{copyright.py} Python script to add the new year in the copyright
6878notices of most source files. This script has been tested with Python
68792.6 and 2.7.
6ec2edbe 6880
55f6ca0f
JB
6881@end itemize
6882
d52fe014 6883@node Releasing GDB
fb0ff88f 6884
d52fe014
AC
6885@chapter Releasing @value{GDBN}
6886@cindex making a new release of gdb
fb0ff88f 6887
9bb0a4d8
AC
6888@section Branch Commit Policy
6889
6890The branch commit policy is pretty slack. @value{GDBN} releases 5.0,
68915.1 and 5.2 all used the below:
6892
6893@itemize @bullet
6894@item
6895The @file{gdb/MAINTAINERS} file still holds.
6896@item
6897Don't fix something on the branch unless/until it is also fixed in the
6898trunk. If this isn't possible, mentioning it in the @file{gdb/PROBLEMS}
4be31470 6899file is better than committing a hack.
9bb0a4d8
AC
6900@item
6901When considering a patch for the branch, suggested criteria include:
6902Does it fix a build? Does it fix the sequence @kbd{break main; run}
6903when debugging a static binary?
6904@item
6905The further a change is from the core of @value{GDBN}, the less likely
6906the change will worry anyone (e.g., target specific code).
6907@item
6908Only post a proposal to change the core of @value{GDBN} after you've
6909sent individual bribes to all the people listed in the
6910@file{MAINTAINERS} file @t{;-)}
6911@end itemize
6912
6913@emph{Pragmatics: Provided updates are restricted to non-core
6914functionality there is little chance that a broken change will be fatal.
6915This means that changes such as adding a new architectures or (within
6916reason) support for a new host are considered acceptable.}
6917
6918
cbb09e6a 6919@section Obsoleting code
8973da3a 6920
8642bc8f 6921Before anything else, poke the other developers (and around the source
4be31470
EZ
6922code) to see if there is anything that can be removed from @value{GDBN}
6923(an old target, an unused file).
8973da3a 6924
8642bc8f 6925Obsolete code is identified by adding an @code{OBSOLETE} prefix to every
cbb09e6a
AC
6926line. Doing this means that it is easy to identify something that has
6927been obsoleted when greping through the sources.
8973da3a 6928
cbb09e6a
AC
6929The process is done in stages --- this is mainly to ensure that the
6930wider @value{GDBN} community has a reasonable opportunity to respond.
6931Remember, everything on the Internet takes a week.
8973da3a 6932
cbb09e6a 6933@enumerate
8973da3a 6934@item
87f9adc1 6935Post the proposal on @email{gdb@@sourceware.org, the GDB mailing
cbb09e6a
AC
6936list} Creating a bug report to track the task's state, is also highly
6937recommended.
8973da3a 6938@item
cbb09e6a 6939Wait a week or so.
8973da3a 6940@item
87f9adc1 6941Post the proposal on @email{gdb-announce@@sourceware.org, the GDB
cbb09e6a 6942Announcement mailing list}.
8973da3a 6943@item
cbb09e6a 6944Wait a week or so.
8973da3a 6945@item
cbb09e6a
AC
6946Go through and edit all relevant files and lines so that they are
6947prefixed with the word @code{OBSOLETE}.
6948@item
6949Wait until the next GDB version, containing this obsolete code, has been
6950released.
6951@item
6952Remove the obsolete code.
6953@end enumerate
6954
6955@noindent
6956@emph{Maintainer note: While removing old code is regrettable it is
6957hopefully better for @value{GDBN}'s long term development. Firstly it
6958helps the developers by removing code that is either no longer relevant
6959or simply wrong. Secondly since it removes any history associated with
6960the file (effectively clearing the slate) the developer has a much freer
6961hand when it comes to fixing broken files.}
8973da3a 6962
8973da3a 6963
9ae8b82c
AC
6964
6965@section Before the Branch
8973da3a 6966
8642bc8f
AC
6967The most important objective at this stage is to find and fix simple
6968changes that become a pain to track once the branch is created. For
6969instance, configuration problems that stop @value{GDBN} from even
6970building. If you can't get the problem fixed, document it in the
6971@file{gdb/PROBLEMS} file.
8973da3a 6972
9ae8b82c 6973@subheading Prompt for @file{gdb/NEWS}
8973da3a 6974
9ae8b82c
AC
6975People always forget. Send a post reminding them but also if you know
6976something interesting happened add it yourself. The @code{schedule}
6977script will mention this in its e-mail.
8973da3a 6978
9ae8b82c 6979@subheading Review @file{gdb/README}
8973da3a 6980
9ae8b82c
AC
6981Grab one of the nightly snapshots and then walk through the
6982@file{gdb/README} looking for anything that can be improved. The
6983@code{schedule} script will mention this in its e-mail.
8642bc8f
AC
6984
6985@subheading Refresh any imported files.
8973da3a 6986
8642bc8f 6987A number of files are taken from external repositories. They include:
8973da3a 6988
8642bc8f
AC
6989@itemize @bullet
6990@item
6991@file{texinfo/texinfo.tex}
6992@item
9ae8b82c
AC
6993@file{config.guess} et.@: al.@: (see the top-level @file{MAINTAINERS}
6994file)
6995@item
6996@file{etc/standards.texi}, @file{etc/make-stds.texi}
8642bc8f
AC
6997@end itemize
6998
9ae8b82c 6999@subheading Check the ARI
8642bc8f 7000
87f9adc1 7001@uref{http://sourceware.org/gdb/ari,,A.R.I.} is an @code{awk} script
9ae8b82c
AC
7002(Awk Regression Index ;-) that checks for a number of errors and coding
7003conventions. The checks include things like using @code{malloc} instead
7004of @code{xmalloc} and file naming problems. There shouldn't be any
7005regressions.
8642bc8f 7006
9ae8b82c 7007@subsection Review the bug data base
8642bc8f 7008
9ae8b82c 7009Close anything obviously fixed.
8642bc8f 7010
9ae8b82c 7011@subsection Check all cross targets build
8642bc8f 7012
9ae8b82c 7013The targets are listed in @file{gdb/MAINTAINERS}.
8642bc8f 7014
8642bc8f 7015
30107679 7016@section Cut the Branch
8642bc8f 7017
30107679 7018@subheading Create the branch
8642bc8f 7019
474c8240 7020@smallexample
30107679
AC
7021$ u=5.1
7022$ v=5.2
7023$ V=`echo $v | sed 's/\./_/g'`
7024$ D=`date -u +%Y-%m-%d`
7025$ echo $u $V $D
70265.1 5_2 2002-03-03
87f9adc1 7027$ echo cvs -f -d :ext:sourceware.org:/cvs/src rtag \
b247355e 7028-D $D-gmt gdb_$V-$D-branchpoint insight
87f9adc1 7029cvs -f -d :ext:sourceware.org:/cvs/src rtag
b247355e 7030-D 2002-03-03-gmt gdb_5_2-2002-03-03-branchpoint insight
30107679
AC
7031$ ^echo ^^
7032...
87f9adc1 7033$ echo cvs -f -d :ext:sourceware.org:/cvs/src rtag \
b247355e 7034-b -r gdb_$V-$D-branchpoint gdb_$V-branch insight
87f9adc1 7035cvs -f -d :ext:sourceware.org:/cvs/src rtag \
b247355e 7036-b -r gdb_5_2-2002-03-03-branchpoint gdb_5_2-branch insight
30107679
AC
7037$ ^echo ^^
7038...
8642bc8f 7039$
474c8240 7040@end smallexample
8642bc8f
AC
7041
7042@itemize @bullet
7043@item
b247355e 7044By using @kbd{-D YYYY-MM-DD-gmt}, the branch is forced to an exact
30107679
AC
7045date/time.
7046@item
b247355e 7047The trunk is first tagged so that the branch point can easily be found.
30107679 7048@item
b247355e 7049Insight, which includes @value{GDBN}, is tagged at the same time.
8642bc8f 7050@item
b247355e 7051@file{version.in} gets bumped to avoid version number conflicts.
8642bc8f 7052@item
b247355e 7053The reading of @file{.cvsrc} is disabled using @file{-f}.
30107679
AC
7054@end itemize
7055
7056@subheading Update @file{version.in}
7057
7058@smallexample
7059$ u=5.1
7060$ v=5.2
7061$ V=`echo $v | sed 's/\./_/g'`
7062$ echo $u $v$V
70635.1 5_2
7064$ cd /tmp
87f9adc1 7065$ echo cvs -f -d :ext:sourceware.org:/cvs/src co \
30107679 7066-r gdb_$V-branch src/gdb/version.in
87f9adc1 7067cvs -f -d :ext:sourceware.org:/cvs/src co
30107679
AC
7068 -r gdb_5_2-branch src/gdb/version.in
7069$ ^echo ^^
7070U src/gdb/version.in
7071$ cd src/gdb
7072$ echo $u.90-0000-00-00-cvs > version.in
7073$ cat version.in
70745.1.90-0000-00-00-cvs
7075$ cvs -f commit version.in
7076@end smallexample
7077
7078@itemize @bullet
7079@item
7080@file{0000-00-00} is used as a date to pump prime the version.in update
b247355e 7081mechanism.
30107679
AC
7082@item
7083@file{.90} and the previous branch version are used as fairly arbitrary
b247355e 7084initial branch version number.
8642bc8f
AC
7085@end itemize
7086
8642bc8f
AC
7087
7088@subheading Update the web and news pages
7089
30107679
AC
7090Something?
7091
8642bc8f
AC
7092@subheading Tweak cron to track the new branch
7093
30107679
AC
7094The file @file{gdbadmin/cron/crontab} contains gdbadmin's cron table.
7095This file needs to be updated so that:
7096
7097@itemize @bullet
7098@item
b247355e 7099A daily timestamp is added to the file @file{version.in}.
30107679 7100@item
b247355e 7101The new branch is included in the snapshot process.
30107679
AC
7102@end itemize
7103
7104@noindent
7105See the file @file{gdbadmin/cron/README} for how to install the updated
7106cron table.
7107
7108The file @file{gdbadmin/ss/README} should also be reviewed to reflect
7109any changes. That file is copied to both the branch/ and current/
7110snapshot directories.
7111
7112
7113@subheading Update the NEWS and README files
7114
7115The @file{NEWS} file needs to be updated so that on the branch it refers
7116to @emph{changes in the current release} while on the trunk it also
7117refers to @emph{changes since the current release}.
7118
7119The @file{README} file needs to be updated so that it refers to the
7120current release.
7121
7122@subheading Post the branch info
7123
7124Send an announcement to the mailing lists:
7125
7126@itemize @bullet
7127@item
87f9adc1 7128@email{gdb-announce@@sourceware.org, GDB Announcement mailing list}
30107679 7129@item
87f9adc1
PM
7130@email{gdb@@sourceware.org, GDB Discussion mailing list} and
7131@email{gdb-testers@@sourceware.org, GDB Testers mailing list}
16737d73 7132@end itemize
30107679
AC
7133
7134@emph{Pragmatics: The branch creation is sent to the announce list to
7135ensure that people people not subscribed to the higher volume discussion
7136list are alerted.}
7137
7138The announcement should include:
7139
7140@itemize @bullet
7141@item
b247355e 7142The branch tag.
30107679 7143@item
b247355e 7144How to check out the branch using CVS.
30107679 7145@item
b247355e 7146The date/number of weeks until the release.
30107679 7147@item
b247355e 7148The branch commit policy still holds.
16737d73 7149@end itemize
30107679 7150
8642bc8f
AC
7151@section Stabilize the branch
7152
7153Something goes here.
7154
7155@section Create a Release
7156
0816590b
AC
7157The process of creating and then making available a release is broken
7158down into a number of stages. The first part addresses the technical
7159process of creating a releasable tar ball. The later stages address the
7160process of releasing that tar ball.
8973da3a 7161
0816590b
AC
7162When making a release candidate just the first section is needed.
7163
7164@subsection Create a release candidate
7165
7166The objective at this stage is to create a set of tar balls that can be
7167made available as a formal release (or as a less formal release
7168candidate).
7169
7170@subsubheading Freeze the branch
7171
7172Send out an e-mail notifying everyone that the branch is frozen to
87f9adc1 7173@email{gdb-patches@@sourceware.org}.
0816590b
AC
7174
7175@subsubheading Establish a few defaults.
8973da3a 7176
474c8240 7177@smallexample
0816590b
AC
7178$ b=gdb_5_2-branch
7179$ v=5.2
8642bc8f
AC
7180$ t=/sourceware/snapshot-tmp/gdbadmin-tmp
7181$ echo $t/$b/$v
0816590b 7182/sourceware/snapshot-tmp/gdbadmin-tmp/gdb_5_2-branch/5.2
8642bc8f
AC
7183$ mkdir -p $t/$b/$v
7184$ cd $t/$b/$v
7185$ pwd
0816590b 7186/sourceware/snapshot-tmp/gdbadmin-tmp/gdb_5_2-branch/5.2
8973da3a
AC
7187$ which autoconf
7188/home/gdbadmin/bin/autoconf
8642bc8f 7189$
474c8240 7190@end smallexample
8973da3a 7191
0816590b
AC
7192@noindent
7193Notes:
8973da3a 7194
0816590b
AC
7195@itemize @bullet
7196@item
7197Check the @code{autoconf} version carefully. You want to be using the
af542c2e 7198version documented in the toplevel @file{README-maintainer-mode} file.
bc3a0b4d
RW
7199It is very unlikely that the version of @code{autoconf} installed in
7200system directories (e.g., @file{/usr/bin/autoconf}) is correct.
0816590b
AC
7201@end itemize
7202
7203@subsubheading Check out the relevant modules:
8973da3a 7204
474c8240 7205@smallexample
b247355e 7206$ for m in gdb insight
8642bc8f 7207do
8973da3a
AC
7208( mkdir -p $m && cd $m && cvs -q -f -d /cvs/src co -P -r $b $m )
7209done
8642bc8f 7210$
474c8240 7211@end smallexample
8973da3a 7212
0816590b
AC
7213@noindent
7214Note:
8642bc8f 7215
0816590b
AC
7216@itemize @bullet
7217@item
7218The reading of @file{.cvsrc} is disabled (@file{-f}) so that there isn't
7219any confusion between what is written here and what your local
7220@code{cvs} really does.
7221@end itemize
7222
7223@subsubheading Update relevant files.
8973da3a 7224
0816590b
AC
7225@table @file
7226
7227@item gdb/NEWS
8642bc8f
AC
7228
7229Major releases get their comments added as part of the mainline. Minor
7230releases should probably mention any significant bugs that were fixed.
7231
0816590b 7232Don't forget to include the @file{ChangeLog} entry.
8973da3a 7233
474c8240 7234@smallexample
8642bc8f
AC
7235$ emacs gdb/src/gdb/NEWS
7236...
7237c-x 4 a
7238...
7239c-x c-s c-x c-c
7240$ cp gdb/src/gdb/NEWS insight/src/gdb/NEWS
7241$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
474c8240 7242@end smallexample
8973da3a 7243
0816590b
AC
7244@item gdb/README
7245
7246You'll need to update:
8973da3a 7247
0816590b
AC
7248@itemize @bullet
7249@item
b247355e 7250The version.
0816590b 7251@item
b247355e 7252The update date.
0816590b 7253@item
b247355e 7254Who did it.
0816590b 7255@end itemize
8973da3a 7256
474c8240 7257@smallexample
8642bc8f
AC
7258$ emacs gdb/src/gdb/README
7259...
8973da3a 7260c-x 4 a
8642bc8f 7261...
8973da3a 7262c-x c-s c-x c-c
8642bc8f
AC
7263$ cp gdb/src/gdb/README insight/src/gdb/README
7264$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
474c8240 7265@end smallexample
8973da3a 7266
0816590b
AC
7267@emph{Maintainer note: Hopefully the @file{README} file was reviewed
7268before the initial branch was cut so just a simple substitute is needed
7269to get it updated.}
8973da3a 7270
8642bc8f
AC
7271@emph{Maintainer note: Other projects generate @file{README} and
7272@file{INSTALL} from the core documentation. This might be worth
7273pursuing.}
8973da3a 7274
0816590b 7275@item gdb/version.in
8973da3a 7276
474c8240 7277@smallexample
8642bc8f 7278$ echo $v > gdb/src/gdb/version.in
0816590b
AC
7279$ cat gdb/src/gdb/version.in
72805.2
8642bc8f 7281$ emacs gdb/src/gdb/version.in
8973da3a
AC
7282...
7283c-x 4 a
0816590b 7284... Bump to version ...
8973da3a 7285c-x c-s c-x c-c
8642bc8f
AC
7286$ cp gdb/src/gdb/version.in insight/src/gdb/version.in
7287$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
474c8240 7288@end smallexample
8973da3a 7289
0816590b
AC
7290@end table
7291
7292@subsubheading Do the dirty work
7293
7294This is identical to the process used to create the daily snapshot.
8973da3a 7295
4ce8657e
MC
7296@smallexample
7297$ for m in gdb insight
7298do
7299( cd $m/src && gmake -f src-release $m.tar )
7300done
4ce8657e
MC
7301@end smallexample
7302
7303If the top level source directory does not have @file{src-release}
7304(@value{GDBN} version 5.3.1 or earlier), try these commands instead:
7305
474c8240 7306@smallexample
0816590b 7307$ for m in gdb insight
8642bc8f 7308do
0816590b 7309( cd $m/src && gmake -f Makefile.in $m.tar )
8973da3a 7310done
474c8240 7311@end smallexample
8973da3a 7312
0816590b 7313@subsubheading Check the source files
8642bc8f 7314
0816590b 7315You're looking for files that have mysteriously disappeared.
8642bc8f
AC
7316@kbd{distclean} has the habit of deleting files it shouldn't. Watch out
7317for the @file{version.in} update @kbd{cronjob}.
8973da3a 7318
474c8240 7319@smallexample
8642bc8f
AC
7320$ ( cd gdb/src && cvs -f -q -n update )
7321M djunpack.bat
0816590b 7322? gdb-5.1.91.tar
8642bc8f 7323? proto-toplev
0816590b 7324@dots{} lots of generated files @dots{}
8642bc8f
AC
7325M gdb/ChangeLog
7326M gdb/NEWS
7327M gdb/README
7328M gdb/version.in
0816590b 7329@dots{} lots of generated files @dots{}
8642bc8f 7330$
474c8240 7331@end smallexample
8973da3a 7332
0816590b 7333@noindent
8642bc8f
AC
7334@emph{Don't worry about the @file{gdb.info-??} or
7335@file{gdb/p-exp.tab.c}. They were generated (and yes @file{gdb.info-1}
7336was also generated only something strange with CVS means that they
d3e8051b 7337didn't get suppressed). Fixing it would be nice though.}
8973da3a 7338
0816590b 7339@subsubheading Create compressed versions of the release
8973da3a 7340
474c8240 7341@smallexample
0816590b
AC
7342$ cp */src/*.tar .
7343$ cp */src/*.bz2 .
7344$ ls -F
b247355e 7345gdb/ gdb-5.2.tar insight/ insight-5.2.tar
0816590b
AC
7346$ for m in gdb insight
7347do
7348bzip2 -v -9 -c $m-$v.tar > $m-$v.tar.bz2
7349gzip -v -9 -c $m-$v.tar > $m-$v.tar.gz
7350done
7351$
474c8240 7352@end smallexample
8973da3a 7353
0816590b
AC
7354@noindent
7355Note:
7356
7357@itemize @bullet
7358@item
7359A pipe such as @kbd{bunzip2 < xxx.bz2 | gzip -9 > xxx.gz} is not since,
7360in that mode, @code{gzip} does not know the name of the file and, hence,
7361can not include it in the compressed file. This is also why the release
7362process runs @code{tar} and @code{bzip2} as separate passes.
7363@end itemize
7364
7365@subsection Sanity check the tar ball
8973da3a 7366
0816590b 7367Pick a popular machine (Solaris/PPC?) and try the build on that.
8973da3a 7368
0816590b
AC
7369@smallexample
7370$ bunzip2 < gdb-5.2.tar.bz2 | tar xpf -
7371$ cd gdb-5.2
7372$ ./configure
7373$ make
7374@dots{}
7375$ ./gdb/gdb ./gdb/gdb
7376GNU gdb 5.2
7377@dots{}
7378(gdb) b main
7379Breakpoint 1 at 0x80732bc: file main.c, line 734.
7380(gdb) run
7381Starting program: /tmp/gdb-5.2/gdb/gdb
7382
7383Breakpoint 1, main (argc=1, argv=0xbffff8b4) at main.c:734
7384734 catch_errors (captured_main, &args, "", RETURN_MASK_ALL);
7385(gdb) print args
7386$1 = @{argc = 136426532, argv = 0x821b7f0@}
7387(gdb)
7388@end smallexample
8973da3a 7389
0816590b 7390@subsection Make a release candidate available
8973da3a 7391
0816590b 7392If this is a release candidate then the only remaining steps are:
8642bc8f 7393
0816590b
AC
7394@enumerate
7395@item
7396Commit @file{version.in} and @file{ChangeLog}
7397@item
7398Tweak @file{version.in} (and @file{ChangeLog} to read
7399@var{L}.@var{M}.@var{N}-0000-00-00-cvs so that the version update
7400process can restart.
7401@item
7402Make the release candidate available in
87f9adc1 7403@uref{ftp://sourceware.org/pub/gdb/snapshots/branch}
0816590b 7404@item
87f9adc1
PM
7405Notify the relevant mailing lists ( @email{gdb@@sourceware.org} and
7406@email{gdb-testers@@sourceware.org} that the candidate is available.
0816590b 7407@end enumerate
8642bc8f 7408
0816590b 7409@subsection Make a formal release available
8642bc8f 7410
0816590b 7411(And you thought all that was required was to post an e-mail.)
8642bc8f 7412
0816590b 7413@subsubheading Install on sware
8642bc8f 7414
0816590b 7415Copy the new files to both the release and the old release directory:
8642bc8f 7416
474c8240 7417@smallexample
0816590b 7418$ cp *.bz2 *.gz ~ftp/pub/gdb/old-releases/
8642bc8f 7419$ cp *.bz2 *.gz ~ftp/pub/gdb/releases
474c8240 7420@end smallexample
8642bc8f 7421
0816590b
AC
7422@noindent
7423Clean up the releases directory so that only the most recent releases
587afa38 7424are available (e.g.@: keep 5.2 and 5.2.1 but remove 5.1):
0816590b
AC
7425
7426@smallexample
7427$ cd ~ftp/pub/gdb/releases
7428$ rm @dots{}
7429@end smallexample
7430
7431@noindent
7432Update the file @file{README} and @file{.message} in the releases
7433directory:
7434
7435@smallexample
7436$ vi README
7437@dots{}
7438$ rm -f .message
7439$ ln README .message
7440@end smallexample
8642bc8f 7441
0816590b 7442@subsubheading Update the web pages.
8973da3a 7443
0816590b
AC
7444@table @file
7445
7446@item htdocs/download/ANNOUNCEMENT
7447This file, which is posted as the official announcement, includes:
8973da3a
AC
7448@itemize @bullet
7449@item
b247355e 7450General announcement.
8642bc8f 7451@item
0816590b
AC
7452News. If making an @var{M}.@var{N}.1 release, retain the news from
7453earlier @var{M}.@var{N} release.
8973da3a 7454@item
b247355e 7455Errata.
0816590b
AC
7456@end itemize
7457
7458@item htdocs/index.html
7459@itemx htdocs/news/index.html
7460@itemx htdocs/download/index.html
7461These files include:
7462@itemize @bullet
8642bc8f 7463@item
b247355e 7464Announcement of the most recent release.
8642bc8f 7465@item
b247355e 7466News entry (remember to update both the top level and the news directory).
8973da3a 7467@end itemize
0816590b 7468These pages also need to be regenerate using @code{index.sh}.
8973da3a 7469
0816590b 7470@item download/onlinedocs/
8642bc8f
AC
7471You need to find the magic command that is used to generate the online
7472docs from the @file{.tar.bz2}. The best way is to look in the output
0816590b 7473from one of the nightly @code{cron} jobs and then just edit accordingly.
8642bc8f
AC
7474Something like:
7475
474c8240 7476@smallexample
8642bc8f 7477$ ~/ss/update-web-docs \
0816590b 7478 ~ftp/pub/gdb/releases/gdb-5.2.tar.bz2 \
8642bc8f 7479 $PWD/www \
0816590b 7480 /www/sourceware/htdocs/gdb/download/onlinedocs \
8642bc8f 7481 gdb
474c8240 7482@end smallexample
8642bc8f 7483
0816590b
AC
7484@item download/ari/
7485Just like the online documentation. Something like:
8642bc8f 7486
0816590b
AC
7487@smallexample
7488$ /bin/sh ~/ss/update-web-ari \
7489 ~ftp/pub/gdb/releases/gdb-5.2.tar.bz2 \
7490 $PWD/www \
7491 /www/sourceware/htdocs/gdb/download/ari \
7492 gdb
7493@end smallexample
7494
7495@end table
7496
7497@subsubheading Shadow the pages onto gnu
7498
7499Something goes here.
7500
7501
7502@subsubheading Install the @value{GDBN} tar ball on GNU
7503
7504At the time of writing, the GNU machine was @kbd{gnudist.gnu.org} in
7505@file{~ftp/gnu/gdb}.
7506
7507@subsubheading Make the @file{ANNOUNCEMENT}
7508
7509Post the @file{ANNOUNCEMENT} file you created above to:
8642bc8f
AC
7510
7511@itemize @bullet
7512@item
87f9adc1 7513@email{gdb-announce@@sourceware.org, GDB Announcement mailing list}
8642bc8f 7514@item
0816590b
AC
7515@email{info-gnu@@gnu.org, General GNU Announcement list} (but delay it a
7516day or so to let things get out)
7517@item
7518@email{bug-gdb@@gnu.org, GDB Bug Report mailing list}
8642bc8f
AC
7519@end itemize
7520
0816590b 7521@subsection Cleanup
8642bc8f 7522
0816590b 7523The release is out but you're still not finished.
8642bc8f 7524
0816590b 7525@subsubheading Commit outstanding changes
8642bc8f 7526
0816590b 7527In particular you'll need to commit any changes to:
8642bc8f
AC
7528
7529@itemize @bullet
7530@item
7531@file{gdb/ChangeLog}
7532@item
7533@file{gdb/version.in}
7534@item
7535@file{gdb/NEWS}
7536@item
7537@file{gdb/README}
7538@end itemize
7539
0816590b 7540@subsubheading Tag the release
8642bc8f
AC
7541
7542Something like:
7543
474c8240 7544@smallexample
8642bc8f
AC
7545$ d=`date -u +%Y-%m-%d`
7546$ echo $d
75472002-01-24
7548$ ( cd insight/src/gdb && cvs -f -q update )
0816590b 7549$ ( cd insight/src && cvs -f -q tag gdb_5_2-$d-release )
474c8240 7550@end smallexample
8642bc8f 7551
0816590b 7552Insight is used since that contains more of the release than
b247355e 7553@value{GDBN}.
0816590b
AC
7554
7555@subsubheading Mention the release on the trunk
8642bc8f 7556
0816590b
AC
7557Just put something in the @file{ChangeLog} so that the trunk also
7558indicates when the release was made.
7559
7560@subsubheading Restart @file{gdb/version.in}
8642bc8f
AC
7561
7562If @file{gdb/version.in} does not contain an ISO date such as
7563@kbd{2002-01-24} then the daily @code{cronjob} won't update it. Having
7564committed all the release changes it can be set to
0816590b 7565@file{5.2.0_0000-00-00-cvs} which will restart things (yes the @kbd{_}
8642bc8f
AC
7566is important - it affects the snapshot process).
7567
7568Don't forget the @file{ChangeLog}.
7569
0816590b 7570@subsubheading Merge into trunk
8973da3a 7571
8642bc8f
AC
7572The files committed to the branch may also need changes merged into the
7573trunk.
8973da3a 7574
0816590b
AC
7575@subsubheading Revise the release schedule
7576
87f9adc1 7577Post a revised release schedule to @email{gdb@@sourceware.org, GDB
0816590b
AC
7578Discussion List} with an updated announcement. The schedule can be
7579generated by running:
7580
7581@smallexample
7582$ ~/ss/schedule `date +%s` schedule
7583@end smallexample
7584
7585@noindent
7586The first parameter is approximate date/time in seconds (from the epoch)
7587of the most recent release.
7588
7589Also update the schedule @code{cronjob}.
7590
8642bc8f 7591@section Post release
8973da3a 7592
8642bc8f 7593Remove any @code{OBSOLETE} code.
8973da3a 7594
085dd6e6
JM
7595@node Testsuite
7596
7597@chapter Testsuite
56caf160 7598@cindex test suite
085dd6e6 7599
56caf160
EZ
7600The testsuite is an important component of the @value{GDBN} package.
7601While it is always worthwhile to encourage user testing, in practice
7602this is rarely sufficient; users typically use only a small subset of
7603the available commands, and it has proven all too common for a change
7604to cause a significant regression that went unnoticed for some time.
085dd6e6 7605
b247355e
NR
7606The @value{GDBN} testsuite uses the DejaGNU testing framework. The
7607tests themselves are calls to various @code{Tcl} procs; the framework
7608runs all the procs and summarizes the passes and fails.
085dd6e6
JM
7609
7610@section Using the Testsuite
7611
56caf160 7612@cindex running the test suite
25822942 7613To run the testsuite, simply go to the @value{GDBN} object directory (or to the
085dd6e6
JM
7614testsuite's objdir) and type @code{make check}. This just sets up some
7615environment variables and invokes DejaGNU's @code{runtest} script. While
7616the testsuite is running, you'll get mentions of which test file is in use,
7617and a mention of any unexpected passes or fails. When the testsuite is
7618finished, you'll get a summary that looks like this:
56caf160 7619
474c8240 7620@smallexample
085dd6e6
JM
7621 === gdb Summary ===
7622
7623# of expected passes 6016
7624# of unexpected failures 58
7625# of unexpected successes 5
7626# of expected failures 183
7627# of unresolved testcases 3
7628# of untested testcases 5
474c8240 7629@end smallexample
56caf160 7630
a9f158ec
JB
7631To run a specific test script, type:
7632@example
7633make check RUNTESTFLAGS='@var{tests}'
7634@end example
7635where @var{tests} is a list of test script file names, separated by
7636spaces.
7637
f5a33284
TT
7638If you use GNU make, you can use its @option{-j} option to run the
7639testsuite in parallel. This can greatly reduce the amount of time it
7640takes for the testsuite to run. In this case, if you set
7641@code{RUNTESTFLAGS} then, by default, the tests will be run serially
7642even under @option{-j}. You can override this and force a parallel run
7643by setting the @code{make} variable @code{FORCE_PARALLEL} to any
7644non-empty value. Note that the parallel @kbd{make check} assumes
7645that you want to run the entire testsuite, so it is not compatible
7646with some dejagnu options, like @option{--directory}.
7647
085dd6e6
JM
7648The ideal test run consists of expected passes only; however, reality
7649conspires to keep us from this ideal. Unexpected failures indicate
56caf160
EZ
7650real problems, whether in @value{GDBN} or in the testsuite. Expected
7651failures are still failures, but ones which have been decided are too
7652hard to deal with at the time; for instance, a test case might work
7653everywhere except on AIX, and there is no prospect of the AIX case
7654being fixed in the near future. Expected failures should not be added
7655lightly, since you may be masking serious bugs in @value{GDBN}.
7656Unexpected successes are expected fails that are passing for some
7657reason, while unresolved and untested cases often indicate some minor
7658catastrophe, such as the compiler being unable to deal with a test
7659program.
7660
7661When making any significant change to @value{GDBN}, you should run the
7662testsuite before and after the change, to confirm that there are no
7663regressions. Note that truly complete testing would require that you
7664run the testsuite with all supported configurations and a variety of
7665compilers; however this is more than really necessary. In many cases
7666testing with a single configuration is sufficient. Other useful
7667options are to test one big-endian (Sparc) and one little-endian (x86)
7668host, a cross config with a builtin simulator (powerpc-eabi,
7669mips-elf), or a 64-bit host (Alpha).
7670
7671If you add new functionality to @value{GDBN}, please consider adding
7672tests for it as well; this way future @value{GDBN} hackers can detect
7673and fix their changes that break the functionality you added.
7674Similarly, if you fix a bug that was not previously reported as a test
7675failure, please add a test case for it. Some cases are extremely
7676difficult to test, such as code that handles host OS failures or bugs
7677in particular versions of compilers, and it's OK not to try to write
7678tests for all of those.
085dd6e6 7679
e7dc800a
MC
7680DejaGNU supports separate build, host, and target machines. However,
7681some @value{GDBN} test scripts do not work if the build machine and
7682the host machine are not the same. In such an environment, these scripts
7683will give a result of ``UNRESOLVED'', like this:
7684
7685@smallexample
7686UNRESOLVED: gdb.base/example.exp: This test script does not work on a remote host.
7687@end smallexample
7688
c5f80513
DE
7689@section Testsuite Parameters
7690
7691Several variables exist to modify the behavior of the testsuite.
7692
7693@itemize @bullet
7694
7695@item @code{TRANSCRIPT}
7696
812f7342
TT
7697Sometimes it is convenient to get a transcript of the commands which
7698the testsuite sends to @value{GDBN}. For example, if @value{GDBN}
7699crashes during testing, a transcript can be used to more easily
7700reconstruct the failure when running @value{GDBN} under @value{GDBN}.
7701
7702You can instruct the @value{GDBN} testsuite to write transcripts by
7703setting the DejaGNU variable @code{TRANSCRIPT} (to any value)
7704before invoking @code{runtest} or @kbd{make check}. The transcripts
7705will be written into DejaGNU's output directory. One transcript will
7706be made for each invocation of @value{GDBN}; they will be named
7707@file{transcript.@var{n}}, where @var{n} is an integer. The first
7708line of the transcript file will show how @value{GDBN} was invoked;
7709each subsequent line is a command sent as input to @value{GDBN}.
7710
7711@smallexample
7712make check RUNTESTFLAGS=TRANSCRIPT=y
7713@end smallexample
7714
7715Note that the transcript is not always complete. In particular, tests
7716of completion can yield partial command lines.
7717
c5f80513
DE
7718@item @code{GDB}
7719
7720Sometimes one wishes to test a different @value{GDBN} than the one in the build
7721directory. For example, one may wish to run the testsuite on
7722@file{/usr/bin/gdb}.
7723
7724@smallexample
7725make check RUNTESTFLAGS=GDB=/usr/bin/gdb
7726@end smallexample
7727
7728@item @code{GDBSERVER}
7729
7730When testing a different @value{GDBN}, it is often useful to also test a
7731different gdbserver.
7732
7733@smallexample
7734make check RUNTESTFLAGS="GDB=/usr/bin/gdb GDBSERVER=/usr/bin/gdbserver"
7735@end smallexample
7736
1be00882
DE
7737@item @code{INTERNAL_GDBFLAGS}
7738
7739When running the testsuite normally one doesn't want whatever is in
7740@file{~/.gdbinit} to interfere with the tests, therefore the test harness
7741passes @option{-nx} to @value{GDBN}. One also doesn't want any windowed
217bff3e 7742version of @value{GDBN}, e.g., @samp{gdb -tui}, to run.
1be00882
DE
7743This is achieved via @code{INTERNAL_GDBFLAGS}.
7744
7745@smallexample
7746set INTERNAL_GDBFLAGS "-nw -nx"
7747@end smallexample
7748
7749This is all well and good, except when testing an installed @value{GDBN}
7750that has been configured with @option{--with-system-gdbinit}. Here one
7751does not want @file{~/.gdbinit} loaded but one may want the system
7752@file{.gdbinit} file loaded. This can be achieved by pointing @code{$HOME}
7753at a directory without a @file{.gdbinit} and by overriding
7754@code{INTERNAL_GDBFLAGS} and removing @option{-nx}.
7755
7756@smallexample
7757cd testsuite
7758HOME=`pwd` runtest \
7759 GDB=/usr/bin/gdb \
7760 GDBSERVER=/usr/bin/gdbserver \
7761 INTERNAL_GDBFLAGS=-nw
7762@end smallexample
7763
c5f80513
DE
7764@end itemize
7765
7766There are two ways to run the testsuite and pass additional parameters
7767to DejaGnu. The first is with @kbd{make check} and specifying the
7768makefile variable @samp{RUNTESTFLAGS}.
7769
7770@smallexample
7771make check RUNTESTFLAGS=TRANSCRIPT=y
7772@end smallexample
7773
7774The second is to cd to the @file{testsuite} directory and invoke the DejaGnu
7775@command{runtest} command directly.
7776
7777@smallexample
7778cd testsuite
7779make site.exp
7780runtest TRANSCRIPT=y
7781@end smallexample
7782
c09529e5
JB
7783@section Testsuite Configuration
7784@cindex Testsuite Configuration
7785
7786It is possible to adjust the behavior of the testsuite by defining
7787the global variables listed below, either in a @file{site.exp} file,
7788or in a board file.
7789
7790@itemize @bullet
7791
7792@item @code{gdb_test_timeout}
7793
7794Defining this variable changes the default timeout duration used during
7795communication with @value{GDBN}. More specifically, the global variable
7796used during testing is @code{timeout}, but this variable gets reset to
7797@code{gdb_test_timeout} at the beginning of each testcase, making sure
7798that any local change to @code{timeout} in a testcase does not affect
7799subsequent testcases.
7800
7801This global variable comes in handy when the debugger is slower than
7802normal due to the testing environment, triggering unexpected @code{TIMEOUT}
7803test failures. Examples include when testing on a remote machine, or
7804against a system where communications are slow.
7805
7806If not specifically defined, this variable gets automatically defined
7807to the same value as @code{timeout} during the testsuite initialization.
7808The default value of the timeout is defined in the file
7809@file{gdb/testsuite/config/unix.exp} that is part of the @value{GDBN}
7810test suite@footnote{If you are using a board file, it could override
7811the test-suite default; search the board file for "timeout".}.
7812
7813@end itemize
7814
085dd6e6
JM
7815@section Testsuite Organization
7816
56caf160 7817@cindex test suite organization
085dd6e6
JM
7818The testsuite is entirely contained in @file{gdb/testsuite}. While the
7819testsuite includes some makefiles and configury, these are very minimal,
7820and used for little besides cleaning up, since the tests themselves
25822942 7821handle the compilation of the programs that @value{GDBN} will run. The file
085dd6e6 7822@file{testsuite/lib/gdb.exp} contains common utility procs useful for
25822942 7823all @value{GDBN} tests, while the directory @file{testsuite/config} contains
085dd6e6
JM
7824configuration-specific files, typically used for special-purpose
7825definitions of procs like @code{gdb_load} and @code{gdb_start}.
7826
7827The tests themselves are to be found in @file{testsuite/gdb.*} and
7828subdirectories of those. The names of the test files must always end
7829with @file{.exp}. DejaGNU collects the test files by wildcarding
7830in the test directories, so both subdirectories and individual files
7831get chosen and run in alphabetical order.
7832
7833The following table lists the main types of subdirectories and what they
7834are for. Since DejaGNU finds test files no matter where they are
7835located, and since each test file sets up its own compilation and
7836execution environment, this organization is simply for convenience and
7837intelligibility.
7838
56caf160 7839@table @file
085dd6e6 7840@item gdb.base
085dd6e6 7841This is the base testsuite. The tests in it should apply to all
25822942 7842configurations of @value{GDBN} (but generic native-only tests may live here).
085dd6e6 7843The test programs should be in the subset of C that is valid K&R,
49efadf5 7844ANSI/ISO, and C@t{++} (@code{#ifdef}s are allowed if necessary, for instance
085dd6e6
JM
7845for prototypes).
7846
7847@item gdb.@var{lang}
56caf160 7848Language-specific tests for any language @var{lang} besides C. Examples are
af6cf26d 7849@file{gdb.cp} and @file{gdb.java}.
085dd6e6
JM
7850
7851@item gdb.@var{platform}
085dd6e6
JM
7852Non-portable tests. The tests are specific to a specific configuration
7853(host or target), such as HP-UX or eCos. Example is @file{gdb.hp}, for
7854HP-UX.
7855
7856@item gdb.@var{compiler}
085dd6e6
JM
7857Tests specific to a particular compiler. As of this writing (June
78581999), there aren't currently any groups of tests in this category that
7859couldn't just as sensibly be made platform-specific, but one could
56caf160
EZ
7860imagine a @file{gdb.gcc}, for tests of @value{GDBN}'s handling of GCC
7861extensions.
085dd6e6
JM
7862
7863@item gdb.@var{subsystem}
25822942 7864Tests that exercise a specific @value{GDBN} subsystem in more depth. For
085dd6e6
JM
7865instance, @file{gdb.disasm} exercises various disassemblers, while
7866@file{gdb.stabs} tests pathways through the stabs symbol reader.
085dd6e6
JM
7867@end table
7868
7869@section Writing Tests
56caf160 7870@cindex writing tests
085dd6e6 7871
25822942 7872In many areas, the @value{GDBN} tests are already quite comprehensive; you
085dd6e6
JM
7873should be able to copy existing tests to handle new cases.
7874
7875You should try to use @code{gdb_test} whenever possible, since it
7876includes cases to handle all the unexpected errors that might happen.
7877However, it doesn't cost anything to add new test procedures; for
7878instance, @file{gdb.base/exprs.exp} defines a @code{test_expr} that
7879calls @code{gdb_test} multiple times.
7880
7881Only use @code{send_gdb} and @code{gdb_expect} when absolutely
8a3dae3e
DJ
7882necessary. Even if @value{GDBN} has several valid responses to
7883a command, you can use @code{gdb_test_multiple}. Like @code{gdb_test},
7884@code{gdb_test_multiple} recognizes internal errors and unexpected
7885prompts.
7886
7887Do not write tests which expect a literal tab character from @value{GDBN}.
7888On some operating systems (e.g.@: OpenBSD) the TTY layer expands tabs to
7889spaces, so by the time @value{GDBN}'s output reaches expect the tab is gone.
085dd6e6
JM
7890
7891The source language programs do @emph{not} need to be in a consistent
25822942 7892style. Since @value{GDBN} is used to debug programs written in many different
085dd6e6 7893styles, it's worth having a mix of styles in the testsuite; for
25822942 7894instance, some @value{GDBN} bugs involving the display of source lines would
085dd6e6
JM
7895never manifest themselves if the programs used GNU coding style
7896uniformly.
7897
13ac8d2c
JK
7898Some testcase results need more detailed explanation:
7899
7900@table @code
7901@item KFAIL
7902Known problem of @value{GDBN} itself. You must specify the @value{GDBN} bug
7903report number like in these sample tests:
7904@smallexample
7905kfail "gdb/13392" "continue to marker 2"
7906@end smallexample
7907or
7908@smallexample
7909setup_kfail gdb/13392 "*-*-*"
7910kfail "continue to marker 2"
7911@end smallexample
7912
7913@item XFAIL
7914Known problem of environment. This typically includes @value{NGCC} but it
7915includes also many other system components which cannot be fixed in the
7916@value{GDBN} project. Sample test with sanity check not knowing the specific
7917cause of the problem:
7918@smallexample
7919# On x86_64 it is commonly about 4MB.
7920if @{$stub_size > 25000000@} @{
7921 xfail "stub size $stub_size is too large"
7922 return
7923@}
7924@end smallexample
7925
7926You should provide bug report number for the failing component of the
7927environment, if such bug report is available:
7928@smallexample
7929if @{[test_compiler_info @{gcc-[0-3]-*@}]
7930 || [test_compiler_info @{gcc-4-[0-5]-*@}]@} @{
7931 setup_xfail "gcc/46955" *-*-*
7932@}
7933gdb_test "python print ttype.template_argument(2)" "&C::c"
7934@end smallexample
7935@end table
7936
f02e2b19
YQ
7937@section Board settings
7938In @value{GDBN} testsuite, the tests can be configured or customized in the board
7939file by means of @dfn{Board Settings}. Each setting should be consulted by
7940test cases that depend on the corresponding feature.
7941
7942Here are the supported board settings:
7943
7944@table @code
7945
7946@item gdb,cannot_call_functions
7947The board does not support inferior call, that is, invoking inferior functions
7948in @value{GDBN}.
7949@item gdb,can_reverse
7950The board supports reverse execution.
7951@item gdb,no_hardware_watchpoints
7952The board does not support hardware watchpoints.
7953@item gdb,nofileio
7954@value{GDBN} is unable to intercept target file operations in remote and perform
7955them on the host.
7956@item gdb,noinferiorio
7957The board is unable to provide I/O capability to the inferior.
7958@c @item gdb,noresults
7959@c NEED DOCUMENT.
7960@item gdb,nosignals
7961The board does not support signals.
7962@item gdb,skip_huge_test
7963Skip time-consuming tests on the board with slow connection.
7964@item gdb,skip_float_tests
7965Skip tests related to float points on target board.
7966@item gdb,use_precord
7967The board supports process record.
7968@item gdb_server_prog
7969The location of GDBserver. If GDBserver somewhere other than its default
7970location is used in test, specify the location of GDBserver in this variable.
7971The location is a file name of GDBserver that can be either absolute or
7972relative to testsuite subdirectory in build directory.
7973@item in_proc_agent
7974The location of in-process agent. If in-process agent other than its default
7975location is used in test, specify the location of in-process agent in
7976this variable. The location is a file name of in-process agent that can be
7977either absolute or relative to testsuite subdirectory in build directory.
7978@item noargs
7979@value{GDBN} does not support argument passing for inferior.
7980@item no_long_long
7981The board does not support type @code{long long}.
7982@c @item use_cygmon
7983@c NEED DOCUMENT.
7984@item use_gdb_stub
7985The tests are running with gdb stub.
7986@end table
7987
c906108c
SS
7988@node Hints
7989
7990@chapter Hints
7991
7992Check the @file{README} file, it often has useful information that does not
7993appear anywhere else in the directory.
7994
7995@menu
25822942 7996* Getting Started:: Getting started working on @value{GDBN}
33e16fad 7997* Debugging GDB:: Debugging @value{GDBN} with itself
c906108c
SS
7998@end menu
7999
629d6a47 8000@node Getting Started
c906108c
SS
8001
8002@section Getting Started
8003
25822942 8004@value{GDBN} is a large and complicated program, and if you first starting to
c906108c
SS
8005work on it, it can be hard to know where to start. Fortunately, if you
8006know how to go about it, there are ways to figure out what is going on.
8007
25822942
DB
8008This manual, the @value{GDBN} Internals manual, has information which applies
8009generally to many parts of @value{GDBN}.
c906108c
SS
8010
8011Information about particular functions or data structures are located in
8012comments with those functions or data structures. If you run across a
8013function or a global variable which does not have a comment correctly
25822942 8014explaining what is does, this can be thought of as a bug in @value{GDBN}; feel
c906108c
SS
8015free to submit a bug report, with a suggested comment if you can figure
8016out what the comment should say. If you find a comment which is
8017actually wrong, be especially sure to report that.
8018
8019Comments explaining the function of macros defined in host, target, or
8020native dependent files can be in several places. Sometimes they are
8021repeated every place the macro is defined. Sometimes they are where the
8022macro is used. Sometimes there is a header file which supplies a
8023default definition of the macro, and the comment is there. This manual
8024also documents all the available macros.
8025@c (@pxref{Host Conditionals}, @pxref{Target
8026@c Conditionals}, @pxref{Native Conditionals}, and @pxref{Obsolete
8027@c Conditionals})
8028
56caf160
EZ
8029Start with the header files. Once you have some idea of how
8030@value{GDBN}'s internal symbol tables are stored (see @file{symtab.h},
8031@file{gdbtypes.h}), you will find it much easier to understand the
8032code which uses and creates those symbol tables.
c906108c
SS
8033
8034You may wish to process the information you are getting somehow, to
8035enhance your understanding of it. Summarize it, translate it to another
25822942 8036language, add some (perhaps trivial or non-useful) feature to @value{GDBN}, use
c906108c
SS
8037the code to predict what a test case would do and write the test case
8038and verify your prediction, etc. If you are reading code and your eyes
8039are starting to glaze over, this is a sign you need to use a more active
8040approach.
8041
25822942 8042Once you have a part of @value{GDBN} to start with, you can find more
c906108c
SS
8043specifically the part you are looking for by stepping through each
8044function with the @code{next} command. Do not use @code{step} or you
8045will quickly get distracted; when the function you are stepping through
8046calls another function try only to get a big-picture understanding
8047(perhaps using the comment at the beginning of the function being
8048called) of what it does. This way you can identify which of the
8049functions being called by the function you are stepping through is the
8050one which you are interested in. You may need to examine the data
8051structures generated at each stage, with reference to the comments in
8052the header files explaining what the data structures are supposed to
8053look like.
8054
8055Of course, this same technique can be used if you are just reading the
8056code, rather than actually stepping through it. The same general
8057principle applies---when the code you are looking at calls something
8058else, just try to understand generally what the code being called does,
8059rather than worrying about all its details.
8060
56caf160
EZ
8061@cindex command implementation
8062A good place to start when tracking down some particular area is with
8063a command which invokes that feature. Suppose you want to know how
8064single-stepping works. As a @value{GDBN} user, you know that the
8065@code{step} command invokes single-stepping. The command is invoked
8066via command tables (see @file{command.h}); by convention the function
8067which actually performs the command is formed by taking the name of
8068the command and adding @samp{_command}, or in the case of an
8069@code{info} subcommand, @samp{_info}. For example, the @code{step}
8070command invokes the @code{step_command} function and the @code{info
8071display} command invokes @code{display_info}. When this convention is
8072not followed, you might have to use @code{grep} or @kbd{M-x
8073tags-search} in emacs, or run @value{GDBN} on itself and set a
8074breakpoint in @code{execute_command}.
8075
8076@cindex @code{bug-gdb} mailing list
c906108c
SS
8077If all of the above fail, it may be appropriate to ask for information
8078on @code{bug-gdb}. But @emph{never} post a generic question like ``I was
8079wondering if anyone could give me some tips about understanding
25822942 8080@value{GDBN}''---if we had some magic secret we would put it in this manual.
c906108c
SS
8081Suggestions for improving the manual are always welcome, of course.
8082
629d6a47 8083@node Debugging GDB
c906108c 8084
25822942 8085@section Debugging @value{GDBN} with itself
56caf160 8086@cindex debugging @value{GDBN}
c906108c 8087
25822942 8088If @value{GDBN} is limping on your machine, this is the preferred way to get it
c906108c
SS
8089fully functional. Be warned that in some ancient Unix systems, like
8090Ultrix 4.2, a program can't be running in one process while it is being
56caf160 8091debugged in another. Rather than typing the command @kbd{@w{./gdb
c906108c 8092./gdb}}, which works on Suns and such, you can copy @file{gdb} to
56caf160 8093@file{gdb2} and then type @kbd{@w{./gdb ./gdb2}}.
c906108c 8094
dc1039df
JK
8095When you run @value{GDBN} in the @value{GDBN} source directory, it will read
8096@file{gdb-gdb.gdb} file (plus possibly @file{gdb-gdb.py} file) that sets up
8097some simple things to make debugging gdb easier. The @code{info} command, when
8098executed without a subcommand in a @value{GDBN} being debugged by gdb, will pop
8099you back up to the top level gdb. See @file{gdb-gdb.gdb} for details.
c906108c
SS
8100
8101If you use emacs, you will probably want to do a @code{make TAGS} after
8102you configure your distribution; this will put the machine dependent
8103routines for your local machine where they will be accessed first by
8104@kbd{M-.}
8105
25822942 8106Also, make sure that you've either compiled @value{GDBN} with your local cc, or
c906108c
SS
8107have run @code{fixincludes} if you are compiling with gcc.
8108
8109@section Submitting Patches
8110
56caf160 8111@cindex submitting patches
c906108c 8112Thanks for thinking of offering your changes back to the community of
25822942 8113@value{GDBN} users. In general we like to get well designed enhancements.
c906108c
SS
8114Thanks also for checking in advance about the best way to transfer the
8115changes.
8116
25822942
DB
8117The @value{GDBN} maintainers will only install ``cleanly designed'' patches.
8118This manual summarizes what we believe to be clean design for @value{GDBN}.
c906108c
SS
8119
8120If the maintainers don't have time to put the patch in when it arrives,
8121or if there is any question about a patch, it goes into a large queue
8122with everyone else's patches and bug reports.
8123
56caf160 8124@cindex legal papers for code contributions
c906108c
SS
8125The legal issue is that to incorporate substantial changes requires a
8126copyright assignment from you and/or your employer, granting ownership
8127of the changes to the Free Software Foundation. You can get the
9e0b60a8
JM
8128standard documents for doing this by sending mail to @code{gnu@@gnu.org}
8129and asking for it. We recommend that people write in "All programs
8130owned by the Free Software Foundation" as "NAME OF PROGRAM", so that
56caf160
EZ
8131changes in many programs (not just @value{GDBN}, but GAS, Emacs, GCC,
8132etc) can be
9e0b60a8 8133contributed with only one piece of legalese pushed through the
be9c6c35 8134bureaucracy and filed with the FSF. We can't start merging changes until
9e0b60a8
JM
8135this paperwork is received by the FSF (their rules, which we follow
8136since we maintain it for them).
c906108c
SS
8137
8138Technically, the easiest way to receive changes is to receive each
56caf160
EZ
8139feature as a small context diff or unidiff, suitable for @code{patch}.
8140Each message sent to me should include the changes to C code and
8141header files for a single feature, plus @file{ChangeLog} entries for
8142each directory where files were modified, and diffs for any changes
8143needed to the manuals (@file{gdb/doc/gdb.texinfo} or
8144@file{gdb/doc/gdbint.texinfo}). If there are a lot of changes for a
8145single feature, they can be split down into multiple messages.
9e0b60a8
JM
8146
8147In this way, if we read and like the feature, we can add it to the
c906108c 8148sources with a single patch command, do some testing, and check it in.
56caf160
EZ
8149If you leave out the @file{ChangeLog}, we have to write one. If you leave
8150out the doc, we have to puzzle out what needs documenting. Etc., etc.
c906108c 8151
9e0b60a8
JM
8152The reason to send each change in a separate message is that we will not
8153install some of the changes. They'll be returned to you with questions
8154or comments. If we're doing our job correctly, the message back to you
c906108c 8155will say what you have to fix in order to make the change acceptable.
9e0b60a8
JM
8156The reason to have separate messages for separate features is so that
8157the acceptable changes can be installed while one or more changes are
8158being reworked. If multiple features are sent in a single message, we
8159tend to not put in the effort to sort out the acceptable changes from
8160the unacceptable, so none of the features get installed until all are
8161acceptable.
8162
8163If this sounds painful or authoritarian, well, it is. But we get a lot
8164of bug reports and a lot of patches, and many of them don't get
8165installed because we don't have the time to finish the job that the bug
c906108c
SS
8166reporter or the contributor could have done. Patches that arrive
8167complete, working, and well designed, tend to get installed on the day
9e0b60a8
JM
8168they arrive. The others go into a queue and get installed as time
8169permits, which, since the maintainers have many demands to meet, may not
8170be for quite some time.
c906108c 8171
56caf160 8172Please send patches directly to
87f9adc1 8173@email{gdb-patches@@sourceware.org, the @value{GDBN} maintainers}.
c906108c 8174
36af4ef6
MD
8175@section Build Script
8176
8177@cindex build script
8178
8179The script @file{gdb_buildall.sh} builds @value{GDBN} with flag
8180@option{--enable-targets=all} set. This builds @value{GDBN} with all supported
8181targets activated. This helps testing @value{GDBN} when doing changes that
8182affect more than one architecture and is much faster than using
8183@file{gdb_mbuild.sh}.
8184
8185After building @value{GDBN} the script checks which architectures are
8186supported and then switches the current architecture to each of those to get
8187information about the architecture. The test results are stored in log files
8188in the directory the script was called from.
8189
bcd7e15f 8190@include observer.texi
e4c0cfae
SS
8191
8192@node GNU Free Documentation License
8193@appendix GNU Free Documentation License
aab4e0ec
AC
8194@include fdl.texi
8195
055855a4
EZ
8196@node Concept Index
8197@unnumbered Concept Index
56caf160
EZ
8198
8199@printindex cp
8200
055855a4
EZ
8201@node Function and Variable Index
8202@unnumbered Function and Variable Index
8203
8204@printindex fn
8205
c906108c 8206@bye
This page took 1.39552 seconds and 4 git commands to generate.