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