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