2003-03-03 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / gdb / doc / gdbint.texinfo
CommitLineData
9742079a 1\input texinfo @c -*- texinfo -*-
c906108c 2@setfilename gdbint.info
25822942 3@include gdb-cfg.texi
e9c75b65
EZ
4@dircategory Programming & development tools.
5@direntry
c906108c 6* Gdb-Internals: (gdbint). The GNU debugger's internals.
e9c75b65 7@end direntry
c906108c
SS
8
9@ifinfo
25822942 10This file documents the internals of the GNU debugger @value{GDBN}.
1e698235 11Copyright 1990,1991,1992,1993,1994,1996,1998,1999,2000,2001,2002,2003
e9c75b65 12 Free Software Foundation, Inc.
c906108c
SS
13Contributed by Cygnus Solutions. Written by John Gilmore.
14Second Edition by Stan Shebs.
15
e9c75b65
EZ
16Permission is granted to copy, distribute and/or modify this document
17under the terms of the GNU Free Documentation License, Version 1.1 or
2a6585f0
EZ
18any later version published by the Free Software Foundation; with no
19Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
20and with the Back-Cover Texts as in (a) below.
c906108c 21
e9c75b65
EZ
22(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
23this GNU Manual, like GNU software. Copies published by the Free
24Software Foundation raise funds for GNU development.''
c906108c
SS
25@end ifinfo
26
27@setchapternewpage off
25822942 28@settitle @value{GDBN} Internals
c906108c 29
56caf160
EZ
30@syncodeindex fn cp
31@syncodeindex vr cp
32
c906108c 33@titlepage
25822942 34@title @value{GDBN} Internals
c906108c
SS
35@subtitle{A guide to the internals of the GNU debugger}
36@author John Gilmore
37@author Cygnus Solutions
38@author Second Edition:
39@author Stan Shebs
40@author Cygnus Solutions
41@page
42@tex
43\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
44\xdef\manvers{\$Revision$} % For use in headers, footers too
45{\parskip=0pt
46\hfill Cygnus Solutions\par
47\hfill \manvers\par
48\hfill \TeX{}info \texinfoversion\par
49}
50@end tex
51
52@vskip 0pt plus 1filll
1e698235
DJ
53Copyright @copyright{} 1990,1991,1992,1993,1994,1996,1998,1999,2000,2001,
54 2002, 2003 Free Software Foundation, Inc.
c906108c 55
e9c75b65
EZ
56Permission is granted to copy, distribute and/or modify this document
57under the terms of the GNU Free Documentation License, Version 1.1 or
2a6585f0
EZ
58any later version published by the Free Software Foundation; with no
59Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
60and with the Back-Cover Texts as in (a) below.
c906108c 61
e9c75b65
EZ
62(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
63this GNU Manual, like GNU software. Copies published by the Free
64Software Foundation raise funds for GNU development.''
c906108c
SS
65@end titlepage
66
449f3b6c 67@contents
449f3b6c 68
c906108c
SS
69@node Top
70@c Perhaps this should be the title of the document (but only for info,
71@c not for TeX). Existing GNU manuals seem inconsistent on this point.
72@top Scope of this Document
73
25822942
DB
74This document documents the internals of the GNU debugger, @value{GDBN}. It
75includes description of @value{GDBN}'s key algorithms and operations, as well
76as the mechanisms that adapt @value{GDBN} to specific hosts and targets.
c906108c
SS
77
78@menu
79* Requirements::
80* Overall Structure::
81* Algorithms::
82* User Interface::
89437448 83* libgdb::
c906108c
SS
84* Symbol Handling::
85* Language Support::
86* Host Definition::
87* Target Architecture Definition::
88* Target Vector Definition::
89* Native Debugging::
90* Support Libraries::
91* Coding::
92* Porting GDB::
8973da3a 93* Releasing GDB::
085dd6e6 94* Testsuite::
c906108c 95* Hints::
aab4e0ec
AC
96
97* GNU Free Documentation License:: The license for this documentation
56caf160 98* Index::
c906108c
SS
99@end menu
100
101@node Requirements
102
103@chapter Requirements
56caf160 104@cindex requirements for @value{GDBN}
c906108c
SS
105
106Before diving into the internals, you should understand the formal
56caf160
EZ
107requirements and other expectations for @value{GDBN}. Although some
108of these may seem obvious, there have been proposals for @value{GDBN}
109that have run counter to these requirements.
c906108c 110
56caf160
EZ
111First of all, @value{GDBN} is a debugger. It's not designed to be a
112front panel for embedded systems. It's not a text editor. It's not a
113shell. It's not a programming environment.
c906108c 114
56caf160
EZ
115@value{GDBN} is an interactive tool. Although a batch mode is
116available, @value{GDBN}'s primary role is to interact with a human
117programmer.
c906108c 118
56caf160
EZ
119@value{GDBN} should be responsive to the user. A programmer hot on
120the trail of a nasty bug, and operating under a looming deadline, is
121going to be very impatient of everything, including the response time
122to debugger commands.
c906108c 123
56caf160
EZ
124@value{GDBN} should be relatively permissive, such as for expressions.
125While the compiler should be picky (or have the option to be made
be9c6c35 126picky), since source code lives for a long time usually, the
56caf160
EZ
127programmer doing debugging shouldn't be spending time figuring out to
128mollify the debugger.
c906108c 129
56caf160
EZ
130@value{GDBN} will be called upon to deal with really large programs.
131Executable sizes of 50 to 100 megabytes occur regularly, and we've
132heard reports of programs approaching 1 gigabyte in size.
c906108c 133
56caf160
EZ
134@value{GDBN} should be able to run everywhere. No other debugger is
135available for even half as many configurations as @value{GDBN}
136supports.
c906108c
SS
137
138
139@node Overall Structure
140
141@chapter Overall Structure
142
56caf160
EZ
143@value{GDBN} consists of three major subsystems: user interface,
144symbol handling (the @dfn{symbol side}), and target system handling (the
145@dfn{target side}).
c906108c 146
2e685b93 147The user interface consists of several actual interfaces, plus
c906108c
SS
148supporting code.
149
150The symbol side consists of object file readers, debugging info
151interpreters, symbol table management, source language expression
152parsing, type and value printing.
153
154The target side consists of execution control, stack frame analysis, and
155physical target manipulation.
156
157The target side/symbol side division is not formal, and there are a
158number of exceptions. For instance, core file support involves symbolic
159elements (the basic core file reader is in BFD) and target elements (it
160supplies the contents of memory and the values of registers). Instead,
161this division is useful for understanding how the minor subsystems
162should fit together.
163
164@section The Symbol Side
165
56caf160
EZ
166The symbolic side of @value{GDBN} can be thought of as ``everything
167you can do in @value{GDBN} without having a live program running''.
168For instance, you can look at the types of variables, and evaluate
169many kinds of expressions.
c906108c
SS
170
171@section The Target Side
172
56caf160
EZ
173The target side of @value{GDBN} is the ``bits and bytes manipulator''.
174Although it may make reference to symbolic info here and there, most
175of the target side will run with only a stripped executable
176available---or even no executable at all, in remote debugging cases.
c906108c
SS
177
178Operations such as disassembly, stack frame crawls, and register
179display, are able to work with no symbolic info at all. In some cases,
25822942 180such as disassembly, @value{GDBN} will use symbolic info to present addresses
c906108c
SS
181relative to symbols rather than as raw numbers, but it will work either
182way.
183
184@section Configurations
185
56caf160
EZ
186@cindex host
187@cindex target
25822942 188@dfn{Host} refers to attributes of the system where @value{GDBN} runs.
c906108c
SS
189@dfn{Target} refers to the system where the program being debugged
190executes. In most cases they are the same machine, in which case a
191third type of @dfn{Native} attributes come into play.
192
193Defines and include files needed to build on the host are host support.
194Examples are tty support, system defined types, host byte order, host
195float format.
196
197Defines and information needed to handle the target format are target
198dependent. Examples are the stack frame format, instruction set,
199breakpoint instruction, registers, and how to set up and tear down the stack
200to call a function.
201
202Information that is only needed when the host and target are the same,
203is native dependent. One example is Unix child process support; if the
204host and target are not the same, doing a fork to start the target
205process is a bad idea. The various macros needed for finding the
206registers in the @code{upage}, running @code{ptrace}, and such are all
207in the native-dependent files.
208
209Another example of native-dependent code is support for features that
210are really part of the target environment, but which require
211@code{#include} files that are only available on the host system. Core
212file handling and @code{setjmp} handling are two common cases.
213
25822942 214When you want to make @value{GDBN} work ``native'' on a particular machine, you
c906108c
SS
215have to include all three kinds of information.
216
217
218@node Algorithms
219
220@chapter Algorithms
56caf160 221@cindex algorithms
c906108c 222
56caf160
EZ
223@value{GDBN} uses a number of debugging-specific algorithms. They are
224often not very complicated, but get lost in the thicket of special
225cases and real-world issues. This chapter describes the basic
226algorithms and mentions some of the specific target definitions that
227they use.
c906108c
SS
228
229@section Frames
230
56caf160
EZ
231@cindex frame
232@cindex call stack frame
233A frame is a construct that @value{GDBN} uses to keep track of calling
234and called functions.
c906108c 235
56caf160
EZ
236@findex create_new_frame
237@vindex FRAME_FP
c906108c 238@code{FRAME_FP} in the machine description has no meaning to the
56caf160
EZ
239machine-independent part of @value{GDBN}, except that it is used when
240setting up a new frame from scratch, as follows:
c906108c 241
474c8240
AC
242@smallexample
243create_new_frame (read_register (FP_REGNUM), read_pc ()));
244@end smallexample
c906108c 245
56caf160 246@cindex frame pointer register
c906108c
SS
247Other than that, all the meaning imparted to @code{FP_REGNUM} is
248imparted by the machine-dependent code. So, @code{FP_REGNUM} can have
249any value that is convenient for the code that creates new frames.
e9582e71
AC
250(@code{create_new_frame} calls @code{DEPRECATED_INIT_EXTRA_FRAME_INFO}
251if it is defined; that is where you should use the @code{FP_REGNUM}
252value, if your frames are nonstandard.)
c906108c 253
56caf160
EZ
254@cindex frame chain
255Given a @value{GDBN} frame, define @code{FRAME_CHAIN} to determine the
a5afb99f 256address of the calling function's frame. This will be used to create a
e9582e71
AC
257new @value{GDBN} frame struct, and then
258@code{DEPRECATED_INIT_EXTRA_FRAME_INFO} and
a5afb99f 259@code{DEPRECATED_INIT_FRAME_PC} will be called for the new frame.
c906108c
SS
260
261@section Breakpoint Handling
262
56caf160 263@cindex breakpoints
c906108c
SS
264In general, a breakpoint is a user-designated location in the program
265where the user wants to regain control if program execution ever reaches
266that location.
267
268There are two main ways to implement breakpoints; either as ``hardware''
269breakpoints or as ``software'' breakpoints.
270
56caf160
EZ
271@cindex hardware breakpoints
272@cindex program counter
c906108c
SS
273Hardware breakpoints are sometimes available as a builtin debugging
274features with some chips. Typically these work by having dedicated
275register into which the breakpoint address may be stored. If the PC
56caf160 276(shorthand for @dfn{program counter})
c906108c 277ever matches a value in a breakpoint registers, the CPU raises an
56caf160
EZ
278exception and reports it to @value{GDBN}.
279
280Another possibility is when an emulator is in use; many emulators
281include circuitry that watches the address lines coming out from the
282processor, and force it to stop if the address matches a breakpoint's
283address.
284
285A third possibility is that the target already has the ability to do
286breakpoints somehow; for instance, a ROM monitor may do its own
287software breakpoints. So although these are not literally ``hardware
288breakpoints'', from @value{GDBN}'s point of view they work the same;
289@value{GDBN} need not do nothing more than set the breakpoint and wait
290for something to happen.
c906108c
SS
291
292Since they depend on hardware resources, hardware breakpoints may be
56caf160 293limited in number; when the user asks for more, @value{GDBN} will
9742079a 294start trying to set software breakpoints. (On some architectures,
937f164b 295notably the 32-bit x86 platforms, @value{GDBN} cannot always know
9742079a
EZ
296whether there's enough hardware resources to insert all the hardware
297breakpoints and watchpoints. On those platforms, @value{GDBN} prints
298an error message only when the program being debugged is continued.)
56caf160
EZ
299
300@cindex software breakpoints
301Software breakpoints require @value{GDBN} to do somewhat more work.
302The basic theory is that @value{GDBN} will replace a program
303instruction with a trap, illegal divide, or some other instruction
304that will cause an exception, and then when it's encountered,
305@value{GDBN} will take the exception and stop the program. When the
306user says to continue, @value{GDBN} will restore the original
c906108c
SS
307instruction, single-step, re-insert the trap, and continue on.
308
309Since it literally overwrites the program being tested, the program area
be9c6c35 310must be writable, so this technique won't work on programs in ROM. It
c906108c 311can also distort the behavior of programs that examine themselves,
56caf160 312although such a situation would be highly unusual.
c906108c
SS
313
314Also, the software breakpoint instruction should be the smallest size of
315instruction, so it doesn't overwrite an instruction that might be a jump
316target, and cause disaster when the program jumps into the middle of the
317breakpoint instruction. (Strictly speaking, the breakpoint must be no
318larger than the smallest interval between instructions that may be jump
319targets; perhaps there is an architecture where only even-numbered
320instructions may jumped to.) Note that it's possible for an instruction
321set not to have any instructions usable for a software breakpoint,
322although in practice only the ARC has failed to define such an
323instruction.
324
56caf160 325@findex BREAKPOINT
c906108c
SS
326The basic definition of the software breakpoint is the macro
327@code{BREAKPOINT}.
328
329Basic breakpoint object handling is in @file{breakpoint.c}. However,
330much of the interesting breakpoint action is in @file{infrun.c}.
331
332@section Single Stepping
333
334@section Signal Handling
335
336@section Thread Handling
337
338@section Inferior Function Calls
339
340@section Longjmp Support
341
56caf160 342@cindex @code{longjmp} debugging
25822942 343@value{GDBN} has support for figuring out that the target is doing a
c906108c
SS
344@code{longjmp} and for stopping at the target of the jump, if we are
345stepping. This is done with a few specialized internal breakpoints,
56caf160
EZ
346which are visible in the output of the @samp{maint info breakpoint}
347command.
c906108c 348
56caf160 349@findex GET_LONGJMP_TARGET
c906108c
SS
350To make this work, you need to define a macro called
351@code{GET_LONGJMP_TARGET}, which will examine the @code{jmp_buf}
352structure and extract the longjmp target address. Since @code{jmp_buf}
353is target specific, you will need to define it in the appropriate
56caf160 354@file{tm-@var{target}.h} file. Look in @file{tm-sun4os4.h} and
c906108c
SS
355@file{sparc-tdep.c} for examples of how to do this.
356
9742079a
EZ
357@section Watchpoints
358@cindex watchpoints
359
360Watchpoints are a special kind of breakpoints (@pxref{Algorithms,
361breakpoints}) which break when data is accessed rather than when some
362instruction is executed. When you have data which changes without
363your knowing what code does that, watchpoints are the silver bullet to
364hunt down and kill such bugs.
365
366@cindex hardware watchpoints
367@cindex software watchpoints
368Watchpoints can be either hardware-assisted or not; the latter type is
369known as ``software watchpoints.'' @value{GDBN} always uses
370hardware-assisted watchpoints if they are available, and falls back on
371software watchpoints otherwise. Typical situations where @value{GDBN}
372will use software watchpoints are:
373
374@itemize @bullet
375@item
376The watched memory region is too large for the underlying hardware
377watchpoint support. For example, each x86 debug register can watch up
378to 4 bytes of memory, so trying to watch data structures whose size is
379more than 16 bytes will cause @value{GDBN} to use software
380watchpoints.
381
382@item
383The value of the expression to be watched depends on data held in
384registers (as opposed to memory).
385
386@item
387Too many different watchpoints requested. (On some architectures,
388this situation is impossible to detect until the debugged program is
389resumed.) Note that x86 debug registers are used both for hardware
390breakpoints and for watchpoints, so setting too many hardware
391breakpoints might cause watchpoint insertion to fail.
392
393@item
394No hardware-assisted watchpoints provided by the target
395implementation.
396@end itemize
397
398Software watchpoints are very slow, since @value{GDBN} needs to
399single-step the program being debugged and test the value of the
400watched expression(s) after each instruction. The rest of this
401section is mostly irrelevant for software watchpoints.
402
403@value{GDBN} uses several macros and primitives to support hardware
404watchpoints:
405
406@table @code
407@findex TARGET_HAS_HARDWARE_WATCHPOINTS
408@item TARGET_HAS_HARDWARE_WATCHPOINTS
409If defined, the target supports hardware watchpoints.
410
411@findex TARGET_CAN_USE_HARDWARE_WATCHPOINT
412@item TARGET_CAN_USE_HARDWARE_WATCHPOINT (@var{type}, @var{count}, @var{other})
413Return the number of hardware watchpoints of type @var{type} that are
414possible to be set. The value is positive if @var{count} watchpoints
415of this type can be set, zero if setting watchpoints of this type is
416not supported, and negative if @var{count} is more than the maximum
417number of watchpoints of type @var{type} that can be set. @var{other}
418is non-zero if other types of watchpoints are currently enabled (there
419are architectures which cannot set watchpoints of different types at
420the same time).
421
422@findex TARGET_REGION_OK_FOR_HW_WATCHPOINT
423@item TARGET_REGION_OK_FOR_HW_WATCHPOINT (@var{addr}, @var{len})
424Return non-zero if hardware watchpoints can be used to watch a region
425whose address is @var{addr} and whose length in bytes is @var{len}.
426
427@findex TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT
428@item TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT (@var{size})
429Return non-zero if hardware watchpoints can be used to watch a region
430whose size is @var{size}. @value{GDBN} only uses this macro as a
431fall-back, in case @code{TARGET_REGION_OK_FOR_HW_WATCHPOINT} is not
432defined.
433
434@findex TARGET_DISABLE_HW_WATCHPOINTS
435@item TARGET_DISABLE_HW_WATCHPOINTS (@var{pid})
436Disables watchpoints in the process identified by @var{pid}. This is
437used, e.g., on HP-UX which provides operations to disable and enable
438the page-level memory protection that implements hardware watchpoints
439on that platform.
440
441@findex TARGET_ENABLE_HW_WATCHPOINTS
442@item TARGET_ENABLE_HW_WATCHPOINTS (@var{pid})
443Enables watchpoints in the process identified by @var{pid}. This is
444used, e.g., on HP-UX which provides operations to disable and enable
445the page-level memory protection that implements hardware watchpoints
446on that platform.
447
9742079a
EZ
448@findex target_insert_watchpoint
449@findex target_remove_watchpoint
450@item target_insert_watchpoint (@var{addr}, @var{len}, @var{type})
451@itemx target_remove_watchpoint (@var{addr}, @var{len}, @var{type})
452Insert or remove a hardware watchpoint starting at @var{addr}, for
453@var{len} bytes. @var{type} is the watchpoint type, one of the
454possible values of the enumerated data type @code{target_hw_bp_type},
455defined by @file{breakpoint.h} as follows:
456
474c8240 457@smallexample
9742079a
EZ
458 enum target_hw_bp_type
459 @{
460 hw_write = 0, /* Common (write) HW watchpoint */
461 hw_read = 1, /* Read HW watchpoint */
462 hw_access = 2, /* Access (read or write) HW watchpoint */
463 hw_execute = 3 /* Execute HW breakpoint */
464 @};
474c8240 465@end smallexample
9742079a
EZ
466
467@noindent
468These two macros should return 0 for success, non-zero for failure.
469
470@cindex insert or remove hardware breakpoint
471@findex target_remove_hw_breakpoint
472@findex target_insert_hw_breakpoint
473@item target_remove_hw_breakpoint (@var{addr}, @var{shadow})
474@itemx target_insert_hw_breakpoint (@var{addr}, @var{shadow})
475Insert or remove a hardware-assisted breakpoint at address @var{addr}.
476Returns zero for success, non-zero for failure. @var{shadow} is the
477real contents of the byte where the breakpoint has been inserted; it
478is generally not valid when hardware breakpoints are used, but since
479no other code touches these values, the implementations of the above
480two macros can use them for their internal purposes.
481
482@findex target_stopped_data_address
483@item target_stopped_data_address ()
484If the inferior has some watchpoint that triggered, return the address
485associated with that watchpoint. Otherwise, return zero.
486
487@findex DECR_PC_AFTER_HW_BREAK
488@item DECR_PC_AFTER_HW_BREAK
489If defined, @value{GDBN} decrements the program counter by the value
490of @code{DECR_PC_AFTER_HW_BREAK} after a hardware break-point. This
491overrides the value of @code{DECR_PC_AFTER_BREAK} when a breakpoint
492that breaks is a hardware-assisted breakpoint.
493
494@findex HAVE_STEPPABLE_WATCHPOINT
495@item HAVE_STEPPABLE_WATCHPOINT
496If defined to a non-zero value, it is not necessary to disable a
497watchpoint to step over it.
498
499@findex HAVE_NONSTEPPABLE_WATCHPOINT
500@item HAVE_NONSTEPPABLE_WATCHPOINT
501If defined to a non-zero value, @value{GDBN} should disable a
502watchpoint to step the inferior over it.
503
504@findex HAVE_CONTINUABLE_WATCHPOINT
505@item HAVE_CONTINUABLE_WATCHPOINT
506If defined to a non-zero value, it is possible to continue the
507inferior after a watchpoint has been hit.
508
509@findex CANNOT_STEP_HW_WATCHPOINTS
510@item CANNOT_STEP_HW_WATCHPOINTS
511If this is defined to a non-zero value, @value{GDBN} will remove all
512watchpoints before stepping the inferior.
513
514@findex STOPPED_BY_WATCHPOINT
515@item STOPPED_BY_WATCHPOINT (@var{wait_status})
516Return non-zero if stopped by a watchpoint. @var{wait_status} is of
517the type @code{struct target_waitstatus}, defined by @file{target.h}.
518@end table
519
520@subsection x86 Watchpoints
521@cindex x86 debug registers
522@cindex watchpoints, on x86
523
524The 32-bit Intel x86 (a.k.a.@: ia32) processors feature special debug
525registers designed to facilitate debugging. @value{GDBN} provides a
526generic library of functions that x86-based ports can use to implement
527support for watchpoints and hardware-assisted breakpoints. This
528subsection documents the x86 watchpoint facilities in @value{GDBN}.
529
530To use the generic x86 watchpoint support, a port should do the
531following:
532
533@itemize @bullet
534@findex I386_USE_GENERIC_WATCHPOINTS
535@item
536Define the macro @code{I386_USE_GENERIC_WATCHPOINTS} somewhere in the
537target-dependent headers.
538
539@item
540Include the @file{config/i386/nm-i386.h} header file @emph{after}
541defining @code{I386_USE_GENERIC_WATCHPOINTS}.
542
543@item
544Add @file{i386-nat.o} to the value of the Make variable
545@code{NATDEPFILES} (@pxref{Native Debugging, NATDEPFILES}) or
546@code{TDEPFILES} (@pxref{Target Architecture Definition, TDEPFILES}).
547
548@item
549Provide implementations for the @code{I386_DR_LOW_*} macros described
550below. Typically, each macro should call a target-specific function
551which does the real work.
552@end itemize
553
554The x86 watchpoint support works by maintaining mirror images of the
555debug registers. Values are copied between the mirror images and the
556real debug registers via a set of macros which each target needs to
557provide:
558
559@table @code
560@findex I386_DR_LOW_SET_CONTROL
561@item I386_DR_LOW_SET_CONTROL (@var{val})
562Set the Debug Control (DR7) register to the value @var{val}.
563
564@findex I386_DR_LOW_SET_ADDR
565@item I386_DR_LOW_SET_ADDR (@var{idx}, @var{addr})
566Put the address @var{addr} into the debug register number @var{idx}.
567
568@findex I386_DR_LOW_RESET_ADDR
569@item I386_DR_LOW_RESET_ADDR (@var{idx})
570Reset (i.e.@: zero out) the address stored in the debug register
571number @var{idx}.
572
573@findex I386_DR_LOW_GET_STATUS
574@item I386_DR_LOW_GET_STATUS
575Return the value of the Debug Status (DR6) register. This value is
576used immediately after it is returned by
577@code{I386_DR_LOW_GET_STATUS}, so as to support per-thread status
578register values.
579@end table
580
581For each one of the 4 debug registers (whose indices are from 0 to 3)
582that store addresses, a reference count is maintained by @value{GDBN},
583to allow sharing of debug registers by several watchpoints. This
584allows users to define several watchpoints that watch the same
585expression, but with different conditions and/or commands, without
586wasting debug registers which are in short supply. @value{GDBN}
587maintains the reference counts internally, targets don't have to do
588anything to use this feature.
589
590The x86 debug registers can each watch a region that is 1, 2, or 4
591bytes long. The ia32 architecture requires that each watched region
592be appropriately aligned: 2-byte region on 2-byte boundary, 4-byte
593region on 4-byte boundary. However, the x86 watchpoint support in
594@value{GDBN} can watch unaligned regions and regions larger than 4
595bytes (up to 16 bytes) by allocating several debug registers to watch
596a single region. This allocation of several registers per a watched
597region is also done automatically without target code intervention.
598
599The generic x86 watchpoint support provides the following API for the
600@value{GDBN}'s application code:
601
602@table @code
603@findex i386_region_ok_for_watchpoint
604@item i386_region_ok_for_watchpoint (@var{addr}, @var{len})
605The macro @code{TARGET_REGION_OK_FOR_HW_WATCHPOINT} is set to call
606this function. It counts the number of debug registers required to
607watch a given region, and returns a non-zero value if that number is
608less than 4, the number of debug registers available to x86
609processors.
610
611@findex i386_stopped_data_address
612@item i386_stopped_data_address (void)
613The macros @code{STOPPED_BY_WATCHPOINT} and
614@code{target_stopped_data_address} are set to call this function. The
615argument passed to @code{STOPPED_BY_WATCHPOINT} is ignored. This
616function examines the breakpoint condition bits in the DR6 Debug
617Status register, as returned by the @code{I386_DR_LOW_GET_STATUS}
618macro, and returns the address associated with the first bit that is
619set in DR6.
620
621@findex i386_insert_watchpoint
622@findex i386_remove_watchpoint
623@item i386_insert_watchpoint (@var{addr}, @var{len}, @var{type})
624@itemx i386_remove_watchpoint (@var{addr}, @var{len}, @var{type})
625Insert or remove a watchpoint. The macros
626@code{target_insert_watchpoint} and @code{target_remove_watchpoint}
627are set to call these functions. @code{i386_insert_watchpoint} first
628looks for a debug register which is already set to watch the same
629region for the same access types; if found, it just increments the
630reference count of that debug register, thus implementing debug
631register sharing between watchpoints. If no such register is found,
937f164b
FF
632the function looks for a vacant debug register, sets its mirrored
633value to @var{addr}, sets the mirrored value of DR7 Debug Control
9742079a
EZ
634register as appropriate for the @var{len} and @var{type} parameters,
635and then passes the new values of the debug register and DR7 to the
636inferior by calling @code{I386_DR_LOW_SET_ADDR} and
637@code{I386_DR_LOW_SET_CONTROL}. If more than one debug register is
638required to cover the given region, the above process is repeated for
639each debug register.
640
641@code{i386_remove_watchpoint} does the opposite: it resets the address
937f164b
FF
642in the mirrored value of the debug register and its read/write and
643length bits in the mirrored value of DR7, then passes these new
9742079a
EZ
644values to the inferior via @code{I386_DR_LOW_RESET_ADDR} and
645@code{I386_DR_LOW_SET_CONTROL}. If a register is shared by several
646watchpoints, each time a @code{i386_remove_watchpoint} is called, it
647decrements the reference count, and only calls
648@code{I386_DR_LOW_RESET_ADDR} and @code{I386_DR_LOW_SET_CONTROL} when
649the count goes to zero.
650
651@findex i386_insert_hw_breakpoint
652@findex i386_remove_hw_breakpoint
653@item i386_insert_hw_breakpoint (@var{addr}, @var{shadow}
654@itemx i386_remove_hw_breakpoint (@var{addr}, @var{shadow})
655These functions insert and remove hardware-assisted breakpoints. The
656macros @code{target_insert_hw_breakpoint} and
657@code{target_remove_hw_breakpoint} are set to call these functions.
658These functions work like @code{i386_insert_watchpoint} and
659@code{i386_remove_watchpoint}, respectively, except that they set up
660the debug registers to watch instruction execution, and each
661hardware-assisted breakpoint always requires exactly one debug
662register.
663
664@findex i386_stopped_by_hwbp
665@item i386_stopped_by_hwbp (void)
666This function returns non-zero if the inferior has some watchpoint or
667hardware breakpoint that triggered. It works like
668@code{i386_stopped_data_address}, except that it doesn't return the
669address whose watchpoint triggered.
670
671@findex i386_cleanup_dregs
672@item i386_cleanup_dregs (void)
673This function clears all the reference counts, addresses, and control
674bits in the mirror images of the debug registers. It doesn't affect
675the actual debug registers in the inferior process.
676@end table
677
678@noindent
679@strong{Notes:}
680@enumerate 1
681@item
682x86 processors support setting watchpoints on I/O reads or writes.
683However, since no target supports this (as of March 2001), and since
684@code{enum target_hw_bp_type} doesn't even have an enumeration for I/O
685watchpoints, this feature is not yet available to @value{GDBN} running
686on x86.
687
688@item
689x86 processors can enable watchpoints locally, for the current task
690only, or globally, for all the tasks. For each debug register,
691there's a bit in the DR7 Debug Control register that determines
692whether the associated address is watched locally or globally. The
693current implementation of x86 watchpoint support in @value{GDBN}
694always sets watchpoints to be locally enabled, since global
695watchpoints might interfere with the underlying OS and are probably
696unavailable in many platforms.
697@end enumerate
698
c906108c
SS
699@node User Interface
700
701@chapter User Interface
702
25822942 703@value{GDBN} has several user interfaces. Although the command-line interface
c906108c
SS
704is the most common and most familiar, there are others.
705
706@section Command Interpreter
707
56caf160 708@cindex command interpreter
0ee54786 709@cindex CLI
25822942 710The command interpreter in @value{GDBN} is fairly simple. It is designed to
c906108c
SS
711allow for the set of commands to be augmented dynamically, and also
712has a recursive subcommand capability, where the first argument to
713a command may itself direct a lookup on a different command list.
714
56caf160
EZ
715For instance, the @samp{set} command just starts a lookup on the
716@code{setlist} command list, while @samp{set thread} recurses
c906108c
SS
717to the @code{set_thread_cmd_list}.
718
56caf160
EZ
719@findex add_cmd
720@findex add_com
c906108c
SS
721To add commands in general, use @code{add_cmd}. @code{add_com} adds to
722the main command list, and should be used for those commands. The usual
cfeada60 723place to add commands is in the @code{_initialize_@var{xyz}} routines at
9742079a 724the ends of most source files.
cfeada60 725
40dd2248
TT
726@findex add_setshow_cmd
727@findex add_setshow_cmd_full
728To add paired @samp{set} and @samp{show} commands, use
729@code{add_setshow_cmd} or @code{add_setshow_cmd_full}. The former is
730a slightly simpler interface which is useful when you don't need to
731further modify the new command structures, while the latter returns
732the new command structures for manipulation.
733
56caf160
EZ
734@cindex deprecating commands
735@findex deprecate_cmd
cfeada60
FN
736Before removing commands from the command set it is a good idea to
737deprecate them for some time. Use @code{deprecate_cmd} on commands or
738aliases to set the deprecated flag. @code{deprecate_cmd} takes a
739@code{struct cmd_list_element} as it's first argument. You can use the
740return value from @code{add_com} or @code{add_cmd} to deprecate the
741command immediately after it is created.
742
c72e7388 743The first time a command is used the user will be warned and offered a
cfeada60
FN
744replacement (if one exists). Note that the replacement string passed to
745@code{deprecate_cmd} should be the full name of the command, i.e. the
746entire string the user should type at the command line.
c906108c 747
0ee54786
EZ
748@section UI-Independent Output---the @code{ui_out} Functions
749@c This section is based on the documentation written by Fernando
750@c Nasser <fnasser@redhat.com>.
751
752@cindex @code{ui_out} functions
753The @code{ui_out} functions present an abstraction level for the
754@value{GDBN} output code. They hide the specifics of different user
755interfaces supported by @value{GDBN}, and thus free the programmer
756from the need to write several versions of the same code, one each for
757every UI, to produce output.
758
759@subsection Overview and Terminology
760
761In general, execution of each @value{GDBN} command produces some sort
762of output, and can even generate an input request.
763
764Output can be generated for the following purposes:
765
766@itemize @bullet
767@item
768to display a @emph{result} of an operation;
769
770@item
771to convey @emph{info} or produce side-effects of a requested
772operation;
773
774@item
775to provide a @emph{notification} of an asynchronous event (including
776progress indication of a prolonged asynchronous operation);
777
778@item
779to display @emph{error messages} (including warnings);
780
781@item
782to show @emph{debug data};
783
784@item
785to @emph{query} or prompt a user for input (a special case).
786@end itemize
787
788@noindent
789This section mainly concentrates on how to build result output,
790although some of it also applies to other kinds of output.
791
792Generation of output that displays the results of an operation
793involves one or more of the following:
794
795@itemize @bullet
796@item
797output of the actual data
798
799@item
800formatting the output as appropriate for console output, to make it
801easily readable by humans
802
803@item
804machine oriented formatting--a more terse formatting to allow for easy
805parsing by programs which read @value{GDBN}'s output
806
807@item
c72e7388
AC
808annotation, whose purpose is to help legacy GUIs to identify interesting
809parts in the output
0ee54786
EZ
810@end itemize
811
812The @code{ui_out} routines take care of the first three aspects.
c72e7388
AC
813Annotations are provided by separate annotation routines. Note that use
814of annotations for an interface between a GUI and @value{GDBN} is
0ee54786
EZ
815deprecated.
816
c72e7388
AC
817Output can be in the form of a single item, which we call a @dfn{field};
818a @dfn{list} consisting of identical fields; a @dfn{tuple} consisting of
819non-identical fields; or a @dfn{table}, which is a tuple consisting of a
820header and a body. In a BNF-like form:
0ee54786 821
c72e7388
AC
822@table @code
823@item <table> @expansion{}
824@code{<header> <body>}
825@item <header> @expansion{}
826@code{@{ <column> @}}
827@item <column> @expansion{}
828@code{<width> <alignment> <title>}
829@item <body> @expansion{}
830@code{@{<row>@}}
831@end table
0ee54786
EZ
832
833
834@subsection General Conventions
835
c72e7388
AC
836Most @code{ui_out} routines are of type @code{void}, the exceptions are
837@code{ui_out_stream_new} (which returns a pointer to the newly created
838object) and the @code{make_cleanup} routines.
0ee54786 839
c72e7388
AC
840The first parameter is always the @code{ui_out} vector object, a pointer
841to a @code{struct ui_out}.
0ee54786 842
c72e7388
AC
843The @var{format} parameter is like in @code{printf} family of functions.
844When it is present, there must also be a variable list of arguments
845sufficient used to satisfy the @code{%} specifiers in the supplied
0ee54786
EZ
846format.
847
c72e7388
AC
848When a character string argument is not used in a @code{ui_out} function
849call, a @code{NULL} pointer has to be supplied instead.
0ee54786
EZ
850
851
c72e7388 852@subsection Table, Tuple and List Functions
0ee54786
EZ
853
854@cindex list output functions
855@cindex table output functions
c72e7388
AC
856@cindex tuple output functions
857This section introduces @code{ui_out} routines for building lists,
858tuples and tables. The routines to output the actual data items
859(fields) are presented in the next section.
0ee54786 860
c72e7388
AC
861To recap: A @dfn{tuple} is a sequence of @dfn{fields}, each field
862containing information about an object; a @dfn{list} is a sequence of
863fields where each field describes an identical object.
0ee54786 864
c72e7388
AC
865Use the @dfn{table} functions when your output consists of a list of
866rows (tuples) and the console output should include a heading. Use this
867even when you are listing just one object but you still want the header.
0ee54786
EZ
868
869@cindex nesting level in @code{ui_out} functions
c72e7388
AC
870Tables can not be nested. Tuples and lists can be nested up to a
871maximum of five levels.
0ee54786
EZ
872
873The overall structure of the table output code is something like this:
874
474c8240 875@smallexample
0ee54786
EZ
876 ui_out_table_begin
877 ui_out_table_header
c72e7388 878 @dots{}
0ee54786 879 ui_out_table_body
c72e7388 880 ui_out_tuple_begin
0ee54786 881 ui_out_field_*
c72e7388
AC
882 @dots{}
883 ui_out_tuple_end
884 @dots{}
0ee54786 885 ui_out_table_end
474c8240 886@end smallexample
0ee54786 887
c72e7388 888Here is the description of table-, tuple- and list-related @code{ui_out}
0ee54786
EZ
889functions:
890
c72e7388
AC
891@deftypefun void ui_out_table_begin (struct ui_out *@var{uiout}, int @var{nbrofcols}, int @var{nr_rows}, const char *@var{tblid})
892The function @code{ui_out_table_begin} marks the beginning of the output
893of a table. It should always be called before any other @code{ui_out}
894function for a given table. @var{nbrofcols} is the number of columns in
895the table. @var{nr_rows} is the number of rows in the table.
896@var{tblid} is an optional string identifying the table. The string
897pointed to by @var{tblid} is copied by the implementation of
898@code{ui_out_table_begin}, so the application can free the string if it
899was @code{malloc}ed.
0ee54786
EZ
900
901The companion function @code{ui_out_table_end}, described below, marks
902the end of the table's output.
903@end deftypefun
904
c72e7388
AC
905@deftypefun void ui_out_table_header (struct ui_out *@var{uiout}, int @var{width}, enum ui_align @var{alignment}, const char *@var{colhdr})
906@code{ui_out_table_header} provides the header information for a single
907table column. You call this function several times, one each for every
908column of the table, after @code{ui_out_table_begin}, but before
909@code{ui_out_table_body}.
0ee54786
EZ
910
911The value of @var{width} gives the column width in characters. The
912value of @var{alignment} is one of @code{left}, @code{center}, and
913@code{right}, and it specifies how to align the header: left-justify,
914center, or right-justify it. @var{colhdr} points to a string that
915specifies the column header; the implementation copies that string, so
c72e7388
AC
916column header strings in @code{malloc}ed storage can be freed after the
917call.
0ee54786
EZ
918@end deftypefun
919
920@deftypefun void ui_out_table_body (struct ui_out *@var{uiout})
c72e7388 921This function delimits the table header from the table body.
0ee54786
EZ
922@end deftypefun
923
924@deftypefun void ui_out_table_end (struct ui_out *@var{uiout})
c72e7388
AC
925This function signals the end of a table's output. It should be called
926after the table body has been produced by the list and field output
927functions.
0ee54786
EZ
928
929There should be exactly one call to @code{ui_out_table_end} for each
c72e7388
AC
930call to @code{ui_out_table_begin}, otherwise the @code{ui_out} functions
931will signal an internal error.
0ee54786
EZ
932@end deftypefun
933
c72e7388 934The output of the tuples that represent the table rows must follow the
0ee54786 935call to @code{ui_out_table_body} and precede the call to
c72e7388
AC
936@code{ui_out_table_end}. You build a tuple by calling
937@code{ui_out_tuple_begin} and @code{ui_out_tuple_end}, with suitable
0ee54786
EZ
938calls to functions which actually output fields between them.
939
c72e7388
AC
940@deftypefun void ui_out_tuple_begin (struct ui_out *@var{uiout}, const char *@var{id})
941This function marks the beginning of a tuple output. @var{id} points
942to an optional string that identifies the tuple; it is copied by the
943implementation, and so strings in @code{malloc}ed storage can be freed
944after the call.
945@end deftypefun
946
947@deftypefun void ui_out_tuple_end (struct ui_out *@var{uiout})
948This function signals an end of a tuple output. There should be exactly
949one call to @code{ui_out_tuple_end} for each call to
950@code{ui_out_tuple_begin}, otherwise an internal @value{GDBN} error will
951be signaled.
952@end deftypefun
953
954@deftypefun struct cleanup *make_cleanup_ui_out_tuple_begin_end (struct ui_out *@var{uiout}, const char *@var{id})
955This function first opens the tuple and then establishes a cleanup
956(@pxref{Coding, Cleanups}) to close the tuple. It provides a convenient
957and correct implementation of the non-portable@footnote{The function
b9aa90c9 958cast is not portable ISO C.} code sequence:
c72e7388
AC
959@smallexample
960struct cleanup *old_cleanup;
961ui_out_tuple_begin (uiout, "...");
962old_cleanup = make_cleanup ((void(*)(void *)) ui_out_tuple_end,
963 uiout);
964@end smallexample
965@end deftypefun
966
967@deftypefun void ui_out_list_begin (struct ui_out *@var{uiout}, const char *@var{id})
968This function marks the beginning of a list output. @var{id} points to
969an optional string that identifies the list; it is copied by the
970implementation, and so strings in @code{malloc}ed storage can be freed
971after the call.
0ee54786
EZ
972@end deftypefun
973
974@deftypefun void ui_out_list_end (struct ui_out *@var{uiout})
c72e7388
AC
975This function signals an end of a list output. There should be exactly
976one call to @code{ui_out_list_end} for each call to
977@code{ui_out_list_begin}, otherwise an internal @value{GDBN} error will
978be signaled.
979@end deftypefun
980
981@deftypefun struct cleanup *make_cleanup_ui_out_list_begin_end (struct ui_out *@var{uiout}, const char *@var{id})
982Similar to @code{make_cleanup_ui_out_tuple_begin_end}, this function
983opens a list and then establishes cleanup (@pxref{Coding, Cleanups})
984that will close the list.list.
0ee54786
EZ
985@end deftypefun
986
987@subsection Item Output Functions
988
989@cindex item output functions
990@cindex field output functions
991@cindex data output
992The functions described below produce output for the actual data
993items, or fields, which contain information about the object.
994
995Choose the appropriate function accordingly to your particular needs.
996
997@deftypefun void ui_out_field_fmt (struct ui_out *@var{uiout}, char *@var{fldname}, char *@var{format}, ...)
998This is the most general output function. It produces the
999representation of the data in the variable-length argument list
1000according to formatting specifications in @var{format}, a
1001@code{printf}-like format string. The optional argument @var{fldname}
1002supplies the name of the field. The data items themselves are
1003supplied as additional arguments after @var{format}.
1004
1005This generic function should be used only when it is not possible to
1006use one of the specialized versions (see below).
1007@end deftypefun
1008
c72e7388 1009@deftypefun void ui_out_field_int (struct ui_out *@var{uiout}, const char *@var{fldname}, int @var{value})
0ee54786
EZ
1010This function outputs a value of an @code{int} variable. It uses the
1011@code{"%d"} output conversion specification. @var{fldname} specifies
1012the name of the field.
1013@end deftypefun
8d19fbd2
JJ
1014
1015@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})
1016This function outputs a value of an @code{int} variable. It differs from
1017@code{ui_out_field_int} in that the caller specifies the desired @var{width} and @var{alignment} of the output.
1018@var{fldname} specifies
1019the name of the field.
1020@end deftypefun
0ee54786 1021
c72e7388 1022@deftypefun void ui_out_field_core_addr (struct ui_out *@var{uiout}, const char *@var{fldname}, CORE_ADDR @var{address})
0ee54786
EZ
1023This function outputs an address.
1024@end deftypefun
1025
c72e7388 1026@deftypefun void ui_out_field_string (struct ui_out *@var{uiout}, const char *@var{fldname}, const char *@var{string})
0ee54786
EZ
1027This function outputs a string using the @code{"%s"} conversion
1028specification.
1029@end deftypefun
1030
1031Sometimes, there's a need to compose your output piece by piece using
1032functions that operate on a stream, such as @code{value_print} or
1033@code{fprintf_symbol_filtered}. These functions accept an argument of
1034the type @code{struct ui_file *}, a pointer to a @code{ui_file} object
1035used to store the data stream used for the output. When you use one
1036of these functions, you need a way to pass their results stored in a
1037@code{ui_file} object to the @code{ui_out} functions. To this end,
1038you first create a @code{ui_stream} object by calling
1039@code{ui_out_stream_new}, pass the @code{stream} member of that
1040@code{ui_stream} object to @code{value_print} and similar functions,
1041and finally call @code{ui_out_field_stream} to output the field you
1042constructed. When the @code{ui_stream} object is no longer needed,
1043you should destroy it and free its memory by calling
1044@code{ui_out_stream_delete}.
1045
1046@deftypefun struct ui_stream *ui_out_stream_new (struct ui_out *@var{uiout})
1047This function creates a new @code{ui_stream} object which uses the
1048same output methods as the @code{ui_out} object whose pointer is
1049passed in @var{uiout}. It returns a pointer to the newly created
1050@code{ui_stream} object.
1051@end deftypefun
1052
1053@deftypefun void ui_out_stream_delete (struct ui_stream *@var{streambuf})
1054This functions destroys a @code{ui_stream} object specified by
1055@var{streambuf}.
1056@end deftypefun
1057
c72e7388 1058@deftypefun void ui_out_field_stream (struct ui_out *@var{uiout}, const char *@var{fieldname}, struct ui_stream *@var{streambuf})
0ee54786
EZ
1059This function consumes all the data accumulated in
1060@code{streambuf->stream} and outputs it like
1061@code{ui_out_field_string} does. After a call to
1062@code{ui_out_field_stream}, the accumulated data no longer exists, but
1063the stream is still valid and may be used for producing more fields.
1064@end deftypefun
1065
1066@strong{Important:} If there is any chance that your code could bail
1067out before completing output generation and reaching the point where
1068@code{ui_out_stream_delete} is called, it is necessary to set up a
1069cleanup, to avoid leaking memory and other resources. Here's a
1070skeleton code to do that:
1071
1072@smallexample
1073 struct ui_stream *mybuf = ui_out_stream_new (uiout);
1074 struct cleanup *old = make_cleanup (ui_out_stream_delete, mybuf);
1075 ...
1076 do_cleanups (old);
1077@end smallexample
1078
1079If the function already has the old cleanup chain set (for other kinds
1080of cleanups), you just have to add your cleanup to it:
1081
1082@smallexample
1083 mybuf = ui_out_stream_new (uiout);
1084 make_cleanup (ui_out_stream_delete, mybuf);
1085@end smallexample
1086
1087Note that with cleanups in place, you should not call
1088@code{ui_out_stream_delete} directly, or you would attempt to free the
1089same buffer twice.
1090
1091@subsection Utility Output Functions
1092
c72e7388 1093@deftypefun void ui_out_field_skip (struct ui_out *@var{uiout}, const char *@var{fldname})
0ee54786
EZ
1094This function skips a field in a table. Use it if you have to leave
1095an empty field without disrupting the table alignment. The argument
1096@var{fldname} specifies a name for the (missing) filed.
1097@end deftypefun
1098
c72e7388 1099@deftypefun void ui_out_text (struct ui_out *@var{uiout}, const char *@var{string})
0ee54786
EZ
1100This function outputs the text in @var{string} in a way that makes it
1101easy to be read by humans. For example, the console implementation of
1102this method filters the text through a built-in pager, to prevent it
1103from scrolling off the visible portion of the screen.
1104
1105Use this function for printing relatively long chunks of text around
1106the actual field data: the text it produces is not aligned according
1107to the table's format. Use @code{ui_out_field_string} to output a
1108string field, and use @code{ui_out_message}, described below, to
1109output short messages.
1110@end deftypefun
1111
1112@deftypefun void ui_out_spaces (struct ui_out *@var{uiout}, int @var{nspaces})
1113This function outputs @var{nspaces} spaces. It is handy to align the
1114text produced by @code{ui_out_text} with the rest of the table or
1115list.
1116@end deftypefun
1117
c72e7388 1118@deftypefun void ui_out_message (struct ui_out *@var{uiout}, int @var{verbosity}, const char *@var{format}, ...)
0ee54786
EZ
1119This function produces a formatted message, provided that the current
1120verbosity level is at least as large as given by @var{verbosity}. The
1121current verbosity level is specified by the user with the @samp{set
1122verbositylevel} command.@footnote{As of this writing (April 2001),
1123setting verbosity level is not yet implemented, and is always returned
1124as zero. So calling @code{ui_out_message} with a @var{verbosity}
1125argument more than zero will cause the message to never be printed.}
1126@end deftypefun
1127
1128@deftypefun void ui_out_wrap_hint (struct ui_out *@var{uiout}, char *@var{indent})
1129This function gives the console output filter (a paging filter) a hint
1130of where to break lines which are too long. Ignored for all other
1131output consumers. @var{indent}, if non-@code{NULL}, is the string to
1132be printed to indent the wrapped text on the next line; it must remain
1133accessible until the next call to @code{ui_out_wrap_hint}, or until an
1134explicit newline is produced by one of the other functions. If
1135@var{indent} is @code{NULL}, the wrapped text will not be indented.
1136@end deftypefun
1137
1138@deftypefun void ui_out_flush (struct ui_out *@var{uiout})
1139This function flushes whatever output has been accumulated so far, if
1140the UI buffers output.
1141@end deftypefun
1142
1143
1144@subsection Examples of Use of @code{ui_out} functions
1145
1146@cindex using @code{ui_out} functions
1147@cindex @code{ui_out} functions, usage examples
1148This section gives some practical examples of using the @code{ui_out}
1149functions to generalize the old console-oriented code in
1150@value{GDBN}. The examples all come from functions defined on the
1151@file{breakpoints.c} file.
1152
1153This example, from the @code{breakpoint_1} function, shows how to
1154produce a table.
1155
1156The original code was:
1157
474c8240 1158@smallexample
0ee54786
EZ
1159 if (!found_a_breakpoint++)
1160 @{
1161 annotate_breakpoints_headers ();
1162
1163 annotate_field (0);
1164 printf_filtered ("Num ");
1165 annotate_field (1);
1166 printf_filtered ("Type ");
1167 annotate_field (2);
1168 printf_filtered ("Disp ");
1169 annotate_field (3);
1170 printf_filtered ("Enb ");
1171 if (addressprint)
1172 @{
1173 annotate_field (4);
1174 printf_filtered ("Address ");
1175 @}
1176 annotate_field (5);
1177 printf_filtered ("What\n");
1178
1179 annotate_breakpoints_table ();
1180 @}
474c8240 1181@end smallexample
0ee54786
EZ
1182
1183Here's the new version:
1184
474c8240 1185@smallexample
c72e7388
AC
1186 nr_printable_breakpoints = @dots{};
1187
1188 if (addressprint)
1189 ui_out_table_begin (ui, 6, nr_printable_breakpoints, "BreakpointTable");
1190 else
1191 ui_out_table_begin (ui, 5, nr_printable_breakpoints, "BreakpointTable");
1192
1193 if (nr_printable_breakpoints > 0)
1194 annotate_breakpoints_headers ();
1195 if (nr_printable_breakpoints > 0)
1196 annotate_field (0);
1197 ui_out_table_header (uiout, 3, ui_left, "number", "Num"); /* 1 */
1198 if (nr_printable_breakpoints > 0)
1199 annotate_field (1);
1200 ui_out_table_header (uiout, 14, ui_left, "type", "Type"); /* 2 */
1201 if (nr_printable_breakpoints > 0)
1202 annotate_field (2);
1203 ui_out_table_header (uiout, 4, ui_left, "disp", "Disp"); /* 3 */
1204 if (nr_printable_breakpoints > 0)
1205 annotate_field (3);
1206 ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb"); /* 4 */
1207 if (addressprint)
1208 @{
1209 if (nr_printable_breakpoints > 0)
1210 annotate_field (4);
1211 if (TARGET_ADDR_BIT <= 32)
1212 ui_out_table_header (uiout, 10, ui_left, "addr", "Address");/* 5 */
0ee54786 1213 else
c72e7388
AC
1214 ui_out_table_header (uiout, 18, ui_left, "addr", "Address");/* 5 */
1215 @}
1216 if (nr_printable_breakpoints > 0)
1217 annotate_field (5);
1218 ui_out_table_header (uiout, 40, ui_noalign, "what", "What"); /* 6 */
1219 ui_out_table_body (uiout);
1220 if (nr_printable_breakpoints > 0)
1221 annotate_breakpoints_table ();
474c8240 1222@end smallexample
0ee54786
EZ
1223
1224This example, from the @code{print_one_breakpoint} function, shows how
1225to produce the actual data for the table whose structure was defined
1226in the above example. The original code was:
1227
474c8240 1228@smallexample
0ee54786
EZ
1229 annotate_record ();
1230 annotate_field (0);
1231 printf_filtered ("%-3d ", b->number);
1232 annotate_field (1);
1233 if ((int)b->type > (sizeof(bptypes)/sizeof(bptypes[0]))
1234 || ((int) b->type != bptypes[(int) b->type].type))
1235 internal_error ("bptypes table does not describe type #%d.",
1236 (int)b->type);
1237 printf_filtered ("%-14s ", bptypes[(int)b->type].description);
1238 annotate_field (2);
1239 printf_filtered ("%-4s ", bpdisps[(int)b->disposition]);
1240 annotate_field (3);
1241 printf_filtered ("%-3c ", bpenables[(int)b->enable]);
c72e7388 1242 @dots{}
474c8240 1243@end smallexample
0ee54786
EZ
1244
1245This is the new version:
1246
474c8240 1247@smallexample
0ee54786 1248 annotate_record ();
c72e7388 1249 ui_out_tuple_begin (uiout, "bkpt");
0ee54786
EZ
1250 annotate_field (0);
1251 ui_out_field_int (uiout, "number", b->number);
1252 annotate_field (1);
1253 if (((int) b->type > (sizeof (bptypes) / sizeof (bptypes[0])))
1254 || ((int) b->type != bptypes[(int) b->type].type))
1255 internal_error ("bptypes table does not describe type #%d.",
1256 (int) b->type);
1257 ui_out_field_string (uiout, "type", bptypes[(int)b->type].description);
1258 annotate_field (2);
1259 ui_out_field_string (uiout, "disp", bpdisps[(int)b->disposition]);
1260 annotate_field (3);
1261 ui_out_field_fmt (uiout, "enabled", "%c", bpenables[(int)b->enable]);
c72e7388 1262 @dots{}
474c8240 1263@end smallexample
0ee54786
EZ
1264
1265This example, also from @code{print_one_breakpoint}, shows how to
1266produce a complicated output field using the @code{print_expression}
1267functions which requires a stream to be passed. It also shows how to
1268automate stream destruction with cleanups. The original code was:
1269
474c8240 1270@smallexample
0ee54786
EZ
1271 annotate_field (5);
1272 print_expression (b->exp, gdb_stdout);
474c8240 1273@end smallexample
0ee54786
EZ
1274
1275The new version is:
1276
474c8240 1277@smallexample
0ee54786
EZ
1278 struct ui_stream *stb = ui_out_stream_new (uiout);
1279 struct cleanup *old_chain = make_cleanup_ui_out_stream_delete (stb);
1280 ...
1281 annotate_field (5);
1282 print_expression (b->exp, stb->stream);
1283 ui_out_field_stream (uiout, "what", local_stream);
474c8240 1284@end smallexample
0ee54786
EZ
1285
1286This example, also from @code{print_one_breakpoint}, shows how to use
1287@code{ui_out_text} and @code{ui_out_field_string}. The original code
1288was:
1289
474c8240 1290@smallexample
0ee54786
EZ
1291 annotate_field (5);
1292 if (b->dll_pathname == NULL)
1293 printf_filtered ("<any library> ");
1294 else
1295 printf_filtered ("library \"%s\" ", b->dll_pathname);
474c8240 1296@end smallexample
0ee54786
EZ
1297
1298It became:
1299
474c8240 1300@smallexample
0ee54786
EZ
1301 annotate_field (5);
1302 if (b->dll_pathname == NULL)
1303 @{
1304 ui_out_field_string (uiout, "what", "<any library>");
1305 ui_out_spaces (uiout, 1);
1306 @}
1307 else
1308 @{
1309 ui_out_text (uiout, "library \"");
1310 ui_out_field_string (uiout, "what", b->dll_pathname);
1311 ui_out_text (uiout, "\" ");
1312 @}
474c8240 1313@end smallexample
0ee54786
EZ
1314
1315The following example from @code{print_one_breakpoint} shows how to
1316use @code{ui_out_field_int} and @code{ui_out_spaces}. The original
1317code was:
1318
474c8240 1319@smallexample
0ee54786
EZ
1320 annotate_field (5);
1321 if (b->forked_inferior_pid != 0)
1322 printf_filtered ("process %d ", b->forked_inferior_pid);
474c8240 1323@end smallexample
0ee54786
EZ
1324
1325It became:
1326
474c8240 1327@smallexample
0ee54786
EZ
1328 annotate_field (5);
1329 if (b->forked_inferior_pid != 0)
1330 @{
1331 ui_out_text (uiout, "process ");
1332 ui_out_field_int (uiout, "what", b->forked_inferior_pid);
1333 ui_out_spaces (uiout, 1);
1334 @}
474c8240 1335@end smallexample
0ee54786
EZ
1336
1337Here's an example of using @code{ui_out_field_string}. The original
1338code was:
1339
474c8240 1340@smallexample
0ee54786
EZ
1341 annotate_field (5);
1342 if (b->exec_pathname != NULL)
1343 printf_filtered ("program \"%s\" ", b->exec_pathname);
474c8240 1344@end smallexample
0ee54786
EZ
1345
1346It became:
1347
474c8240 1348@smallexample
0ee54786
EZ
1349 annotate_field (5);
1350 if (b->exec_pathname != NULL)
1351 @{
1352 ui_out_text (uiout, "program \"");
1353 ui_out_field_string (uiout, "what", b->exec_pathname);
1354 ui_out_text (uiout, "\" ");
1355 @}
474c8240 1356@end smallexample
0ee54786
EZ
1357
1358Finally, here's an example of printing an address. The original code:
1359
474c8240 1360@smallexample
0ee54786
EZ
1361 annotate_field (4);
1362 printf_filtered ("%s ",
1363 local_hex_string_custom ((unsigned long) b->address, "08l"));
474c8240 1364@end smallexample
0ee54786
EZ
1365
1366It became:
1367
474c8240 1368@smallexample
0ee54786
EZ
1369 annotate_field (4);
1370 ui_out_field_core_addr (uiout, "Address", b->address);
474c8240 1371@end smallexample
0ee54786
EZ
1372
1373
c906108c
SS
1374@section Console Printing
1375
1376@section TUI
1377
89437448 1378@node libgdb
c906108c 1379
89437448
AC
1380@chapter libgdb
1381
1382@section libgdb 1.0
1383@cindex @code{libgdb}
1384@code{libgdb} 1.0 was an abortive project of years ago. The theory was
1385to provide an API to @value{GDBN}'s functionality.
1386
1387@section libgdb 2.0
56caf160 1388@cindex @code{libgdb}
89437448
AC
1389@code{libgdb} 2.0 is an ongoing effort to update @value{GDBN} so that is
1390better able to support graphical and other environments.
1391
1392Since @code{libgdb} development is on-going, its architecture is still
1393evolving. The following components have so far been identified:
1394
1395@itemize @bullet
1396@item
1397Observer - @file{gdb-events.h}.
1398@item
1399Builder - @file{ui-out.h}
1400@item
1401Event Loop - @file{event-loop.h}
1402@item
1403Library - @file{gdb.h}
1404@end itemize
1405
1406The model that ties these components together is described below.
1407
1408@section The @code{libgdb} Model
1409
1410A client of @code{libgdb} interacts with the library in two ways.
1411
1412@itemize @bullet
1413@item
1414As an observer (using @file{gdb-events}) receiving notifications from
1415@code{libgdb} of any internal state changes (break point changes, run
1416state, etc).
1417@item
1418As a client querying @code{libgdb} (using the @file{ui-out} builder) to
1419obtain various status values from @value{GDBN}.
1420@end itemize
1421
1422Since @code{libgdb} could have multiple clients (e.g. a GUI supporting
1423the existing @value{GDBN} CLI), those clients must co-operate when
1424controlling @code{libgdb}. In particular, a client must ensure that
1425@code{libgdb} is idle (i.e. no other client is using @code{libgdb})
1426before responding to a @file{gdb-event} by making a query.
1427
1428@section CLI support
1429
1430At present @value{GDBN}'s CLI is very much entangled in with the core of
1431@code{libgdb}. Consequently, a client wishing to include the CLI in
1432their interface needs to carefully co-ordinate its own and the CLI's
1433requirements.
1434
1435It is suggested that the client set @code{libgdb} up to be bi-modal
1436(alternate between CLI and client query modes). The notes below sketch
1437out the theory:
1438
1439@itemize @bullet
1440@item
1441The client registers itself as an observer of @code{libgdb}.
1442@item
1443The client create and install @code{cli-out} builder using its own
1444versions of the @code{ui-file} @code{gdb_stderr}, @code{gdb_stdtarg} and
1445@code{gdb_stdout} streams.
1446@item
1447The client creates a separate custom @code{ui-out} builder that is only
1448used while making direct queries to @code{libgdb}.
1449@end itemize
1450
1451When the client receives input intended for the CLI, it simply passes it
1452along. Since the @code{cli-out} builder is installed by default, all
1453the CLI output in response to that command is routed (pronounced rooted)
1454through to the client controlled @code{gdb_stdout} et.@: al.@: streams.
1455At the same time, the client is kept abreast of internal changes by
1456virtue of being a @code{libgdb} observer.
1457
1458The only restriction on the client is that it must wait until
1459@code{libgdb} becomes idle before initiating any queries (using the
1460client's custom builder).
1461
1462@section @code{libgdb} components
1463
1464@subheading Observer - @file{gdb-events.h}
1465@file{gdb-events} provides the client with a very raw mechanism that can
1466be used to implement an observer. At present it only allows for one
1467observer and that observer must, internally, handle the need to delay
1468the processing of any event notifications until after @code{libgdb} has
1469finished the current command.
1470
1471@subheading Builder - @file{ui-out.h}
1472@file{ui-out} provides the infrastructure necessary for a client to
1473create a builder. That builder is then passed down to @code{libgdb}
1474when doing any queries.
1475
1476@subheading Event Loop - @file{event-loop.h}
1477@c There could be an entire section on the event-loop
1478@file{event-loop}, currently non-re-entrant, provides a simple event
1479loop. A client would need to either plug its self into this loop or,
1480implement a new event-loop that GDB would use.
1481
1482The event-loop will eventually be made re-entrant. This is so that
1483@value{GDB} can better handle the problem of some commands blocking
1484instead of returning.
1485
1486@subheading Library - @file{gdb.h}
1487@file{libgdb} is the most obvious component of this system. It provides
1488the query interface. Each function is parameterized by a @code{ui-out}
1489builder. The result of the query is constructed using that builder
1490before the query function returns.
c906108c
SS
1491
1492@node Symbol Handling
1493
1494@chapter Symbol Handling
1495
25822942 1496Symbols are a key part of @value{GDBN}'s operation. Symbols include variables,
c906108c
SS
1497functions, and types.
1498
1499@section Symbol Reading
1500
56caf160
EZ
1501@cindex symbol reading
1502@cindex reading of symbols
1503@cindex symbol files
1504@value{GDBN} reads symbols from @dfn{symbol files}. The usual symbol
1505file is the file containing the program which @value{GDBN} is
1506debugging. @value{GDBN} can be directed to use a different file for
1507symbols (with the @samp{symbol-file} command), and it can also read
1508more symbols via the @samp{add-file} and @samp{load} commands, or while
1509reading symbols from shared libraries.
1510
1511@findex find_sym_fns
1512Symbol files are initially opened by code in @file{symfile.c} using
1513the BFD library (@pxref{Support Libraries}). BFD identifies the type
1514of the file by examining its header. @code{find_sym_fns} then uses
1515this identification to locate a set of symbol-reading functions.
1516
1517@findex add_symtab_fns
1518@cindex @code{sym_fns} structure
1519@cindex adding a symbol-reading module
1520Symbol-reading modules identify themselves to @value{GDBN} by calling
c906108c
SS
1521@code{add_symtab_fns} during their module initialization. The argument
1522to @code{add_symtab_fns} is a @code{struct sym_fns} which contains the
1523name (or name prefix) of the symbol format, the length of the prefix,
1524and pointers to four functions. These functions are called at various
56caf160 1525times to process symbol files whose identification matches the specified
c906108c
SS
1526prefix.
1527
1528The functions supplied by each module are:
1529
1530@table @code
1531@item @var{xyz}_symfile_init(struct sym_fns *sf)
1532
56caf160 1533@cindex secondary symbol file
c906108c
SS
1534Called from @code{symbol_file_add} when we are about to read a new
1535symbol file. This function should clean up any internal state (possibly
1536resulting from half-read previous files, for example) and prepare to
56caf160
EZ
1537read a new symbol file. Note that the symbol file which we are reading
1538might be a new ``main'' symbol file, or might be a secondary symbol file
c906108c
SS
1539whose symbols are being added to the existing symbol table.
1540
1541The argument to @code{@var{xyz}_symfile_init} is a newly allocated
1542@code{struct sym_fns} whose @code{bfd} field contains the BFD for the
1543new symbol file being read. Its @code{private} field has been zeroed,
1544and can be modified as desired. Typically, a struct of private
1545information will be @code{malloc}'d, and a pointer to it will be placed
1546in the @code{private} field.
1547
1548There is no result from @code{@var{xyz}_symfile_init}, but it can call
1549@code{error} if it detects an unavoidable problem.
1550
1551@item @var{xyz}_new_init()
1552
1553Called from @code{symbol_file_add} when discarding existing symbols.
56caf160
EZ
1554This function needs only handle the symbol-reading module's internal
1555state; the symbol table data structures visible to the rest of
1556@value{GDBN} will be discarded by @code{symbol_file_add}. It has no
1557arguments and no result. It may be called after
1558@code{@var{xyz}_symfile_init}, if a new symbol table is being read, or
1559may be called alone if all symbols are simply being discarded.
c906108c
SS
1560
1561@item @var{xyz}_symfile_read(struct sym_fns *sf, CORE_ADDR addr, int mainline)
1562
1563Called from @code{symbol_file_add} to actually read the symbols from a
1564symbol-file into a set of psymtabs or symtabs.
1565
56caf160 1566@code{sf} points to the @code{struct sym_fns} originally passed to
c906108c
SS
1567@code{@var{xyz}_sym_init} for possible initialization. @code{addr} is
1568the offset between the file's specified start address and its true
1569address in memory. @code{mainline} is 1 if this is the main symbol
1570table being read, and 0 if a secondary symbol file (e.g. shared library
1571or dynamically loaded file) is being read.@refill
1572@end table
1573
1574In addition, if a symbol-reading module creates psymtabs when
1575@var{xyz}_symfile_read is called, these psymtabs will contain a pointer
1576to a function @code{@var{xyz}_psymtab_to_symtab}, which can be called
25822942 1577from any point in the @value{GDBN} symbol-handling code.
c906108c
SS
1578
1579@table @code
1580@item @var{xyz}_psymtab_to_symtab (struct partial_symtab *pst)
1581
56caf160 1582Called from @code{psymtab_to_symtab} (or the @code{PSYMTAB_TO_SYMTAB} macro) if
c906108c
SS
1583the psymtab has not already been read in and had its @code{pst->symtab}
1584pointer set. The argument is the psymtab to be fleshed-out into a
56caf160
EZ
1585symtab. Upon return, @code{pst->readin} should have been set to 1, and
1586@code{pst->symtab} should contain a pointer to the new corresponding symtab, or
c906108c
SS
1587zero if there were no symbols in that part of the symbol file.
1588@end table
1589
1590@section Partial Symbol Tables
1591
56caf160 1592@value{GDBN} has three types of symbol tables:
c906108c
SS
1593
1594@itemize @bullet
56caf160
EZ
1595@cindex full symbol table
1596@cindex symtabs
1597@item
1598Full symbol tables (@dfn{symtabs}). These contain the main
1599information about symbols and addresses.
c906108c 1600
56caf160
EZ
1601@cindex psymtabs
1602@item
1603Partial symbol tables (@dfn{psymtabs}). These contain enough
c906108c
SS
1604information to know when to read the corresponding part of the full
1605symbol table.
1606
56caf160
EZ
1607@cindex minimal symbol table
1608@cindex minsymtabs
1609@item
1610Minimal symbol tables (@dfn{msymtabs}). These contain information
c906108c 1611gleaned from non-debugging symbols.
c906108c
SS
1612@end itemize
1613
56caf160 1614@cindex partial symbol table
c906108c
SS
1615This section describes partial symbol tables.
1616
1617A psymtab is constructed by doing a very quick pass over an executable
1618file's debugging information. Small amounts of information are
56caf160 1619extracted---enough to identify which parts of the symbol table will
c906108c 1620need to be re-read and fully digested later, when the user needs the
25822942 1621information. The speed of this pass causes @value{GDBN} to start up very
c906108c
SS
1622quickly. Later, as the detailed rereading occurs, it occurs in small
1623pieces, at various times, and the delay therefrom is mostly invisible to
1624the user.
1625@c (@xref{Symbol Reading}.)
1626
1627The symbols that show up in a file's psymtab should be, roughly, those
1628visible to the debugger's user when the program is not running code from
1629that file. These include external symbols and types, static symbols and
56caf160 1630types, and @code{enum} values declared at file scope.
c906108c
SS
1631
1632The psymtab also contains the range of instruction addresses that the
1633full symbol table would represent.
1634
56caf160
EZ
1635@cindex finding a symbol
1636@cindex symbol lookup
c906108c
SS
1637The idea is that there are only two ways for the user (or much of the
1638code in the debugger) to reference a symbol:
1639
1640@itemize @bullet
56caf160
EZ
1641@findex find_pc_function
1642@findex find_pc_line
1643@item
1644By its address (e.g. execution stops at some address which is inside a
1645function in this file). The address will be noticed to be in the
1646range of this psymtab, and the full symtab will be read in.
1647@code{find_pc_function}, @code{find_pc_line}, and other
1648@code{find_pc_@dots{}} functions handle this.
c906108c 1649
56caf160
EZ
1650@cindex lookup_symbol
1651@item
1652By its name
c906108c
SS
1653(e.g. the user asks to print a variable, or set a breakpoint on a
1654function). Global names and file-scope names will be found in the
1655psymtab, which will cause the symtab to be pulled in. Local names will
1656have to be qualified by a global name, or a file-scope name, in which
1657case we will have already read in the symtab as we evaluated the
56caf160 1658qualifier. Or, a local symbol can be referenced when we are ``in'' a
c906108c
SS
1659local scope, in which case the first case applies. @code{lookup_symbol}
1660does most of the work here.
c906108c
SS
1661@end itemize
1662
1663The only reason that psymtabs exist is to cause a symtab to be read in
1664at the right moment. Any symbol that can be elided from a psymtab,
1665while still causing that to happen, should not appear in it. Since
1666psymtabs don't have the idea of scope, you can't put local symbols in
1667them anyway. Psymtabs don't have the idea of the type of a symbol,
1668either, so types need not appear, unless they will be referenced by
1669name.
1670
56caf160
EZ
1671It is a bug for @value{GDBN} to behave one way when only a psymtab has
1672been read, and another way if the corresponding symtab has been read
1673in. Such bugs are typically caused by a psymtab that does not contain
1674all the visible symbols, or which has the wrong instruction address
1675ranges.
c906108c 1676
56caf160 1677The psymtab for a particular section of a symbol file (objfile) could be
c906108c
SS
1678thrown away after the symtab has been read in. The symtab should always
1679be searched before the psymtab, so the psymtab will never be used (in a
1680bug-free environment). Currently, psymtabs are allocated on an obstack,
1681and all the psymbols themselves are allocated in a pair of large arrays
1682on an obstack, so there is little to be gained by trying to free them
1683unless you want to do a lot more work.
1684
1685@section Types
1686
56caf160 1687@unnumberedsubsec Fundamental Types (e.g., @code{FT_VOID}, @code{FT_BOOLEAN}).
c906108c 1688
56caf160 1689@cindex fundamental types
25822942 1690These are the fundamental types that @value{GDBN} uses internally. Fundamental
c906108c
SS
1691types from the various debugging formats (stabs, ELF, etc) are mapped
1692into one of these. They are basically a union of all fundamental types
56caf160
EZ
1693that @value{GDBN} knows about for all the languages that @value{GDBN}
1694knows about.
c906108c 1695
56caf160 1696@unnumberedsubsec Type Codes (e.g., @code{TYPE_CODE_PTR}, @code{TYPE_CODE_ARRAY}).
c906108c 1697
56caf160
EZ
1698@cindex type codes
1699Each time @value{GDBN} builds an internal type, it marks it with one
1700of these types. The type may be a fundamental type, such as
1701@code{TYPE_CODE_INT}, or a derived type, such as @code{TYPE_CODE_PTR}
1702which is a pointer to another type. Typically, several @code{FT_*}
1703types map to one @code{TYPE_CODE_*} type, and are distinguished by
1704other members of the type struct, such as whether the type is signed
1705or unsigned, and how many bits it uses.
c906108c 1706
56caf160 1707@unnumberedsubsec Builtin Types (e.g., @code{builtin_type_void}, @code{builtin_type_char}).
c906108c
SS
1708
1709These are instances of type structs that roughly correspond to
56caf160
EZ
1710fundamental types and are created as global types for @value{GDBN} to
1711use for various ugly historical reasons. We eventually want to
1712eliminate these. Note for example that @code{builtin_type_int}
1713initialized in @file{gdbtypes.c} is basically the same as a
1714@code{TYPE_CODE_INT} type that is initialized in @file{c-lang.c} for
1715an @code{FT_INTEGER} fundamental type. The difference is that the
1716@code{builtin_type} is not associated with any particular objfile, and
1717only one instance exists, while @file{c-lang.c} builds as many
1718@code{TYPE_CODE_INT} types as needed, with each one associated with
1719some particular objfile.
c906108c
SS
1720
1721@section Object File Formats
56caf160 1722@cindex object file formats
c906108c
SS
1723
1724@subsection a.out
1725
56caf160
EZ
1726@cindex @code{a.out} format
1727The @code{a.out} format is the original file format for Unix. It
1728consists of three sections: @code{text}, @code{data}, and @code{bss},
1729which are for program code, initialized data, and uninitialized data,
1730respectively.
c906108c 1731
56caf160 1732The @code{a.out} format is so simple that it doesn't have any reserved
c906108c 1733place for debugging information. (Hey, the original Unix hackers used
56caf160
EZ
1734@samp{adb}, which is a machine-language debugger!) The only debugging
1735format for @code{a.out} is stabs, which is encoded as a set of normal
c906108c
SS
1736symbols with distinctive attributes.
1737
56caf160 1738The basic @code{a.out} reader is in @file{dbxread.c}.
c906108c
SS
1739
1740@subsection COFF
1741
56caf160 1742@cindex COFF format
c906108c
SS
1743The COFF format was introduced with System V Release 3 (SVR3) Unix.
1744COFF files may have multiple sections, each prefixed by a header. The
1745number of sections is limited.
1746
1747The COFF specification includes support for debugging. Although this
1748was a step forward, the debugging information was woefully limited. For
1749instance, it was not possible to represent code that came from an
1750included file.
1751
1752The COFF reader is in @file{coffread.c}.
1753
1754@subsection ECOFF
1755
56caf160 1756@cindex ECOFF format
c906108c
SS
1757ECOFF is an extended COFF originally introduced for Mips and Alpha
1758workstations.
1759
1760The basic ECOFF reader is in @file{mipsread.c}.
1761
1762@subsection XCOFF
1763
56caf160 1764@cindex XCOFF format
c906108c
SS
1765The IBM RS/6000 running AIX uses an object file format called XCOFF.
1766The COFF sections, symbols, and line numbers are used, but debugging
56caf160
EZ
1767symbols are @code{dbx}-style stabs whose strings are located in the
1768@code{.debug} section (rather than the string table). For more
1769information, see @ref{Top,,,stabs,The Stabs Debugging Format}.
c906108c
SS
1770
1771The shared library scheme has a clean interface for figuring out what
1772shared libraries are in use, but the catch is that everything which
1773refers to addresses (symbol tables and breakpoints at least) needs to be
1774relocated for both shared libraries and the main executable. At least
1775using the standard mechanism this can only be done once the program has
1776been run (or the core file has been read).
1777
1778@subsection PE
1779
56caf160
EZ
1780@cindex PE-COFF format
1781Windows 95 and NT use the PE (@dfn{Portable Executable}) format for their
c906108c
SS
1782executables. PE is basically COFF with additional headers.
1783
25822942 1784While BFD includes special PE support, @value{GDBN} needs only the basic
c906108c
SS
1785COFF reader.
1786
1787@subsection ELF
1788
56caf160 1789@cindex ELF format
c906108c
SS
1790The ELF format came with System V Release 4 (SVR4) Unix. ELF is similar
1791to COFF in being organized into a number of sections, but it removes
1792many of COFF's limitations.
1793
1794The basic ELF reader is in @file{elfread.c}.
1795
1796@subsection SOM
1797
56caf160 1798@cindex SOM format
c906108c
SS
1799SOM is HP's object file and debug format (not to be confused with IBM's
1800SOM, which is a cross-language ABI).
1801
1802The SOM reader is in @file{hpread.c}.
1803
1804@subsection Other File Formats
1805
56caf160 1806@cindex Netware Loadable Module format
25822942 1807Other file formats that have been supported by @value{GDBN} include Netware
4a98ee0e 1808Loadable Modules (@file{nlmread.c}).
c906108c
SS
1809
1810@section Debugging File Formats
1811
1812This section describes characteristics of debugging information that
1813are independent of the object file format.
1814
1815@subsection stabs
1816
56caf160 1817@cindex stabs debugging info
c906108c
SS
1818@code{stabs} started out as special symbols within the @code{a.out}
1819format. Since then, it has been encapsulated into other file
1820formats, such as COFF and ELF.
1821
1822While @file{dbxread.c} does some of the basic stab processing,
1823including for encapsulated versions, @file{stabsread.c} does
1824the real work.
1825
1826@subsection COFF
1827
56caf160 1828@cindex COFF debugging info
c906108c
SS
1829The basic COFF definition includes debugging information. The level
1830of support is minimal and non-extensible, and is not often used.
1831
1832@subsection Mips debug (Third Eye)
1833
56caf160 1834@cindex ECOFF debugging info
c906108c
SS
1835ECOFF includes a definition of a special debug format.
1836
1837The file @file{mdebugread.c} implements reading for this format.
1838
1839@subsection DWARF 1
1840
56caf160 1841@cindex DWARF 1 debugging info
c906108c
SS
1842DWARF 1 is a debugging format that was originally designed to be
1843used with ELF in SVR4 systems.
1844
c906108c
SS
1845@c GCC_PRODUCER
1846@c GPLUS_PRODUCER
1847@c LCC_PRODUCER
1848@c If defined, these are the producer strings in a DWARF 1 file. All of
1849@c these have reasonable defaults already.
1850
1851The DWARF 1 reader is in @file{dwarfread.c}.
1852
1853@subsection DWARF 2
1854
56caf160 1855@cindex DWARF 2 debugging info
c906108c
SS
1856DWARF 2 is an improved but incompatible version of DWARF 1.
1857
1858The DWARF 2 reader is in @file{dwarf2read.c}.
1859
1860@subsection SOM
1861
56caf160 1862@cindex SOM debugging info
c906108c
SS
1863Like COFF, the SOM definition includes debugging information.
1864
25822942 1865@section Adding a New Symbol Reader to @value{GDBN}
c906108c 1866
56caf160
EZ
1867@cindex adding debugging info reader
1868If you are using an existing object file format (@code{a.out}, COFF, ELF, etc),
c906108c
SS
1869there is probably little to be done.
1870
1871If you need to add a new object file format, you must first add it to
1872BFD. This is beyond the scope of this document.
1873
1874You must then arrange for the BFD code to provide access to the
25822942 1875debugging symbols. Generally @value{GDBN} will have to call swapping routines
c906108c 1876from BFD and a few other BFD internal routines to locate the debugging
25822942 1877information. As much as possible, @value{GDBN} should not depend on the BFD
c906108c
SS
1878internal data structures.
1879
1880For some targets (e.g., COFF), there is a special transfer vector used
1881to call swapping routines, since the external data structures on various
1882platforms have different sizes and layouts. Specialized routines that
1883will only ever be implemented by one object file format may be called
1884directly. This interface should be described in a file
56caf160 1885@file{bfd/lib@var{xyz}.h}, which is included by @value{GDBN}.
c906108c
SS
1886
1887
1888@node Language Support
1889
1890@chapter Language Support
1891
56caf160
EZ
1892@cindex language support
1893@value{GDBN}'s language support is mainly driven by the symbol reader,
1894although it is possible for the user to set the source language
1895manually.
c906108c 1896
56caf160
EZ
1897@value{GDBN} chooses the source language by looking at the extension
1898of the file recorded in the debug info; @file{.c} means C, @file{.f}
1899means Fortran, etc. It may also use a special-purpose language
1900identifier if the debug format supports it, like with DWARF.
c906108c 1901
25822942 1902@section Adding a Source Language to @value{GDBN}
c906108c 1903
56caf160
EZ
1904@cindex adding source language
1905To add other languages to @value{GDBN}'s expression parser, follow the
1906following steps:
c906108c
SS
1907
1908@table @emph
1909@item Create the expression parser.
1910
56caf160 1911@cindex expression parser
c906108c 1912This should reside in a file @file{@var{lang}-exp.y}. Routines for
56caf160 1913building parsed expressions into a @code{union exp_element} list are in
c906108c
SS
1914@file{parse.c}.
1915
56caf160 1916@cindex language parser
c906108c
SS
1917Since we can't depend upon everyone having Bison, and YACC produces
1918parsers that define a bunch of global names, the following lines
56caf160 1919@strong{must} be included at the top of the YACC parser, to prevent the
c906108c
SS
1920various parsers from defining the same global names:
1921
474c8240 1922@smallexample
56caf160
EZ
1923#define yyparse @var{lang}_parse
1924#define yylex @var{lang}_lex
1925#define yyerror @var{lang}_error
1926#define yylval @var{lang}_lval
1927#define yychar @var{lang}_char
1928#define yydebug @var{lang}_debug
1929#define yypact @var{lang}_pact
1930#define yyr1 @var{lang}_r1
1931#define yyr2 @var{lang}_r2
1932#define yydef @var{lang}_def
1933#define yychk @var{lang}_chk
1934#define yypgo @var{lang}_pgo
1935#define yyact @var{lang}_act
1936#define yyexca @var{lang}_exca
1937#define yyerrflag @var{lang}_errflag
1938#define yynerrs @var{lang}_nerrs
474c8240 1939@end smallexample
c906108c
SS
1940
1941At the bottom of your parser, define a @code{struct language_defn} and
1942initialize it with the right values for your language. Define an
1943@code{initialize_@var{lang}} routine and have it call
25822942 1944@samp{add_language(@var{lang}_language_defn)} to tell the rest of @value{GDBN}
c906108c
SS
1945that your language exists. You'll need some other supporting variables
1946and functions, which will be used via pointers from your
1947@code{@var{lang}_language_defn}. See the declaration of @code{struct
1948language_defn} in @file{language.h}, and the other @file{*-exp.y} files,
1949for more information.
1950
1951@item Add any evaluation routines, if necessary
1952
56caf160
EZ
1953@cindex expression evaluation routines
1954@findex evaluate_subexp
1955@findex prefixify_subexp
1956@findex length_of_subexp
c906108c
SS
1957If you need new opcodes (that represent the operations of the language),
1958add them to the enumerated type in @file{expression.h}. Add support
56caf160
EZ
1959code for these operations in the @code{evaluate_subexp} function
1960defined in the file @file{eval.c}. Add cases
c906108c 1961for new opcodes in two functions from @file{parse.c}:
56caf160 1962@code{prefixify_subexp} and @code{length_of_subexp}. These compute
c906108c
SS
1963the number of @code{exp_element}s that a given operation takes up.
1964
1965@item Update some existing code
1966
1967Add an enumerated identifier for your language to the enumerated type
1968@code{enum language} in @file{defs.h}.
1969
1970Update the routines in @file{language.c} so your language is included.
1971These routines include type predicates and such, which (in some cases)
1972are language dependent. If your language does not appear in the switch
1973statement, an error is reported.
1974
56caf160 1975@vindex current_language
c906108c
SS
1976Also included in @file{language.c} is the code that updates the variable
1977@code{current_language}, and the routines that translate the
1978@code{language_@var{lang}} enumerated identifier into a printable
1979string.
1980
56caf160 1981@findex _initialize_language
c906108c
SS
1982Update the function @code{_initialize_language} to include your
1983language. This function picks the default language upon startup, so is
25822942 1984dependent upon which languages that @value{GDBN} is built for.
c906108c 1985
56caf160 1986@findex allocate_symtab
c906108c
SS
1987Update @code{allocate_symtab} in @file{symfile.c} and/or symbol-reading
1988code so that the language of each symtab (source file) is set properly.
1989This is used to determine the language to use at each stack frame level.
1990Currently, the language is set based upon the extension of the source
1991file. If the language can be better inferred from the symbol
1992information, please set the language of the symtab in the symbol-reading
1993code.
1994
56caf160
EZ
1995@findex print_subexp
1996@findex op_print_tab
1997Add helper code to @code{print_subexp} (in @file{expprint.c}) to handle any new
c906108c
SS
1998expression opcodes you have added to @file{expression.h}. Also, add the
1999printed representations of your operators to @code{op_print_tab}.
2000
2001@item Add a place of call
2002
56caf160 2003@findex parse_exp_1
c906108c 2004Add a call to @code{@var{lang}_parse()} and @code{@var{lang}_error} in
56caf160 2005@code{parse_exp_1} (defined in @file{parse.c}).
c906108c
SS
2006
2007@item Use macros to trim code
2008
56caf160 2009@cindex trimming language-dependent code
25822942
DB
2010The user has the option of building @value{GDBN} for some or all of the
2011languages. If the user decides to build @value{GDBN} for the language
c906108c
SS
2012@var{lang}, then every file dependent on @file{language.h} will have the
2013macro @code{_LANG_@var{lang}} defined in it. Use @code{#ifdef}s to
2014leave out large routines that the user won't need if he or she is not
2015using your language.
2016
25822942 2017Note that you do not need to do this in your YACC parser, since if @value{GDBN}
c906108c 2018is not build for @var{lang}, then @file{@var{lang}-exp.tab.o} (the
25822942 2019compiled form of your parser) is not linked into @value{GDBN} at all.
c906108c 2020
56caf160
EZ
2021See the file @file{configure.in} for how @value{GDBN} is configured
2022for different languages.
c906108c
SS
2023
2024@item Edit @file{Makefile.in}
2025
2026Add dependencies in @file{Makefile.in}. Make sure you update the macro
2027variables such as @code{HFILES} and @code{OBJS}, otherwise your code may
2028not get linked in, or, worse yet, it may not get @code{tar}red into the
2029distribution!
c906108c
SS
2030@end table
2031
2032
2033@node Host Definition
2034
2035@chapter Host Definition
2036
56caf160 2037With the advent of Autoconf, it's rarely necessary to have host
7fd60527
AC
2038definition machinery anymore. The following information is provided,
2039mainly, as an historical reference.
c906108c
SS
2040
2041@section Adding a New Host
2042
56caf160
EZ
2043@cindex adding a new host
2044@cindex host, adding
7fd60527
AC
2045@value{GDBN}'s host configuration support normally happens via Autoconf.
2046New host-specific definitions should not be needed. Older hosts
2047@value{GDBN} still use the host-specific definitions and files listed
2048below, but these mostly exist for historical reasons, and will
56caf160 2049eventually disappear.
c906108c 2050
c906108c 2051@table @file
c906108c 2052@item gdb/config/@var{arch}/@var{xyz}.mh
7fd60527
AC
2053This file once contained both host and native configuration information
2054(@pxref{Native Debugging}) for the machine @var{xyz}. The host
2055configuration information is now handed by Autoconf.
2056
2057Host configuration information included a definition of
2058@code{XM_FILE=xm-@var{xyz}.h} and possibly definitions for @code{CC},
7708fa01
AC
2059@code{SYSV_DEFINE}, @code{XM_CFLAGS}, @code{XM_ADD_FILES},
2060@code{XM_CLIBS}, @code{XM_CDEPS}, etc.; see @file{Makefile.in}.
c906108c 2061
7fd60527
AC
2062New host only configurations do not need this file.
2063
c906108c 2064@item gdb/config/@var{arch}/xm-@var{xyz}.h
7fd60527
AC
2065This file once contained definitions and includes required when hosting
2066gdb on machine @var{xyz}. Those definitions and includes are now
2067handled by Autoconf.
2068
2069New host and native configurations do not need this file.
2070
2071@emph{Maintainer's note: Some hosts continue to use the @file{xm-xyz.h}
2072file to define the macros @var{HOST_FLOAT_FORMAT},
2073@var{HOST_DOUBLE_FORMAT} and @var{HOST_LONG_DOUBLE_FORMAT}. That code
2074also needs to be replaced with either an Autoconf or run-time test.}
c906108c 2075
c906108c
SS
2076@end table
2077
2078@subheading Generic Host Support Files
2079
56caf160 2080@cindex generic host support
c906108c
SS
2081There are some ``generic'' versions of routines that can be used by
2082various systems. These can be customized in various ways by macros
2083defined in your @file{xm-@var{xyz}.h} file. If these routines work for
2084the @var{xyz} host, you can just include the generic file's name (with
2085@samp{.o}, not @samp{.c}) in @code{XDEPFILES}.
2086
2087Otherwise, if your machine needs custom support routines, you will need
2088to write routines that perform the same functions as the generic file.
2089Put them into @code{@var{xyz}-xdep.c}, and put @code{@var{xyz}-xdep.o}
2090into @code{XDEPFILES}.
2091
2092@table @file
56caf160
EZ
2093@cindex remote debugging support
2094@cindex serial line support
c906108c
SS
2095@item ser-unix.c
2096This contains serial line support for Unix systems. This is always
2097included, via the makefile variable @code{SER_HARDWIRE}; override this
2098variable in the @file{.mh} file to avoid it.
2099
2100@item ser-go32.c
2101This contains serial line support for 32-bit programs running under DOS,
56caf160 2102using the DJGPP (a.k.a.@: GO32) execution environment.
c906108c 2103
56caf160 2104@cindex TCP remote support
c906108c
SS
2105@item ser-tcp.c
2106This contains generic TCP support using sockets.
c906108c
SS
2107@end table
2108
2109@section Host Conditionals
2110
56caf160
EZ
2111When @value{GDBN} is configured and compiled, various macros are
2112defined or left undefined, to control compilation based on the
2113attributes of the host system. These macros and their meanings (or if
2114the meaning is not documented here, then one of the source files where
2115they are used is indicated) are:
c906108c 2116
56caf160 2117@ftable @code
25822942 2118@item @value{GDBN}INIT_FILENAME
56caf160
EZ
2119The default name of @value{GDBN}'s initialization file (normally
2120@file{.gdbinit}).
c906108c 2121
cce74817
JM
2122@item NO_STD_REGS
2123This macro is deprecated.
2124
c906108c
SS
2125@item NO_SYS_FILE
2126Define this if your system does not have a @code{<sys/file.h>}.
2127
2128@item SIGWINCH_HANDLER
2129If your host defines @code{SIGWINCH}, you can define this to be the name
2130of a function to be called if @code{SIGWINCH} is received.
2131
2132@item SIGWINCH_HANDLER_BODY
2133Define this to expand into code that will define the function named by
2134the expansion of @code{SIGWINCH_HANDLER}.
2135
2136@item ALIGN_STACK_ON_STARTUP
56caf160 2137@cindex stack alignment
c906108c
SS
2138Define this if your system is of a sort that will crash in
2139@code{tgetent} if the stack happens not to be longword-aligned when
2140@code{main} is called. This is a rare situation, but is known to occur
2141on several different types of systems.
2142
2143@item CRLF_SOURCE_FILES
56caf160 2144@cindex DOS text files
c906108c
SS
2145Define this if host files use @code{\r\n} rather than @code{\n} as a
2146line terminator. This will cause source file listings to omit @code{\r}
56caf160
EZ
2147characters when printing and it will allow @code{\r\n} line endings of files
2148which are ``sourced'' by gdb. It must be possible to open files in binary
c906108c
SS
2149mode using @code{O_BINARY} or, for fopen, @code{"rb"}.
2150
2151@item DEFAULT_PROMPT
56caf160 2152@cindex prompt
c906108c
SS
2153The default value of the prompt string (normally @code{"(gdb) "}).
2154
2155@item DEV_TTY
56caf160 2156@cindex terminal device
c906108c
SS
2157The name of the generic TTY device, defaults to @code{"/dev/tty"}.
2158
2159@item FCLOSE_PROVIDED
2160Define this if the system declares @code{fclose} in the headers included
2161in @code{defs.h}. This isn't needed unless your compiler is unusually
2162anal.
2163
2164@item FOPEN_RB
2165Define this if binary files are opened the same way as text files.
2166
2167@item GETENV_PROVIDED
2168Define this if the system declares @code{getenv} in its headers included
56caf160 2169in @code{defs.h}. This isn't needed unless your compiler is unusually
c906108c
SS
2170anal.
2171
2172@item HAVE_MMAP
56caf160 2173@findex mmap
c906108c
SS
2174In some cases, use the system call @code{mmap} for reading symbol
2175tables. For some machines this allows for sharing and quick updates.
2176
c906108c
SS
2177@item HAVE_TERMIO
2178Define this if the host system has @code{termio.h}.
2179
c906108c 2180@item INT_MAX
9742079a
EZ
2181@itemx INT_MIN
2182@itemx LONG_MAX
2183@itemx UINT_MAX
2184@itemx ULONG_MAX
c906108c
SS
2185Values for host-side constants.
2186
2187@item ISATTY
2188Substitute for isatty, if not available.
2189
2190@item LONGEST
2191This is the longest integer type available on the host. If not defined,
2192it will default to @code{long long} or @code{long}, depending on
2193@code{CC_HAS_LONG_LONG}.
2194
2195@item CC_HAS_LONG_LONG
56caf160
EZ
2196@cindex @code{long long} data type
2197Define this if the host C compiler supports @code{long long}. This is set
2198by the @code{configure} script.
c906108c
SS
2199
2200@item PRINTF_HAS_LONG_LONG
2201Define this if the host can handle printing of long long integers via
56caf160
EZ
2202the printf format conversion specifier @code{ll}. This is set by the
2203@code{configure} script.
c906108c
SS
2204
2205@item HAVE_LONG_DOUBLE
56caf160
EZ
2206Define this if the host C compiler supports @code{long double}. This is
2207set by the @code{configure} script.
c906108c
SS
2208
2209@item PRINTF_HAS_LONG_DOUBLE
2210Define this if the host can handle printing of long double float-point
56caf160
EZ
2211numbers via the printf format conversion specifier @code{Lg}. This is
2212set by the @code{configure} script.
c906108c
SS
2213
2214@item SCANF_HAS_LONG_DOUBLE
2215Define this if the host can handle the parsing of long double
56caf160
EZ
2216float-point numbers via the scanf format conversion specifier
2217@code{Lg}. This is set by the @code{configure} script.
c906108c
SS
2218
2219@item LSEEK_NOT_LINEAR
2220Define this if @code{lseek (n)} does not necessarily move to byte number
2221@code{n} in the file. This is only used when reading source files. It
2222is normally faster to define @code{CRLF_SOURCE_FILES} when possible.
2223
2224@item L_SET
56caf160
EZ
2225This macro is used as the argument to @code{lseek} (or, most commonly,
2226@code{bfd_seek}). FIXME, should be replaced by SEEK_SET instead,
2227which is the POSIX equivalent.
c906108c 2228
c906108c
SS
2229@item MMAP_BASE_ADDRESS
2230When using HAVE_MMAP, the first mapping should go at this address.
2231
2232@item MMAP_INCREMENT
2233when using HAVE_MMAP, this is the increment between mappings.
2234
c906108c
SS
2235@item NORETURN
2236If defined, this should be one or more tokens, such as @code{volatile},
2237that can be used in both the declaration and definition of functions to
2238indicate that they never return. The default is already set correctly
2239if compiling with GCC. This will almost never need to be defined.
2240
2241@item ATTR_NORETURN
2242If defined, this should be one or more tokens, such as
2243@code{__attribute__ ((noreturn))}, that can be used in the declarations
2244of functions to indicate that they never return. The default is already
2245set correctly if compiling with GCC. This will almost never need to be
2246defined.
2247
2248@item USE_MMALLOC
56caf160
EZ
2249@findex mmalloc
2250@value{GDBN} will use the @code{mmalloc} library for memory allocation
2251for symbol reading if this symbol is defined. Be careful defining it
2252since there are systems on which @code{mmalloc} does not work for some
2253reason. One example is the DECstation, where its RPC library can't
2254cope with our redefinition of @code{malloc} to call @code{mmalloc}.
2255When defining @code{USE_MMALLOC}, you will also have to set
2256@code{MMALLOC} in the Makefile, to point to the @code{mmalloc} library. This
2257define is set when you configure with @samp{--with-mmalloc}.
c906108c
SS
2258
2259@item NO_MMCHECK
56caf160 2260@findex mmcheck
c906108c
SS
2261Define this if you are using @code{mmalloc}, but don't want the overhead
2262of checking the heap with @code{mmcheck}. Note that on some systems,
56caf160 2263the C runtime makes calls to @code{malloc} prior to calling @code{main}, and if
c906108c
SS
2264@code{free} is ever called with these pointers after calling
2265@code{mmcheck} to enable checking, a memory corruption abort is certain
56caf160
EZ
2266to occur. These systems can still use @code{mmalloc}, but must define
2267@code{NO_MMCHECK}.
c906108c
SS
2268
2269@item MMCHECK_FORCE
2270Define this to 1 if the C runtime allocates memory prior to
2271@code{mmcheck} being called, but that memory is never freed so we don't
2272have to worry about it triggering a memory corruption abort. The
2273default is 0, which means that @code{mmcheck} will only install the heap
2274checking functions if there has not yet been any memory allocation
56caf160 2275calls, and if it fails to install the functions, @value{GDBN} will issue a
c906108c 2276warning. This is currently defined if you configure using
56caf160 2277@samp{--with-mmalloc}.
c906108c
SS
2278
2279@item NO_SIGINTERRUPT
56caf160
EZ
2280@findex siginterrupt
2281Define this to indicate that @code{siginterrupt} is not available.
c906108c 2282
c906108c 2283@item SEEK_CUR
9742079a 2284@itemx SEEK_SET
56caf160 2285Define these to appropriate value for the system @code{lseek}, if not already
c906108c
SS
2286defined.
2287
2288@item STOP_SIGNAL
56caf160
EZ
2289This is the signal for stopping @value{GDBN}. Defaults to
2290@code{SIGTSTP}. (Only redefined for the Convex.)
c906108c
SS
2291
2292@item USE_O_NOCTTY
56caf160 2293Define this if the interior's tty should be opened with the @code{O_NOCTTY}
c906108c
SS
2294flag. (FIXME: This should be a native-only flag, but @file{inflow.c} is
2295always linked in.)
2296
2297@item USG
2298Means that System V (prior to SVR4) include files are in use. (FIXME:
7ca9f392
AC
2299This symbol is abused in @file{infrun.c}, @file{regex.c}, and
2300@file{utils.c} for other things, at the moment.)
c906108c
SS
2301
2302@item lint
56caf160 2303Define this to help placate @code{lint} in some situations.
c906108c
SS
2304
2305@item volatile
2306Define this to override the defaults of @code{__volatile__} or
2307@code{/**/}.
56caf160 2308@end ftable
c906108c
SS
2309
2310
2311@node Target Architecture Definition
2312
2313@chapter Target Architecture Definition
2314
56caf160
EZ
2315@cindex target architecture definition
2316@value{GDBN}'s target architecture defines what sort of
2317machine-language programs @value{GDBN} can work with, and how it works
2318with them.
c906108c 2319
af6c57ea
AC
2320The target architecture object is implemented as the C structure
2321@code{struct gdbarch *}. The structure, and its methods, are generated
93c2c750 2322using the Bourne shell script @file{gdbarch.sh}.
c906108c 2323
70f80edf
JT
2324@section Operating System ABI Variant Handling
2325@cindex OS ABI variants
2326
2327@value{GDBN} provides a mechanism for handling variations in OS
2328ABIs. An OS ABI variant may have influence over any number of
2329variables in the target architecture definition. There are two major
2330components in the OS ABI mechanism: sniffers and handlers.
2331
2332A @dfn{sniffer} examines a file matching a BFD architecture/flavour pair
2333(the architecture may be wildcarded) in an attempt to determine the
2334OS ABI of that file. Sniffers with a wildcarded architecture are considered
2335to be @dfn{generic}, while sniffers for a specific architecture are
2336considered to be @dfn{specific}. A match from a specific sniffer
2337overrides a match from a generic sniffer. Multiple sniffers for an
2338architecture/flavour may exist, in order to differentiate between two
2339different operating systems which use the same basic file format. The
2340OS ABI framework provides a generic sniffer for ELF-format files which
2341examines the @code{EI_OSABI} field of the ELF header, as well as note
2342sections known to be used by several operating systems.
2343
2344@cindex fine-tuning @code{gdbarch} structure
2345A @dfn{handler} is used to fine-tune the @code{gdbarch} structure for the
2346selected OS ABI. There may be only one handler for a given OS ABI
2347for each BFD architecture.
2348
2349The following OS ABI variants are defined in @file{osabi.h}:
2350
2351@table @code
2352
2353@findex GDB_OSABI_UNKNOWN
2354@item GDB_OSABI_UNKNOWN
2355The ABI of the inferior is unknown. The default @code{gdbarch}
2356settings for the architecture will be used.
2357
2358@findex GDB_OSABI_SVR4
2359@item GDB_OSABI_SVR4
2360UNIX System V Release 4
2361
2362@findex GDB_OSABI_HURD
2363@item GDB_OSABI_HURD
2364GNU using the Hurd kernel
2365
2366@findex GDB_OSABI_SOLARIS
2367@item GDB_OSABI_SOLARIS
2368Sun Solaris
2369
2370@findex GDB_OSABI_OSF1
2371@item GDB_OSABI_OSF1
2372OSF/1, including Digital UNIX and Compaq Tru64 UNIX
2373
2374@findex GDB_OSABI_LINUX
2375@item GDB_OSABI_LINUX
2376GNU using the Linux kernel
2377
2378@findex GDB_OSABI_FREEBSD_AOUT
2379@item GDB_OSABI_FREEBSD_AOUT
2380FreeBSD using the a.out executable format
2381
2382@findex GDB_OSABI_FREEBSD_ELF
2383@item GDB_OSABI_FREEBSD_ELF
2384FreeBSD using the ELF executable format
2385
2386@findex GDB_OSABI_NETBSD_AOUT
2387@item GDB_OSABI_NETBSD_AOUT
2388NetBSD using the a.out executable format
2389
2390@findex GDB_OSABI_NETBSD_ELF
2391@item GDB_OSABI_NETBSD_ELF
2392NetBSD using the ELF executable format
2393
2394@findex GDB_OSABI_WINCE
2395@item GDB_OSABI_WINCE
2396Windows CE
2397
1029b7fa
MK
2398@findex GDB_OSABI_GO32
2399@item GDB_OSABI_GO32
2400DJGPP
2401
2402@findex GDB_OSABI_NETWARE
2403@item GDB_OSABI_NETWARE
2404Novell NetWare
2405
70f80edf
JT
2406@findex GDB_OSABI_ARM_EABI_V1
2407@item GDB_OSABI_ARM_EABI_V1
2408ARM Embedded ABI version 1
2409
2410@findex GDB_OSABI_ARM_EABI_V2
2411@item GDB_OSABI_ARM_EABI_V2
2412ARM Embedded ABI version 2
2413
2414@findex GDB_OSABI_ARM_APCS
2415@item GDB_OSABI_ARM_APCS
2416Generic ARM Procedure Call Standard
2417
2418@end table
2419
2420Here are the functions that make up the OS ABI framework:
2421
2422@deftypefun const char *gdbarch_osabi_name (enum gdb_osabi @var{osabi})
2423Return the name of the OS ABI corresponding to @var{osabi}.
2424@end deftypefun
2425
c133ab7a 2426@deftypefun void gdbarch_register_osabi (enum bfd_architecture @var{arch}, unsigned long @var{machine}, enum gdb_osabi @var{osabi}, void (*@var{init_osabi})(struct gdbarch_info @var{info}, struct gdbarch *@var{gdbarch}))
70f80edf 2427Register the OS ABI handler specified by @var{init_osabi} for the
c133ab7a
MK
2428architecture, machine type and OS ABI specified by @var{arch},
2429@var{machine} and @var{osabi}. In most cases, a value of zero for the
2430machine type, which implies the architecture's default machine type,
2431will suffice.
70f80edf
JT
2432@end deftypefun
2433
2434@deftypefun void gdbarch_register_osabi_sniffer (enum bfd_architecture @var{arch}, enum bfd_flavour @var{flavour}, enum gdb_osabi (*@var{sniffer})(bfd *@var{abfd}))
2435Register the OS ABI file sniffer specified by @var{sniffer} for the
2436BFD architecture/flavour pair specified by @var{arch} and @var{flavour}.
2437If @var{arch} is @code{bfd_arch_unknown}, the sniffer is considered to
2438be generic, and is allowed to examine @var{flavour}-flavoured files for
2439any architecture.
2440@end deftypefun
2441
2442@deftypefun enum gdb_osabi gdbarch_lookup_osabi (bfd *@var{abfd})
2443Examine the file described by @var{abfd} to determine its OS ABI.
2444The value @code{GDB_OSABI_UNKNOWN} is returned if the OS ABI cannot
2445be determined.
2446@end deftypefun
2447
2448@deftypefun void gdbarch_init_osabi (struct gdbarch info @var{info}, struct gdbarch *@var{gdbarch}, enum gdb_osabi @var{osabi})
2449Invoke the OS ABI handler corresponding to @var{osabi} to fine-tune the
2450@code{gdbarch} structure specified by @var{gdbarch}. If a handler
2451corresponding to @var{osabi} has not been registered for @var{gdbarch}'s
2452architecture, a warning will be issued and the debugging session will continue
2453with the defaults already established for @var{gdbarch}.
2454@end deftypefun
2455
c906108c
SS
2456@section Registers and Memory
2457
56caf160
EZ
2458@value{GDBN}'s model of the target machine is rather simple.
2459@value{GDBN} assumes the machine includes a bank of registers and a
2460block of memory. Each register may have a different size.
c906108c 2461
56caf160
EZ
2462@value{GDBN} does not have a magical way to match up with the
2463compiler's idea of which registers are which; however, it is critical
2464that they do match up accurately. The only way to make this work is
2465to get accurate information about the order that the compiler uses,
2466and to reflect that in the @code{REGISTER_NAME} and related macros.
c906108c 2467
25822942 2468@value{GDBN} can handle big-endian, little-endian, and bi-endian architectures.
c906108c 2469
93e79dbd
JB
2470@section Pointers Are Not Always Addresses
2471@cindex pointer representation
2472@cindex address representation
2473@cindex word-addressed machines
2474@cindex separate data and code address spaces
2475@cindex spaces, separate data and code address
2476@cindex address spaces, separate data and code
2477@cindex code pointers, word-addressed
2478@cindex converting between pointers and addresses
2479@cindex D10V addresses
2480
2481On almost all 32-bit architectures, the representation of a pointer is
2482indistinguishable from the representation of some fixed-length number
2483whose value is the byte address of the object pointed to. On such
56caf160 2484machines, the words ``pointer'' and ``address'' can be used interchangeably.
93e79dbd
JB
2485However, architectures with smaller word sizes are often cramped for
2486address space, so they may choose a pointer representation that breaks this
2487identity, and allows a larger code address space.
2488
2489For example, the Mitsubishi D10V is a 16-bit VLIW processor whose
2490instructions are 32 bits long@footnote{Some D10V instructions are
2491actually pairs of 16-bit sub-instructions. However, since you can't
2492jump into the middle of such a pair, code addresses can only refer to
2493full 32 bit instructions, which is what matters in this explanation.}.
2494If the D10V used ordinary byte addresses to refer to code locations,
2495then the processor would only be able to address 64kb of instructions.
2496However, since instructions must be aligned on four-byte boundaries, the
56caf160
EZ
2497low two bits of any valid instruction's byte address are always
2498zero---byte addresses waste two bits. So instead of byte addresses,
2499the D10V uses word addresses---byte addresses shifted right two bits---to
93e79dbd
JB
2500refer to code. Thus, the D10V can use 16-bit words to address 256kb of
2501code space.
2502
2503However, this means that code pointers and data pointers have different
2504forms on the D10V. The 16-bit word @code{0xC020} refers to byte address
2505@code{0xC020} when used as a data address, but refers to byte address
2506@code{0x30080} when used as a code address.
2507
2508(The D10V also uses separate code and data address spaces, which also
2509affects the correspondence between pointers and addresses, but we're
2510going to ignore that here; this example is already too long.)
2511
56caf160
EZ
2512To cope with architectures like this---the D10V is not the only
2513one!---@value{GDBN} tries to distinguish between @dfn{addresses}, which are
93e79dbd
JB
2514byte numbers, and @dfn{pointers}, which are the target's representation
2515of an address of a particular type of data. In the example above,
2516@code{0xC020} is the pointer, which refers to one of the addresses
2517@code{0xC020} or @code{0x30080}, depending on the type imposed upon it.
2518@value{GDBN} provides functions for turning a pointer into an address
2519and vice versa, in the appropriate way for the current architecture.
2520
2521Unfortunately, since addresses and pointers are identical on almost all
2522processors, this distinction tends to bit-rot pretty quickly. Thus,
2523each time you port @value{GDBN} to an architecture which does
2524distinguish between pointers and addresses, you'll probably need to
2525clean up some architecture-independent code.
2526
2527Here are functions which convert between pointers and addresses:
2528
2529@deftypefun CORE_ADDR extract_typed_address (void *@var{buf}, struct type *@var{type})
2530Treat the bytes at @var{buf} as a pointer or reference of type
2531@var{type}, and return the address it represents, in a manner
2532appropriate for the current architecture. This yields an address
2533@value{GDBN} can use to read target memory, disassemble, etc. Note that
2534@var{buf} refers to a buffer in @value{GDBN}'s memory, not the
2535inferior's.
2536
2537For example, if the current architecture is the Intel x86, this function
2538extracts a little-endian integer of the appropriate length from
2539@var{buf} and returns it. However, if the current architecture is the
2540D10V, this function will return a 16-bit integer extracted from
2541@var{buf}, multiplied by four if @var{type} is a pointer to a function.
2542
2543If @var{type} is not a pointer or reference type, then this function
2544will signal an internal error.
2545@end deftypefun
2546
2547@deftypefun CORE_ADDR store_typed_address (void *@var{buf}, struct type *@var{type}, CORE_ADDR @var{addr})
2548Store the address @var{addr} in @var{buf}, in the proper format for a
2549pointer of type @var{type} in the current architecture. Note that
2550@var{buf} refers to a buffer in @value{GDBN}'s memory, not the
2551inferior's.
2552
2553For example, if the current architecture is the Intel x86, this function
2554stores @var{addr} unmodified as a little-endian integer of the
2555appropriate length in @var{buf}. However, if the current architecture
2556is the D10V, this function divides @var{addr} by four if @var{type} is
2557a pointer to a function, and then stores it in @var{buf}.
2558
2559If @var{type} is not a pointer or reference type, then this function
2560will signal an internal error.
2561@end deftypefun
2562
f23631e4 2563@deftypefun CORE_ADDR value_as_address (struct value *@var{val})
93e79dbd
JB
2564Assuming that @var{val} is a pointer, return the address it represents,
2565as appropriate for the current architecture.
2566
2567This function actually works on integral values, as well as pointers.
2568For pointers, it performs architecture-specific conversions as
2569described above for @code{extract_typed_address}.
2570@end deftypefun
2571
2572@deftypefun CORE_ADDR value_from_pointer (struct type *@var{type}, CORE_ADDR @var{addr})
2573Create and return a value representing a pointer of type @var{type} to
2574the address @var{addr}, as appropriate for the current architecture.
2575This function performs architecture-specific conversions as described
2576above for @code{store_typed_address}.
2577@end deftypefun
2578
2579
2580@value{GDBN} also provides functions that do the same tasks, but assume
2581that pointers are simply byte addresses; they aren't sensitive to the
2582current architecture, beyond knowing the appropriate endianness.
2583
2584@deftypefun CORE_ADDR extract_address (void *@var{addr}, int len)
2585Extract a @var{len}-byte number from @var{addr} in the appropriate
2586endianness for the current architecture, and return it. Note that
2587@var{addr} refers to @value{GDBN}'s memory, not the inferior's.
2588
2589This function should only be used in architecture-specific code; it
2590doesn't have enough information to turn bits into a true address in the
2591appropriate way for the current architecture. If you can, use
2592@code{extract_typed_address} instead.
2593@end deftypefun
2594
2595@deftypefun void store_address (void *@var{addr}, int @var{len}, LONGEST @var{val})
2596Store @var{val} at @var{addr} as a @var{len}-byte integer, in the
2597appropriate endianness for the current architecture. Note that
2598@var{addr} refers to a buffer in @value{GDBN}'s memory, not the
2599inferior's.
2600
2601This function should only be used in architecture-specific code; it
2602doesn't have enough information to turn a true address into bits in the
2603appropriate way for the current architecture. If you can, use
2604@code{store_typed_address} instead.
2605@end deftypefun
2606
2607
2608Here are some macros which architectures can define to indicate the
2609relationship between pointers and addresses. These have default
2610definitions, appropriate for architectures on which all pointers are
fc0c74b1 2611simple unsigned byte addresses.
93e79dbd
JB
2612
2613@deftypefn {Target Macro} CORE_ADDR POINTER_TO_ADDRESS (struct type *@var{type}, char *@var{buf})
2614Assume that @var{buf} holds a pointer of type @var{type}, in the
2615appropriate format for the current architecture. Return the byte
2616address the pointer refers to.
2617
2618This function may safely assume that @var{type} is either a pointer or a
56caf160 2619C@t{++} reference type.
93e79dbd
JB
2620@end deftypefn
2621
2622@deftypefn {Target Macro} void ADDRESS_TO_POINTER (struct type *@var{type}, char *@var{buf}, CORE_ADDR @var{addr})
2623Store in @var{buf} a pointer of type @var{type} representing the address
2624@var{addr}, in the appropriate format for the current architecture.
2625
2626This function may safely assume that @var{type} is either a pointer or a
56caf160 2627C@t{++} reference type.
93e79dbd
JB
2628@end deftypefn
2629
b5b0480a
KB
2630@section Address Classes
2631@cindex address classes
2632@cindex DW_AT_byte_size
2633@cindex DW_AT_address_class
2634
2635Sometimes information about different kinds of addresses is available
2636via the debug information. For example, some programming environments
2637define addresses of several different sizes. If the debug information
2638distinguishes these kinds of address classes through either the size
2639info (e.g, @code{DW_AT_byte_size} in @w{DWARF 2}) or through an explicit
2640address class attribute (e.g, @code{DW_AT_address_class} in @w{DWARF 2}), the
2641following macros should be defined in order to disambiguate these
2642types within @value{GDBN} as well as provide the added information to
2643a @value{GDBN} user when printing type expressions.
2644
2645@deftypefn {Target Macro} int ADDRESS_CLASS_TYPE_FLAGS (int @var{byte_size}, int @var{dwarf2_addr_class})
2646Returns the type flags needed to construct a pointer type whose size
2647is @var{byte_size} and whose address class is @var{dwarf2_addr_class}.
2648This function is normally called from within a symbol reader. See
2649@file{dwarf2read.c}.
2650@end deftypefn
2651
2652@deftypefn {Target Macro} char *ADDRESS_CLASS_TYPE_FLAGS_TO_NAME (int @var{type_flags})
2653Given the type flags representing an address class qualifier, return
2654its name.
2655@end deftypefn
2656@deftypefn {Target Macro} int ADDRESS_CLASS_NAME_to_TYPE_FLAGS (int @var{name}, int *var{type_flags_ptr})
2657Given an address qualifier name, set the @code{int} refererenced by @var{type_flags_ptr} to the type flags
2658for that address class qualifier.
2659@end deftypefn
2660
2661Since the need for address classes is rather rare, none of
2662the address class macros defined by default. Predicate
2663macros are provided to detect when they are defined.
2664
2665Consider a hypothetical architecture in which addresses are normally
266632-bits wide, but 16-bit addresses are also supported. Furthermore,
2667suppose that the @w{DWARF 2} information for this architecture simply
2668uses a @code{DW_AT_byte_size} value of 2 to indicate the use of one
2669of these "short" pointers. The following functions could be defined
2670to implement the address class macros:
2671
2672@smallexample
2673somearch_address_class_type_flags (int byte_size,
2674 int dwarf2_addr_class)
f2abfe65 2675@{
b5b0480a
KB
2676 if (byte_size == 2)
2677 return TYPE_FLAG_ADDRESS_CLASS_1;
2678 else
2679 return 0;
f2abfe65 2680@}
b5b0480a
KB
2681
2682static char *
2683somearch_address_class_type_flags_to_name (int type_flags)
f2abfe65 2684@{
b5b0480a
KB
2685 if (type_flags & TYPE_FLAG_ADDRESS_CLASS_1)
2686 return "short";
2687 else
2688 return NULL;
f2abfe65 2689@}
b5b0480a
KB
2690
2691int
2692somearch_address_class_name_to_type_flags (char *name,
2693 int *type_flags_ptr)
f2abfe65 2694@{
b5b0480a 2695 if (strcmp (name, "short") == 0)
f2abfe65 2696 @{
b5b0480a
KB
2697 *type_flags_ptr = TYPE_FLAG_ADDRESS_CLASS_1;
2698 return 1;
f2abfe65 2699 @}
b5b0480a
KB
2700 else
2701 return 0;
f2abfe65 2702@}
b5b0480a
KB
2703@end smallexample
2704
2705The qualifier @code{@@short} is used in @value{GDBN}'s type expressions
2706to indicate the presence of one of these "short" pointers. E.g, if
2707the debug information indicates that @code{short_ptr_var} is one of these
2708short pointers, @value{GDBN} might show the following behavior:
2709
2710@smallexample
2711(gdb) ptype short_ptr_var
2712type = int * @@short
2713@end smallexample
2714
93e79dbd 2715
13d01224
AC
2716@section Raw and Virtual Register Representations
2717@cindex raw register representation
2718@cindex virtual register representation
2719@cindex representations, raw and virtual registers
2720
2721@emph{Maintainer note: This section is pretty much obsolete. The
2722functionality described here has largely been replaced by
2723pseudo-registers and the mechanisms described in @ref{Target
2724Architecture Definition, , Using Different Register and Memory Data
2725Representations}. See also @uref{http://www.gnu.org/software/gdb/bugs/,
2726Bug Tracking Database} and
2727@uref{http://sources.redhat.com/gdb/current/ari/, ARI Index} for more
2728up-to-date information.}
af6c57ea 2729
9fb4dd36
JB
2730Some architectures use one representation for a value when it lives in a
2731register, but use a different representation when it lives in memory.
25822942 2732In @value{GDBN}'s terminology, the @dfn{raw} representation is the one used in
9fb4dd36 2733the target registers, and the @dfn{virtual} representation is the one
25822942 2734used in memory, and within @value{GDBN} @code{struct value} objects.
9fb4dd36 2735
13d01224
AC
2736@emph{Maintainer note: Notice that the same mechanism is being used to
2737both convert a register to a @code{struct value} and alternative
2738register forms.}
2739
9fb4dd36
JB
2740For almost all data types on almost all architectures, the virtual and
2741raw representations are identical, and no special handling is needed.
2742However, they do occasionally differ. For example:
2743
2744@itemize @bullet
9fb4dd36 2745@item
56caf160 2746The x86 architecture supports an 80-bit @code{long double} type. However, when
9fb4dd36
JB
2747we store those values in memory, they occupy twelve bytes: the
2748floating-point number occupies the first ten, and the final two bytes
2749are unused. This keeps the values aligned on four-byte boundaries,
2750allowing more efficient access. Thus, the x86 80-bit floating-point
2751type is the raw representation, and the twelve-byte loosely-packed
2752arrangement is the virtual representation.
2753
2754@item
25822942
DB
2755Some 64-bit MIPS targets present 32-bit registers to @value{GDBN} as 64-bit
2756registers, with garbage in their upper bits. @value{GDBN} ignores the top 32
9fb4dd36
JB
2757bits. Thus, the 64-bit form, with garbage in the upper 32 bits, is the
2758raw representation, and the trimmed 32-bit representation is the
2759virtual representation.
9fb4dd36
JB
2760@end itemize
2761
2762In general, the raw representation is determined by the architecture, or
25822942
DB
2763@value{GDBN}'s interface to the architecture, while the virtual representation
2764can be chosen for @value{GDBN}'s convenience. @value{GDBN}'s register file,
56caf160
EZ
2765@code{registers}, holds the register contents in raw format, and the
2766@value{GDBN} remote protocol transmits register values in raw format.
9fb4dd36 2767
56caf160
EZ
2768Your architecture may define the following macros to request
2769conversions between the raw and virtual format:
9fb4dd36
JB
2770
2771@deftypefn {Target Macro} int REGISTER_CONVERTIBLE (int @var{reg})
2772Return non-zero if register number @var{reg}'s value needs different raw
2773and virtual formats.
6f6ef15a
EZ
2774
2775You should not use @code{REGISTER_CONVERT_TO_VIRTUAL} for a register
2776unless this macro returns a non-zero value for that register.
9fb4dd36
JB
2777@end deftypefn
2778
2779@deftypefn {Target Macro} int REGISTER_RAW_SIZE (int @var{reg})
2780The size of register number @var{reg}'s raw value. This is the number
25822942 2781of bytes the register will occupy in @code{registers}, or in a @value{GDBN}
9fb4dd36
JB
2782remote protocol packet.
2783@end deftypefn
2784
2785@deftypefn {Target Macro} int REGISTER_VIRTUAL_SIZE (int @var{reg})
2786The size of register number @var{reg}'s value, in its virtual format.
2787This is the size a @code{struct value}'s buffer will have, holding that
2788register's value.
2789@end deftypefn
2790
2791@deftypefn {Target Macro} struct type *REGISTER_VIRTUAL_TYPE (int @var{reg})
2792This is the type of the virtual representation of register number
2793@var{reg}. Note that there is no need for a macro giving a type for the
25822942 2794register's raw form; once the register's value has been obtained, @value{GDBN}
9fb4dd36
JB
2795always uses the virtual form.
2796@end deftypefn
2797
2798@deftypefn {Target Macro} void REGISTER_CONVERT_TO_VIRTUAL (int @var{reg}, struct type *@var{type}, char *@var{from}, char *@var{to})
2799Convert the value of register number @var{reg} to @var{type}, which
2800should always be @code{REGISTER_VIRTUAL_TYPE (@var{reg})}. The buffer
2801at @var{from} holds the register's value in raw format; the macro should
2802convert the value to virtual format, and place it at @var{to}.
2803
6f6ef15a
EZ
2804Note that @code{REGISTER_CONVERT_TO_VIRTUAL} and
2805@code{REGISTER_CONVERT_TO_RAW} take their @var{reg} and @var{type}
2806arguments in different orders.
2807
2808You should only use @code{REGISTER_CONVERT_TO_VIRTUAL} with registers
2809for which the @code{REGISTER_CONVERTIBLE} macro returns a non-zero
2810value.
9fb4dd36
JB
2811@end deftypefn
2812
2813@deftypefn {Target Macro} void REGISTER_CONVERT_TO_RAW (struct type *@var{type}, int @var{reg}, char *@var{from}, char *@var{to})
2814Convert the value of register number @var{reg} to @var{type}, which
2815should always be @code{REGISTER_VIRTUAL_TYPE (@var{reg})}. The buffer
2816at @var{from} holds the register's value in raw format; the macro should
2817convert the value to virtual format, and place it at @var{to}.
2818
2819Note that REGISTER_CONVERT_TO_VIRTUAL and REGISTER_CONVERT_TO_RAW take
2820their @var{reg} and @var{type} arguments in different orders.
2821@end deftypefn
2822
2823
13d01224
AC
2824@section Using Different Register and Memory Data Representations
2825@cindex register representation
2826@cindex memory representation
2827@cindex representations, register and memory
2828@cindex register data formats, converting
2829@cindex @code{struct value}, converting register contents to
2830
2831@emph{Maintainer's note: The way GDB manipulates registers is undergoing
2832significant change. Many of the macros and functions refered to in this
2833section are likely to be subject to further revision. See
2834@uref{http://sources.redhat.com/gdb/current/ari/, A.R. Index} and
2835@uref{http://www.gnu.org/software/gdb/bugs, Bug Tracking Database} for
2836further information. cagney/2002-05-06.}
2837
2838Some architectures can represent a data object in a register using a
2839form that is different to the objects more normal memory representation.
2840For example:
2841
2842@itemize @bullet
2843
2844@item
2845The Alpha architecture can represent 32 bit integer values in
2846floating-point registers.
2847
2848@item
2849The x86 architecture supports 80-bit floating-point registers. The
2850@code{long double} data type occupies 96 bits in memory but only 80 bits
2851when stored in a register.
2852
2853@end itemize
2854
2855In general, the register representation of a data type is determined by
2856the architecture, or @value{GDBN}'s interface to the architecture, while
2857the memory representation is determined by the Application Binary
2858Interface.
2859
2860For almost all data types on almost all architectures, the two
2861representations are identical, and no special handling is needed.
2862However, they do occasionally differ. Your architecture may define the
2863following macros to request conversions between the register and memory
2864representations of a data type:
2865
2866@deftypefn {Target Macro} int CONVERT_REGISTER_P (int @var{reg})
2867Return non-zero if the representation of a data value stored in this
2868register may be different to the representation of that same data value
2869when stored in memory.
2870
2871When non-zero, the macros @code{REGISTER_TO_VALUE} and
2872@code{VALUE_TO_REGISTER} are used to perform any necessary conversion.
2873@end deftypefn
2874
2875@deftypefn {Target Macro} void REGISTER_TO_VALUE (int @var{reg}, struct type *@var{type}, char *@var{from}, char *@var{to})
2876Convert the value of register number @var{reg} to a data object of type
2877@var{type}. The buffer at @var{from} holds the register's value in raw
2878format; the converted value should be placed in the buffer at @var{to}.
2879
2880Note that @code{REGISTER_TO_VALUE} and @code{VALUE_TO_REGISTER} take
2881their @var{reg} and @var{type} arguments in different orders.
2882
2883You should only use @code{REGISTER_TO_VALUE} with registers for which
2884the @code{CONVERT_REGISTER_P} macro returns a non-zero value.
2885@end deftypefn
2886
2887@deftypefn {Target Macro} void VALUE_TO_REGISTER (struct type *@var{type}, int @var{reg}, char *@var{from}, char *@var{to})
2888Convert a data value of type @var{type} to register number @var{reg}'
2889raw format.
2890
2891Note that @code{REGISTER_TO_VALUE} and @code{VALUE_TO_REGISTER} take
2892their @var{reg} and @var{type} arguments in different orders.
2893
2894You should only use @code{VALUE_TO_REGISTER} with registers for which
2895the @code{CONVERT_REGISTER_P} macro returns a non-zero value.
2896@end deftypefn
2897
2898@deftypefn {Target Macro} void REGISTER_CONVERT_TO_TYPE (int @var{regnum}, struct type *@var{type}, char *@var{buf})
2899See @file{mips-tdep.c}. It does not do what you want.
2900@end deftypefn
2901
2902
c906108c
SS
2903@section Frame Interpretation
2904
2905@section Inferior Call Setup
2906
2907@section Compiler Characteristics
2908
2909@section Target Conditionals
2910
2911This section describes the macros that you can use to define the target
2912machine.
2913
2914@table @code
2915
c906108c 2916@item ADDR_BITS_REMOVE (addr)
56caf160 2917@findex ADDR_BITS_REMOVE
adf40b2e
JM
2918If a raw machine instruction address includes any bits that are not
2919really part of the address, then define this macro to expand into an
56caf160 2920expression that zeroes those bits in @var{addr}. This is only used for
adf40b2e
JM
2921addresses of instructions, and even then not in all contexts.
2922
2923For example, the two low-order bits of the PC on the Hewlett-Packard PA
29242.0 architecture contain the privilege level of the corresponding
2925instruction. Since instructions must always be aligned on four-byte
2926boundaries, the processor masks out these bits to generate the actual
2927address of the instruction. ADDR_BITS_REMOVE should filter out these
2928bits with an expression such as @code{((addr) & ~3)}.
c906108c 2929
b5b0480a
KB
2930@item ADDRESS_CLASS_NAME_TO_TYPE_FLAGS (@var{name}, @var{type_flags_ptr})
2931@findex ADDRESS_CLASS_NAME_TO_TYPE_FLAGS
2932If @var{name} is a valid address class qualifier name, set the @code{int}
2933referenced by @var{type_flags_ptr} to the mask representing the qualifier
2934and return 1. If @var{name} is not a valid address class qualifier name,
2935return 0.
2936
2937The value for @var{type_flags_ptr} should be one of
2938@code{TYPE_FLAG_ADDRESS_CLASS_1}, @code{TYPE_FLAG_ADDRESS_CLASS_2}, or
2939possibly some combination of these values or'd together.
2940@xref{Target Architecture Definition, , Address Classes}.
2941
2942@item ADDRESS_CLASS_NAME_TO_TYPE_FLAGS_P ()
2943@findex ADDRESS_CLASS_NAME_TO_TYPE_FLAGS_P
2944Predicate which indicates whether @code{ADDRESS_CLASS_NAME_TO_TYPE_FLAGS}
2945has been defined.
2946
2947@item ADDRESS_CLASS_TYPE_FLAGS (@var{byte_size}, @var{dwarf2_addr_class})
2948@findex ADDRESS_CLASS_TYPE_FLAGS (@var{byte_size}, @var{dwarf2_addr_class})
2949Given a pointers byte size (as described by the debug information) and
2950the possible @code{DW_AT_address_class} value, return the type flags
2951used by @value{GDBN} to represent this address class. The value
2952returned should be one of @code{TYPE_FLAG_ADDRESS_CLASS_1},
2953@code{TYPE_FLAG_ADDRESS_CLASS_2}, or possibly some combination of these
2954values or'd together.
2955@xref{Target Architecture Definition, , Address Classes}.
2956
2957@item ADDRESS_CLASS_TYPE_FLAGS_P ()
2958@findex ADDRESS_CLASS_TYPE_FLAGS_P
2959Predicate which indicates whether @code{ADDRESS_CLASS_TYPE_FLAGS} has
2960been defined.
2961
2962@item ADDRESS_CLASS_TYPE_FLAGS_TO_NAME (@var{type_flags})
2963@findex ADDRESS_CLASS_TYPE_FLAGS_TO_NAME
2964Return the name of the address class qualifier associated with the type
2965flags given by @var{type_flags}.
2966
2967@item ADDRESS_CLASS_TYPE_FLAGS_TO_NAME_P ()
2968@findex ADDRESS_CLASS_TYPE_FLAGS_TO_NAME_P
2969Predicate which indicates whether @code{ADDRESS_CLASS_TYPE_FLAGS_TO_NAME} has
2970been defined.
2971@xref{Target Architecture Definition, , Address Classes}.
2972
93e79dbd 2973@item ADDRESS_TO_POINTER (@var{type}, @var{buf}, @var{addr})
56caf160 2974@findex ADDRESS_TO_POINTER
93e79dbd
JB
2975Store in @var{buf} a pointer of type @var{type} representing the address
2976@var{addr}, in the appropriate format for the current architecture.
2977This macro may safely assume that @var{type} is either a pointer or a
56caf160 2978C@t{++} reference type.
93e79dbd
JB
2979@xref{Target Architecture Definition, , Pointers Are Not Always Addresses}.
2980
c906108c 2981@item BELIEVE_PCC_PROMOTION
56caf160
EZ
2982@findex BELIEVE_PCC_PROMOTION
2983Define if the compiler promotes a @code{short} or @code{char}
2984parameter to an @code{int}, but still reports the parameter as its
2985original type, rather than the promoted type.
c906108c
SS
2986
2987@item BELIEVE_PCC_PROMOTION_TYPE
56caf160
EZ
2988@findex BELIEVE_PCC_PROMOTION_TYPE
2989Define this if @value{GDBN} should believe the type of a @code{short}
2990argument when compiled by @code{pcc}, but look within a full int space to get
2991its value. Only defined for Sun-3 at present.
c906108c
SS
2992
2993@item BITS_BIG_ENDIAN
56caf160
EZ
2994@findex BITS_BIG_ENDIAN
2995Define this if the numbering of bits in the targets does @strong{not} match the
c906108c 2996endianness of the target byte order. A value of 1 means that the bits
56caf160 2997are numbered in a big-endian bit order, 0 means little-endian.
c906108c
SS
2998
2999@item BREAKPOINT
56caf160 3000@findex BREAKPOINT
c906108c
SS
3001This is the character array initializer for the bit pattern to put into
3002memory where a breakpoint is set. Although it's common to use a trap
3003instruction for a breakpoint, it's not required; for instance, the bit
3004pattern could be an invalid instruction. The breakpoint must be no
3005longer than the shortest instruction of the architecture.
3006
56caf160
EZ
3007@code{BREAKPOINT} has been deprecated in favor of
3008@code{BREAKPOINT_FROM_PC}.
7a292a7a 3009
c906108c 3010@item BIG_BREAKPOINT
56caf160
EZ
3011@itemx LITTLE_BREAKPOINT
3012@findex LITTLE_BREAKPOINT
3013@findex BIG_BREAKPOINT
c906108c
SS
3014Similar to BREAKPOINT, but used for bi-endian targets.
3015
56caf160
EZ
3016@code{BIG_BREAKPOINT} and @code{LITTLE_BREAKPOINT} have been deprecated in
3017favor of @code{BREAKPOINT_FROM_PC}.
7a292a7a 3018
c906108c 3019@item REMOTE_BREAKPOINT
56caf160
EZ
3020@itemx LITTLE_REMOTE_BREAKPOINT
3021@itemx BIG_REMOTE_BREAKPOINT
3022@findex BIG_REMOTE_BREAKPOINT
3023@findex LITTLE_REMOTE_BREAKPOINT
3024@findex REMOTE_BREAKPOINT
c906108c
SS
3025Similar to BREAKPOINT, but used for remote targets.
3026
56caf160
EZ
3027@code{BIG_REMOTE_BREAKPOINT} and @code{LITTLE_REMOTE_BREAKPOINT} have been
3028deprecated in favor of @code{BREAKPOINT_FROM_PC}.
c906108c 3029
56caf160
EZ
3030@item BREAKPOINT_FROM_PC (@var{pcptr}, @var{lenptr})
3031@findex BREAKPOINT_FROM_PC
c906108c 3032Use the program counter to determine the contents and size of a
56caf160
EZ
3033breakpoint instruction. It returns a pointer to a string of bytes
3034that encode a breakpoint instruction, stores the length of the string
3035to *@var{lenptr}, and adjusts pc (if necessary) to point to the actual
3036memory location where the breakpoint should be inserted.
c906108c
SS
3037
3038Although it is common to use a trap instruction for a breakpoint, it's
3039not required; for instance, the bit pattern could be an invalid
3040instruction. The breakpoint must be no longer than the shortest
3041instruction of the architecture.
3042
7a292a7a
SS
3043Replaces all the other @var{BREAKPOINT} macros.
3044
56caf160
EZ
3045@item MEMORY_INSERT_BREAKPOINT (@var{addr}, @var{contents_cache})
3046@itemx MEMORY_REMOVE_BREAKPOINT (@var{addr}, @var{contents_cache})
3047@findex MEMORY_REMOVE_BREAKPOINT
3048@findex MEMORY_INSERT_BREAKPOINT
917317f4
JM
3049Insert or remove memory based breakpoints. Reasonable defaults
3050(@code{default_memory_insert_breakpoint} and
3051@code{default_memory_remove_breakpoint} respectively) have been
3052provided so that it is not necessary to define these for most
3053architectures. Architectures which may want to define
56caf160 3054@code{MEMORY_INSERT_BREAKPOINT} and @code{MEMORY_REMOVE_BREAKPOINT} will
917317f4
JM
3055likely have instructions that are oddly sized or are not stored in a
3056conventional manner.
3057
3058It may also be desirable (from an efficiency standpoint) to define
3059custom breakpoint insertion and removal routines if
56caf160 3060@code{BREAKPOINT_FROM_PC} needs to read the target's memory for some
917317f4
JM
3061reason.
3062
7a292a7a 3063@item CALL_DUMMY_P
56caf160 3064@findex CALL_DUMMY_P
937f164b 3065A C expression that is non-zero when the target supports inferior function
7a292a7a
SS
3066calls.
3067
3068@item CALL_DUMMY_WORDS
56caf160
EZ
3069@findex CALL_DUMMY_WORDS
3070Pointer to an array of @code{LONGEST} words of data containing
3071host-byte-ordered @code{REGISTER_BYTES} sized values that partially
7a292a7a
SS
3072specify the sequence of instructions needed for an inferior function
3073call.
3074
56caf160 3075Should be deprecated in favor of a macro that uses target-byte-ordered
7a292a7a
SS
3076data.
3077
3078@item SIZEOF_CALL_DUMMY_WORDS
56caf160
EZ
3079@findex SIZEOF_CALL_DUMMY_WORDS
3080The size of @code{CALL_DUMMY_WORDS}. When @code{CALL_DUMMY_P} this must
3081return a positive value. See also @code{CALL_DUMMY_LENGTH}.
c906108c
SS
3082
3083@item CALL_DUMMY
56caf160
EZ
3084@findex CALL_DUMMY
3085A static initializer for @code{CALL_DUMMY_WORDS}. Deprecated.
7a292a7a 3086
c906108c 3087@item CALL_DUMMY_LOCATION
56caf160
EZ
3088@findex CALL_DUMMY_LOCATION
3089See the file @file{inferior.h}.
7a292a7a 3090
c906108c 3091@item CALL_DUMMY_STACK_ADJUST
56caf160 3092@findex CALL_DUMMY_STACK_ADJUST
7a292a7a
SS
3093Stack adjustment needed when performing an inferior function call.
3094
56caf160 3095Should be deprecated in favor of something like @code{STACK_ALIGN}.
7a292a7a
SS
3096
3097@item CALL_DUMMY_STACK_ADJUST_P
56caf160
EZ
3098@findex CALL_DUMMY_STACK_ADJUST_P
3099Predicate for use of @code{CALL_DUMMY_STACK_ADJUST}.
7a292a7a 3100
56caf160 3101Should be deprecated in favor of something like @code{STACK_ALIGN}.
c906108c 3102
56caf160
EZ
3103@item CANNOT_FETCH_REGISTER (@var{regno})
3104@findex CANNOT_FETCH_REGISTER
c906108c
SS
3105A C expression that should be nonzero if @var{regno} cannot be fetched
3106from an inferior process. This is only relevant if
3107@code{FETCH_INFERIOR_REGISTERS} is not defined.
3108
56caf160
EZ
3109@item CANNOT_STORE_REGISTER (@var{regno})
3110@findex CANNOT_STORE_REGISTER
c906108c
SS
3111A C expression that should be nonzero if @var{regno} should not be
3112written to the target. This is often the case for program counters,
56caf160
EZ
3113status words, and other special registers. If this is not defined,
3114@value{GDBN} will assume that all registers may be written.
c906108c
SS
3115
3116@item DO_DEFERRED_STORES
a5d7c491 3117@itemx CLEAR_DEFERRED_STORES
56caf160
EZ
3118@findex CLEAR_DEFERRED_STORES
3119@findex DO_DEFERRED_STORES
c906108c
SS
3120Define this to execute any deferred stores of registers into the inferior,
3121and to cancel any deferred stores.
3122
3123Currently only implemented correctly for native Sparc configurations?
3124
13d01224
AC
3125@item int CONVERT_REGISTER_P(@var{regnum})
3126@findex CONVERT_REGISTER_P
3127Return non-zero if register @var{regnum} can represent data values in a
3128non-standard form.
3129@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
3130
c906108c 3131@item DECR_PC_AFTER_BREAK
56caf160 3132@findex DECR_PC_AFTER_BREAK
c906108c
SS
3133Define this to be the amount by which to decrement the PC after the
3134program encounters a breakpoint. This is often the number of bytes in
56caf160 3135@code{BREAKPOINT}, though not always. For most targets this value will be 0.
c906108c
SS
3136
3137@item DECR_PC_AFTER_HW_BREAK
56caf160 3138@findex DECR_PC_AFTER_HW_BREAK
c906108c
SS
3139Similarly, for hardware breakpoints.
3140
56caf160
EZ
3141@item DISABLE_UNSETTABLE_BREAK (@var{addr})
3142@findex DISABLE_UNSETTABLE_BREAK
c906108c
SS
3143If defined, this should evaluate to 1 if @var{addr} is in a shared
3144library in which breakpoints cannot be set and so should be disabled.
3145
5e74b15c 3146@item PRINT_FLOAT_INFO()
0ab7a791 3147@findex PRINT_FLOAT_INFO
5e74b15c
RE
3148If defined, then the @samp{info float} command will print information about
3149the processor's floating point unit.
3150
0ab7a791
AC
3151@item print_registers_info (@var{gdbarch}, @var{frame}, @var{regnum}, @var{all})
3152@findex print_registers_info
3153If defined, pretty print the value of the register @var{regnum} for the
3154specified @var{frame}. If the value of @var{regnum} is -1, pretty print
3155either all registers (@var{all} is non zero) or a select subset of
3156registers (@var{all} is zero).
3157
3158The default method prints one register per line, and if @var{all} is
3159zero omits floating-point registers.
3160
e76f1f2e
AC
3161@item PRINT_VECTOR_INFO()
3162@findex PRINT_VECTOR_INFO
3163If defined, then the @samp{info vector} command will call this function
3164to print information about the processor's vector unit.
3165
3166By default, the @samp{info vector} command will print all vector
3167registers (the register's type having the vector attribute).
3168
0dcedd82 3169@item DWARF_REG_TO_REGNUM
56caf160 3170@findex DWARF_REG_TO_REGNUM
0dcedd82
AC
3171Convert DWARF register number into @value{GDBN} regnum. If not defined,
3172no conversion will be performed.
3173
3174@item DWARF2_REG_TO_REGNUM
56caf160 3175@findex DWARF2_REG_TO_REGNUM
0dcedd82
AC
3176Convert DWARF2 register number into @value{GDBN} regnum. If not
3177defined, no conversion will be performed.
3178
3179@item ECOFF_REG_TO_REGNUM
56caf160 3180@findex ECOFF_REG_TO_REGNUM
0dcedd82
AC
3181Convert ECOFF register number into @value{GDBN} regnum. If not defined,
3182no conversion will be performed.
3183
c906108c 3184@item END_OF_TEXT_DEFAULT
56caf160
EZ
3185@findex END_OF_TEXT_DEFAULT
3186This is an expression that should designate the end of the text section.
3187@c (? FIXME ?)
c906108c 3188
56caf160
EZ
3189@item EXTRACT_RETURN_VALUE(@var{type}, @var{regbuf}, @var{valbuf})
3190@findex EXTRACT_RETURN_VALUE
c906108c
SS
3191Define this to extract a function's return value of type @var{type} from
3192the raw register state @var{regbuf} and copy that, in virtual format,
3193into @var{valbuf}.
3194
56caf160
EZ
3195@item EXTRACT_STRUCT_VALUE_ADDRESS(@var{regbuf})
3196@findex EXTRACT_STRUCT_VALUE_ADDRESS
83aa8bc6
AC
3197When defined, extract from the array @var{regbuf} (containing the raw
3198register state) the @code{CORE_ADDR} at which a function should return
3199its structure value.
ac9a91a7 3200
83aa8bc6
AC
3201If not defined, @code{EXTRACT_RETURN_VALUE} is used.
3202
3203@item EXTRACT_STRUCT_VALUE_ADDRESS_P()
56caf160
EZ
3204@findex EXTRACT_STRUCT_VALUE_ADDRESS_P
3205Predicate for @code{EXTRACT_STRUCT_VALUE_ADDRESS}.
c906108c 3206
c906108c 3207@item FP_REGNUM
56caf160 3208@findex FP_REGNUM
cce74817
JM
3209If the virtual frame pointer is kept in a register, then define this
3210macro to be the number (greater than or equal to zero) of that register.
3211
8227c0ff
AC
3212This should only need to be defined if @code{TARGET_READ_FP} is not
3213defined.
c906108c 3214
56caf160
EZ
3215@item FRAMELESS_FUNCTION_INVOCATION(@var{fi})
3216@findex FRAMELESS_FUNCTION_INVOCATION
392a587b
JM
3217Define this to an expression that returns 1 if the function invocation
3218represented by @var{fi} does not have a stack frame associated with it.
3219Otherwise return 0.
c906108c 3220
790eb8f5
AC
3221@item frame_align (@var{address})
3222@anchor{frame_align}
3223@findex frame_align
3224Define this to adjust @var{address} so that it meets the alignment
3225requirements for the start of a new stack frame. A stack frame's
3226alignment requirements are typically stronger than a target processors
3227stack alignment requirements (@pxref{STACK_ALIGN}).
3228
3229This function is used to ensure that, when creating a dummy frame, both
3230the initial stack pointer and (if needed) the address of the return
3231value are correctly aligned.
3232
3233Unlike @code{STACK_ALIGN}, this function always adjusts the address in
3234the direction of stack growth.
3235
3236By default, no frame based stack alignment is performed.
3237
a5d7c491 3238@item FRAME_ARGS_ADDRESS_CORRECT
56caf160
EZ
3239@findex FRAME_ARGS_ADDRESS_CORRECT
3240See @file{stack.c}.
c906108c 3241
56caf160
EZ
3242@item FRAME_CHAIN(@var{frame})
3243@findex FRAME_CHAIN
c906108c
SS
3244Given @var{frame}, return a pointer to the calling frame.
3245
56caf160
EZ
3246@item FRAME_CHAIN_VALID(@var{chain}, @var{thisframe})
3247@findex FRAME_CHAIN_VALID
95f90d25
DJ
3248Define this to be an expression that returns zero if the given frame is an
3249outermost frame, with no caller, and nonzero otherwise. Most normal
3250situations can be handled without defining this macro, including @code{NULL}
3251chain pointers, dummy frames, and frames whose PC values are inside the
3252startup file (e.g.@: @file{crt0.o}), inside @code{main}, or inside
3253@code{_start}.
c906108c 3254
f30ee0bc
AC
3255@item DEPRECATED_FRAME_INIT_SAVED_REGS(@var{frame})
3256@findex DEPRECATED_FRAME_INIT_SAVED_REGS
c906108c
SS
3257See @file{frame.h}. Determines the address of all registers in the
3258current stack frame storing each in @code{frame->saved_regs}. Space for
3259@code{frame->saved_regs} shall be allocated by
f30ee0bc
AC
3260@code{DEPRECATED_FRAME_INIT_SAVED_REGS} using
3261@code{frame_saved_regs_zalloc}.
c906108c 3262
56caf160 3263@code{FRAME_FIND_SAVED_REGS} and @code{EXTRA_FRAME_INFO} are deprecated.
c906108c 3264
56caf160
EZ
3265@item FRAME_NUM_ARGS (@var{fi})
3266@findex FRAME_NUM_ARGS
392a587b
JM
3267For the frame described by @var{fi} return the number of arguments that
3268are being passed. If the number of arguments is not known, return
3269@code{-1}.
c906108c 3270
56caf160
EZ
3271@item FRAME_SAVED_PC(@var{frame})
3272@findex FRAME_SAVED_PC
3273Given @var{frame}, return the pc saved there. This is the return
c906108c
SS
3274address.
3275
3276@item FUNCTION_EPILOGUE_SIZE
56caf160 3277@findex FUNCTION_EPILOGUE_SIZE
c906108c
SS
3278For some COFF targets, the @code{x_sym.x_misc.x_fsize} field of the
3279function end symbol is 0. For such targets, you must define
3280@code{FUNCTION_EPILOGUE_SIZE} to expand into the standard size of a
3281function's epilogue.
3282
f7cb2b90 3283@item FUNCTION_START_OFFSET
56caf160 3284@findex FUNCTION_START_OFFSET
f7cb2b90
JB
3285An integer, giving the offset in bytes from a function's address (as
3286used in the values of symbols, function pointers, etc.), and the
3287function's first genuine instruction.
3288
3289This is zero on almost all machines: the function's address is usually
3290the address of its first instruction. However, on the VAX, for example,
3291each function starts with two bytes containing a bitmask indicating
3292which registers to save upon entry to the function. The VAX @code{call}
3293instructions check this value, and save the appropriate registers
3294automatically. Thus, since the offset from the function's address to
3295its first instruction is two bytes, @code{FUNCTION_START_OFFSET} would
3296be 2 on the VAX.
3297
c906108c 3298@item GCC_COMPILED_FLAG_SYMBOL
56caf160
EZ
3299@itemx GCC2_COMPILED_FLAG_SYMBOL
3300@findex GCC2_COMPILED_FLAG_SYMBOL
3301@findex GCC_COMPILED_FLAG_SYMBOL
3302If defined, these are the names of the symbols that @value{GDBN} will
3303look for to detect that GCC compiled the file. The default symbols
3304are @code{gcc_compiled.} and @code{gcc2_compiled.},
3305respectively. (Currently only defined for the Delta 68.)
c906108c 3306
25822942 3307@item @value{GDBN}_MULTI_ARCH
56caf160 3308@findex @value{GDBN}_MULTI_ARCH
937f164b 3309If defined and non-zero, enables support for multiple architectures
25822942 3310within @value{GDBN}.
0f71a2f6 3311
56caf160 3312This support can be enabled at two levels. At level one, only
0f71a2f6 3313definitions for previously undefined macros are provided; at level two,
937f164b 3314a multi-arch definition of all architecture dependent macros will be
0f71a2f6
JM
3315defined.
3316
25822942 3317@item @value{GDBN}_TARGET_IS_HPPA
56caf160
EZ
3318@findex @value{GDBN}_TARGET_IS_HPPA
3319This determines whether horrible kludge code in @file{dbxread.c} and
3320@file{partial-stab.h} is used to mangle multiple-symbol-table files from
3321HPPA's. This should all be ripped out, and a scheme like @file{elfread.c}
3322used instead.
c906108c 3323
c906108c 3324@item GET_LONGJMP_TARGET
56caf160 3325@findex GET_LONGJMP_TARGET
c906108c
SS
3326For most machines, this is a target-dependent parameter. On the
3327DECstation and the Iris, this is a native-dependent parameter, since
937f164b 3328the header file @file{setjmp.h} is needed to define it.
c906108c 3329
56caf160
EZ
3330This macro determines the target PC address that @code{longjmp} will jump to,
3331assuming that we have just stopped at a @code{longjmp} breakpoint. It takes a
3332@code{CORE_ADDR *} as argument, and stores the target PC value through this
c906108c
SS
3333pointer. It examines the current state of the machine as needed.
3334
3335@item GET_SAVED_REGISTER
56caf160
EZ
3336@findex GET_SAVED_REGISTER
3337@findex get_saved_register
c906108c 3338Define this if you need to supply your own definition for the function
7a292a7a 3339@code{get_saved_register}.
c906108c 3340
c906108c 3341@item IBM6000_TARGET
56caf160 3342@findex IBM6000_TARGET
c906108c
SS
3343Shows that we are configured for an IBM RS/6000 target. This
3344conditional should be eliminated (FIXME) and replaced by
56caf160 3345feature-specific macros. It was introduced in a haste and we are
c906108c
SS
3346repenting at leisure.
3347
9742079a
EZ
3348@item I386_USE_GENERIC_WATCHPOINTS
3349An x86-based target can define this to use the generic x86 watchpoint
3350support; see @ref{Algorithms, I386_USE_GENERIC_WATCHPOINTS}.
3351
2df3850c 3352@item SYMBOLS_CAN_START_WITH_DOLLAR
56caf160 3353@findex SYMBOLS_CAN_START_WITH_DOLLAR
2df3850c 3354Some systems have routines whose names start with @samp{$}. Giving this
25822942 3355macro a non-zero value tells @value{GDBN}'s expression parser to check for such
2df3850c
JM
3356routines when parsing tokens that begin with @samp{$}.
3357
3358On HP-UX, certain system routines (millicode) have names beginning with
3359@samp{$} or @samp{$$}. For example, @code{$$dyncall} is a millicode
3360routine that handles inter-space procedure calls on PA-RISC.
3361
e9582e71
AC
3362@item DEPRECATED_INIT_EXTRA_FRAME_INFO (@var{fromleaf}, @var{frame})
3363@findex DEPRECATED_INIT_EXTRA_FRAME_INFO
c906108c
SS
3364If additional information about the frame is required this should be
3365stored in @code{frame->extra_info}. Space for @code{frame->extra_info}
372613e3 3366is allocated using @code{frame_extra_info_zalloc}.
c906108c 3367
a5afb99f
AC
3368@item DEPRECATED_INIT_FRAME_PC (@var{fromleaf}, @var{prev})
3369@findex DEPRECATED_INIT_FRAME_PC
c906108c
SS
3370This is a C statement that sets the pc of the frame pointed to by
3371@var{prev}. [By default...]
3372
56caf160
EZ
3373@item INNER_THAN (@var{lhs}, @var{rhs})
3374@findex INNER_THAN
c906108c
SS
3375Returns non-zero if stack address @var{lhs} is inner than (nearer to the
3376stack top) stack address @var{rhs}. Define this as @code{lhs < rhs} if
3377the target's stack grows downward in memory, or @code{lhs > rsh} if the
3378stack grows upward.
3379
9e5abb06
CV
3380@item gdbarch_in_function_epilogue_p (@var{gdbarch}, @var{pc})
3381@findex gdbarch_in_function_epilogue_p
3382Returns non-zero if the given @var{pc} is in the epilogue of a function.
3383The epilogue of a function is defined as the part of a function where
3384the stack frame of the function already has been destroyed up to the
3385final `return from function call' instruction.
3386
56caf160
EZ
3387@item SIGTRAMP_START (@var{pc})
3388@findex SIGTRAMP_START
3389@itemx SIGTRAMP_END (@var{pc})
3390@findex SIGTRAMP_END
3391Define these to be the start and end address of the @code{sigtramp} for the
c906108c
SS
3392given @var{pc}. On machines where the address is just a compile time
3393constant, the macro expansion will typically just ignore the supplied
3394@var{pc}.
3395
56caf160
EZ
3396@item IN_SOLIB_CALL_TRAMPOLINE (@var{pc}, @var{name})
3397@findex IN_SOLIB_CALL_TRAMPOLINE
c906108c
SS
3398Define this to evaluate to nonzero if the program is stopped in the
3399trampoline that connects to a shared library.
3400
56caf160
EZ
3401@item IN_SOLIB_RETURN_TRAMPOLINE (@var{pc}, @var{name})
3402@findex IN_SOLIB_RETURN_TRAMPOLINE
c906108c
SS
3403Define this to evaluate to nonzero if the program is stopped in the
3404trampoline that returns from a shared library.
3405
56caf160
EZ
3406@item IN_SOLIB_DYNSYM_RESOLVE_CODE (@var{pc})
3407@findex IN_SOLIB_DYNSYM_RESOLVE_CODE
d4f3574e
SS
3408Define this to evaluate to nonzero if the program is stopped in the
3409dynamic linker.
3410
56caf160
EZ
3411@item SKIP_SOLIB_RESOLVER (@var{pc})
3412@findex SKIP_SOLIB_RESOLVER
d4f3574e
SS
3413Define this to evaluate to the (nonzero) address at which execution
3414should continue to get past the dynamic linker's symbol resolution
3415function. A zero value indicates that it is not important or necessary
3416to set a breakpoint to get through the dynamic linker and that single
3417stepping will suffice.
3418
fc0c74b1
AC
3419@item INTEGER_TO_ADDRESS (@var{type}, @var{buf})
3420@findex INTEGER_TO_ADDRESS
3421@cindex converting integers to addresses
3422Define this when the architecture needs to handle non-pointer to address
3423conversions specially. Converts that value to an address according to
3424the current architectures conventions.
3425
3426@emph{Pragmatics: When the user copies a well defined expression from
3427their source code and passes it, as a parameter, to @value{GDBN}'s
3428@code{print} command, they should get the same value as would have been
3429computed by the target program. Any deviation from this rule can cause
3430major confusion and annoyance, and needs to be justified carefully. In
3431other words, @value{GDBN} doesn't really have the freedom to do these
3432conversions in clever and useful ways. It has, however, been pointed
3433out that users aren't complaining about how @value{GDBN} casts integers
3434to pointers; they are complaining that they can't take an address from a
3435disassembly listing and give it to @code{x/i}. Adding an architecture
3436method like @code{INTEGER_TO_ADDRESS} certainly makes it possible for
3437@value{GDBN} to ``get it right'' in all circumstances.}
3438
3439@xref{Target Architecture Definition, , Pointers Are Not Always
3440Addresses}.
3441
c906108c 3442@item NEED_TEXT_START_END
56caf160 3443@findex NEED_TEXT_START_END
25822942 3444Define this if @value{GDBN} should determine the start and end addresses of the
c906108c
SS
3445text section. (Seems dubious.)
3446
3447@item NO_HIF_SUPPORT
56caf160 3448@findex NO_HIF_SUPPORT
c906108c
SS
3449(Specific to the a29k.)
3450
93e79dbd 3451@item POINTER_TO_ADDRESS (@var{type}, @var{buf})
56caf160 3452@findex POINTER_TO_ADDRESS
93e79dbd
JB
3453Assume that @var{buf} holds a pointer of type @var{type}, in the
3454appropriate format for the current architecture. Return the byte
3455address the pointer refers to.
3456@xref{Target Architecture Definition, , Pointers Are Not Always Addresses}.
3457
9fb4dd36 3458@item REGISTER_CONVERTIBLE (@var{reg})
56caf160 3459@findex REGISTER_CONVERTIBLE
9fb4dd36 3460Return non-zero if @var{reg} uses different raw and virtual formats.
13d01224
AC
3461@xref{Target Architecture Definition, , Raw and Virtual Register Representations}.
3462
3463@item REGISTER_TO_VALUE(@var{regnum}, @var{type}, @var{from}, @var{to})
3464@findex REGISTER_TO_VALUE
3465Convert the raw contents of register @var{regnum} into a value of type
3466@var{type}.
4281a42e 3467@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
9fb4dd36
JB
3468
3469@item REGISTER_RAW_SIZE (@var{reg})
56caf160 3470@findex REGISTER_RAW_SIZE
b2e75d78
AC
3471Return the raw size of @var{reg}; defaults to the size of the register's
3472virtual type.
13d01224 3473@xref{Target Architecture Definition, , Raw and Virtual Register Representations}.
9fb4dd36 3474
617073a9
AC
3475@item register_reggroup_p (@var{gdbarch}, @var{regnum}, @var{reggroup})
3476@findex register_reggroup_p
3477@cindex register groups
3478Return non-zero if register @var{regnum} is a member of the register
3479group @var{reggroup}.
3480
3481By default, registers are grouped as follows:
3482
3483@table @code
3484@item float_reggroup
3485Any register with a valid name and a floating-point type.
3486@item vector_reggroup
3487Any register with a valid name and a vector type.
3488@item general_reggroup
3489Any register with a valid name and a type other than vector or
3490floating-point. @samp{float_reggroup}.
3491@item save_reggroup
3492@itemx restore_reggroup
3493@itemx all_reggroup
3494Any register with a valid name.
3495@end table
3496
9fb4dd36 3497@item REGISTER_VIRTUAL_SIZE (@var{reg})
56caf160 3498@findex REGISTER_VIRTUAL_SIZE
b2e75d78
AC
3499Return the virtual size of @var{reg}; defaults to the size of the
3500register's virtual type.
13d01224
AC
3501Return the virtual size of @var{reg}.
3502@xref{Target Architecture Definition, , Raw and Virtual Register Representations}.
9fb4dd36
JB
3503
3504@item REGISTER_VIRTUAL_TYPE (@var{reg})
56caf160 3505@findex REGISTER_VIRTUAL_TYPE
9fb4dd36 3506Return the virtual type of @var{reg}.
13d01224 3507@xref{Target Architecture Definition, , Raw and Virtual Register Representations}.
9fb4dd36 3508
77e7e267
AC
3509@item struct type *register_type (@var{gdbarch}, @var{reg})
3510@findex register_type
3511If defined, return the type of register @var{reg}. This function
3512superseeds @code{REGISTER_VIRTUAL_TYPE}. @xref{Target Architecture
3513Definition, , Raw and Virtual Register Representations}.
3514
9fb4dd36 3515@item REGISTER_CONVERT_TO_VIRTUAL(@var{reg}, @var{type}, @var{from}, @var{to})
56caf160 3516@findex REGISTER_CONVERT_TO_VIRTUAL
9fb4dd36 3517Convert the value of register @var{reg} from its raw form to its virtual
4281a42e 3518form.
13d01224 3519@xref{Target Architecture Definition, , Raw and Virtual Register Representations}.
9fb4dd36
JB
3520
3521@item REGISTER_CONVERT_TO_RAW(@var{type}, @var{reg}, @var{from}, @var{to})
56caf160 3522@findex REGISTER_CONVERT_TO_RAW
9fb4dd36 3523Convert the value of register @var{reg} from its virtual form to its raw
4281a42e 3524form.
13d01224 3525@xref{Target Architecture Definition, , Raw and Virtual Register Representations}.
9fb4dd36 3526
e5419804
JB
3527@item RETURN_VALUE_ON_STACK(@var{type})
3528@findex RETURN_VALUE_ON_STACK
3529@cindex returning structures by value
3530@cindex structures, returning by value
3531
3532Return non-zero if values of type TYPE are returned on the stack, using
3533the ``struct convention'' (i.e., the caller provides a pointer to a
3534buffer in which the callee should store the return value). This
3535controls how the @samp{finish} command finds a function's return value,
3536and whether an inferior function call reserves space on the stack for
3537the return value.
3538
3539The full logic @value{GDBN} uses here is kind of odd.
e5419804 3540
56caf160 3541@itemize @bullet
e5419804
JB
3542@item
3543If the type being returned by value is not a structure, union, or array,
3544and @code{RETURN_VALUE_ON_STACK} returns zero, then @value{GDBN}
3545concludes the value is not returned using the struct convention.
3546
3547@item
3548Otherwise, @value{GDBN} calls @code{USE_STRUCT_CONVENTION} (see below).
3549If that returns non-zero, @value{GDBN} assumes the struct convention is
3550in use.
e5419804
JB
3551@end itemize
3552
3553In other words, to indicate that a given type is returned by value using
3554the struct convention, that type must be either a struct, union, array,
3555or something @code{RETURN_VALUE_ON_STACK} likes, @emph{and} something
3556that @code{USE_STRUCT_CONVENTION} likes.
3557
56caf160 3558Note that, in C and C@t{++}, arrays are never returned by value. In those
e5419804
JB
3559languages, these predicates will always see a pointer type, never an
3560array type. All the references above to arrays being returned by value
3561apply only to other languages.
3562
b0ed3589 3563@item SOFTWARE_SINGLE_STEP_P()
56caf160 3564@findex SOFTWARE_SINGLE_STEP_P
c906108c 3565Define this as 1 if the target does not have a hardware single-step
56caf160 3566mechanism. The macro @code{SOFTWARE_SINGLE_STEP} must also be defined.
c906108c 3567
56caf160
EZ
3568@item SOFTWARE_SINGLE_STEP(@var{signal}, @var{insert_breapoints_p})
3569@findex SOFTWARE_SINGLE_STEP
3570A function that inserts or removes (depending on
c906108c 3571@var{insert_breapoints_p}) breakpoints at each possible destinations of
56caf160 3572the next instruction. See @file{sparc-tdep.c} and @file{rs6000-tdep.c}
c906108c
SS
3573for examples.
3574
da59e081 3575@item SOFUN_ADDRESS_MAYBE_MISSING
56caf160 3576@findex SOFUN_ADDRESS_MAYBE_MISSING
da59e081
JM
3577Somebody clever observed that, the more actual addresses you have in the
3578debug information, the more time the linker has to spend relocating
3579them. So whenever there's some other way the debugger could find the
3580address it needs, you should omit it from the debug info, to make
3581linking faster.
3582
3583@code{SOFUN_ADDRESS_MAYBE_MISSING} indicates that a particular set of
3584hacks of this sort are in use, affecting @code{N_SO} and @code{N_FUN}
3585entries in stabs-format debugging information. @code{N_SO} stabs mark
3586the beginning and ending addresses of compilation units in the text
3587segment. @code{N_FUN} stabs mark the starts and ends of functions.
3588
3589@code{SOFUN_ADDRESS_MAYBE_MISSING} means two things:
da59e081 3590
56caf160 3591@itemize @bullet
da59e081
JM
3592@item
3593@code{N_FUN} stabs have an address of zero. Instead, you should find the
3594addresses where the function starts by taking the function name from
56caf160
EZ
3595the stab, and then looking that up in the minsyms (the
3596linker/assembler symbol table). In other words, the stab has the
3597name, and the linker/assembler symbol table is the only place that carries
da59e081
JM
3598the address.
3599
3600@item
3601@code{N_SO} stabs have an address of zero, too. You just look at the
3602@code{N_FUN} stabs that appear before and after the @code{N_SO} stab,
3603and guess the starting and ending addresses of the compilation unit from
3604them.
da59e081
JM
3605@end itemize
3606
c906108c 3607@item PCC_SOL_BROKEN
56caf160 3608@findex PCC_SOL_BROKEN
c906108c
SS
3609(Used only in the Convex target.)
3610
d7bd68ca
AC
3611@item PC_IN_SIGTRAMP (@var{pc}, @var{name})
3612@findex PC_IN_SIGTRAMP
3613@cindex sigtramp
3614The @dfn{sigtramp} is a routine that the kernel calls (which then calls
3615the signal handler). On most machines it is a library routine that is
3616linked into the executable.
3617
3618This function, given a program counter value in @var{pc} and the
3619(possibly NULL) name of the function in which that @var{pc} resides,
3620returns nonzero if the @var{pc} and/or @var{name} show that we are in
3621sigtramp.
3622
c906108c 3623@item PC_LOAD_SEGMENT
56caf160 3624@findex PC_LOAD_SEGMENT
c906108c
SS
3625If defined, print information about the load segment for the program
3626counter. (Defined only for the RS/6000.)
3627
3628@item PC_REGNUM
56caf160 3629@findex PC_REGNUM
c906108c 3630If the program counter is kept in a register, then define this macro to
cce74817
JM
3631be the number (greater than or equal to zero) of that register.
3632
3633This should only need to be defined if @code{TARGET_READ_PC} and
3634@code{TARGET_WRITE_PC} are not defined.
c906108c
SS
3635
3636@item NPC_REGNUM
56caf160 3637@findex NPC_REGNUM
c906108c
SS
3638The number of the ``next program counter'' register, if defined.
3639
2df3850c 3640@item PARM_BOUNDARY
56caf160 3641@findex PARM_BOUNDARY
2df3850c
JM
3642If non-zero, round arguments to a boundary of this many bits before
3643pushing them on the stack.
3644
c906108c 3645@item PRINT_TYPELESS_INTEGER
56caf160 3646@findex PRINT_TYPELESS_INTEGER
c906108c
SS
3647This is an obscure substitute for @code{print_longest} that seems to
3648have been defined for the Convex target.
3649
3650@item PROCESS_LINENUMBER_HOOK
56caf160 3651@findex PROCESS_LINENUMBER_HOOK
c906108c
SS
3652A hook defined for XCOFF reading.
3653
3654@item PROLOGUE_FIRSTLINE_OVERLAP
56caf160 3655@findex PROLOGUE_FIRSTLINE_OVERLAP
c906108c
SS
3656(Only used in unsupported Convex configuration.)
3657
3658@item PS_REGNUM
56caf160 3659@findex PS_REGNUM
c906108c
SS
3660If defined, this is the number of the processor status register. (This
3661definition is only used in generic code when parsing "$ps".)
3662
3663@item POP_FRAME
56caf160
EZ
3664@findex POP_FRAME
3665@findex call_function_by_hand
3666@findex return_command
c906108c 3667Used in @samp{call_function_by_hand} to remove an artificial stack
1c6147de 3668frame and in @samp{return_command} to remove a real stack frame.
c906108c 3669
56caf160
EZ
3670@item PUSH_ARGUMENTS (@var{nargs}, @var{args}, @var{sp}, @var{struct_return}, @var{struct_addr})
3671@findex PUSH_ARGUMENTS
392a587b 3672Define this to push arguments onto the stack for inferior function
56caf160 3673call. Returns the updated stack pointer value.
c906108c
SS
3674
3675@item PUSH_DUMMY_FRAME
56caf160 3676@findex PUSH_DUMMY_FRAME
c906108c
SS
3677Used in @samp{call_function_by_hand} to create an artificial stack frame.
3678
3679@item REGISTER_BYTES
56caf160 3680@findex REGISTER_BYTES
25822942 3681The total amount of space needed to store @value{GDBN}'s copy of the machine's
c906108c
SS
3682register state.
3683
56caf160
EZ
3684@item REGISTER_NAME(@var{i})
3685@findex REGISTER_NAME
3686Return the name of register @var{i} as a string. May return @code{NULL}
3687or @code{NUL} to indicate that register @var{i} is not valid.
c906108c 3688
7a292a7a 3689@item REGISTER_NAMES
56caf160
EZ
3690@findex REGISTER_NAMES
3691Deprecated in favor of @code{REGISTER_NAME}.
7a292a7a 3692
56caf160
EZ
3693@item REG_STRUCT_HAS_ADDR (@var{gcc_p}, @var{type})
3694@findex REG_STRUCT_HAS_ADDR
c906108c
SS
3695Define this to return 1 if the given type will be passed by pointer
3696rather than directly.
3697
56caf160
EZ
3698@item SAVE_DUMMY_FRAME_TOS (@var{sp})
3699@findex SAVE_DUMMY_FRAME_TOS
43ff13b4
JM
3700Used in @samp{call_function_by_hand} to notify the target dependent code
3701of the top-of-stack value that will be passed to the the inferior code.
56caf160 3702This is the value of the @code{SP} after both the dummy frame and space
43ff13b4
JM
3703for parameters/results have been allocated on the stack.
3704
c906108c 3705@item SDB_REG_TO_REGNUM
56caf160 3706@findex SDB_REG_TO_REGNUM
25822942 3707Define this to convert sdb register numbers into @value{GDBN} regnums. If not
c906108c
SS
3708defined, no conversion will be done.
3709
c2c6d25f 3710@item SKIP_PERMANENT_BREAKPOINT
56caf160 3711@findex SKIP_PERMANENT_BREAKPOINT
25822942 3712Advance the inferior's PC past a permanent breakpoint. @value{GDBN} normally
c2c6d25f
JM
3713steps over a breakpoint by removing it, stepping one instruction, and
3714re-inserting the breakpoint. However, permanent breakpoints are
3715hardwired into the inferior, and can't be removed, so this strategy
56caf160 3716doesn't work. Calling @code{SKIP_PERMANENT_BREAKPOINT} adjusts the processor's
c2c6d25f
JM
3717state so that execution will resume just after the breakpoint. This
3718macro does the right thing even when the breakpoint is in the delay slot
3719of a branch or jump.
3720
56caf160
EZ
3721@item SKIP_PROLOGUE (@var{pc})
3722@findex SKIP_PROLOGUE
b83266a0
SS
3723A C expression that returns the address of the ``real'' code beyond the
3724function entry prologue found at @var{pc}.
c906108c 3725
56caf160
EZ
3726@item SKIP_TRAMPOLINE_CODE (@var{pc})
3727@findex SKIP_TRAMPOLINE_CODE
c906108c
SS
3728If the target machine has trampoline code that sits between callers and
3729the functions being called, then define this macro to return a new PC
3730that is at the start of the real function.
3731
3732@item SP_REGNUM
56caf160 3733@findex SP_REGNUM
cce74817
JM
3734If the stack-pointer is kept in a register, then define this macro to be
3735the number (greater than or equal to zero) of that register.
3736
3737This should only need to be defined if @code{TARGET_WRITE_SP} and
3738@code{TARGET_WRITE_SP} are not defined.
c906108c
SS
3739
3740@item STAB_REG_TO_REGNUM
56caf160 3741@findex STAB_REG_TO_REGNUM
c906108c 3742Define this to convert stab register numbers (as gotten from `r'
25822942 3743declarations) into @value{GDBN} regnums. If not defined, no conversion will be
c906108c
SS
3744done.
3745
56caf160 3746@item STACK_ALIGN (@var{addr})
790eb8f5 3747@anchor{STACK_ALIGN}
56caf160 3748@findex STACK_ALIGN
790eb8f5
AC
3749Define this to increase @var{addr} so that it meets the alignment
3750requirements for the processor's stack.
3751
3752Unlike @ref{frame_align}, this function always adjusts @var{addr}
3753upwards.
3754
3755By default, no stack alignment is performed.
c906108c 3756
56caf160
EZ
3757@item STEP_SKIPS_DELAY (@var{addr})
3758@findex STEP_SKIPS_DELAY
c906108c
SS
3759Define this to return true if the address is of an instruction with a
3760delay slot. If a breakpoint has been placed in the instruction's delay
25822942 3761slot, @value{GDBN} will single-step over that instruction before resuming
c906108c
SS
3762normally. Currently only defined for the Mips.
3763
ebba8386 3764@item STORE_RETURN_VALUE (@var{type}, @var{regcache}, @var{valbuf})
56caf160 3765@findex STORE_RETURN_VALUE
ebba8386
AC
3766A C expression that writes the function return value, found in
3767@var{valbuf}, into the @var{regcache}. @var{type} is the type of the
3768value that is to be returned.
c906108c
SS
3769
3770@item SUN_FIXED_LBRAC_BUG
56caf160 3771@findex SUN_FIXED_LBRAC_BUG
c906108c
SS
3772(Used only for Sun-3 and Sun-4 targets.)
3773
3774@item SYMBOL_RELOADING_DEFAULT
56caf160
EZ
3775@findex SYMBOL_RELOADING_DEFAULT
3776The default value of the ``symbol-reloading'' variable. (Never defined in
c906108c
SS
3777current sources.)
3778
c906108c 3779@item TARGET_CHAR_BIT
56caf160 3780@findex TARGET_CHAR_BIT
c906108c
SS
3781Number of bits in a char; defaults to 8.
3782
c3d3ce5b
JB
3783@item TARGET_CHAR_SIGNED
3784@findex TARGET_CHAR_SIGNED
3785Non-zero if @code{char} is normally signed on this architecture; zero if
3786it should be unsigned.
3787
3788The ISO C standard requires the compiler to treat @code{char} as
3789equivalent to either @code{signed char} or @code{unsigned char}; any
3790character in the standard execution set is supposed to be positive.
3791Most compilers treat @code{char} as signed, but @code{char} is unsigned
3792on the IBM S/390, RS6000, and PowerPC targets.
3793
c906108c 3794@item TARGET_COMPLEX_BIT
56caf160 3795@findex TARGET_COMPLEX_BIT
c906108c
SS
3796Number of bits in a complex number; defaults to @code{2 * TARGET_FLOAT_BIT}.
3797
ac9a91a7
JM
3798At present this macro is not used.
3799
c906108c 3800@item TARGET_DOUBLE_BIT
56caf160 3801@findex TARGET_DOUBLE_BIT
c906108c
SS
3802Number of bits in a double float; defaults to @code{8 * TARGET_CHAR_BIT}.
3803
3804@item TARGET_DOUBLE_COMPLEX_BIT
56caf160 3805@findex TARGET_DOUBLE_COMPLEX_BIT
c906108c
SS
3806Number of bits in a double complex; defaults to @code{2 * TARGET_DOUBLE_BIT}.
3807
ac9a91a7
JM
3808At present this macro is not used.
3809
c906108c 3810@item TARGET_FLOAT_BIT
56caf160 3811@findex TARGET_FLOAT_BIT
c906108c
SS
3812Number of bits in a float; defaults to @code{4 * TARGET_CHAR_BIT}.
3813
3814@item TARGET_INT_BIT
56caf160 3815@findex TARGET_INT_BIT
c906108c
SS
3816Number of bits in an integer; defaults to @code{4 * TARGET_CHAR_BIT}.
3817
3818@item TARGET_LONG_BIT
56caf160 3819@findex TARGET_LONG_BIT
c906108c
SS
3820Number of bits in a long integer; defaults to @code{4 * TARGET_CHAR_BIT}.
3821
3822@item TARGET_LONG_DOUBLE_BIT
56caf160 3823@findex TARGET_LONG_DOUBLE_BIT
c906108c
SS
3824Number of bits in a long double float;
3825defaults to @code{2 * TARGET_DOUBLE_BIT}.
3826
3827@item TARGET_LONG_LONG_BIT
56caf160 3828@findex TARGET_LONG_LONG_BIT
c906108c
SS
3829Number of bits in a long long integer; defaults to @code{2 * TARGET_LONG_BIT}.
3830
3831@item TARGET_PTR_BIT
56caf160 3832@findex TARGET_PTR_BIT
c906108c
SS
3833Number of bits in a pointer; defaults to @code{TARGET_INT_BIT}.
3834
3835@item TARGET_SHORT_BIT
56caf160 3836@findex TARGET_SHORT_BIT
c906108c
SS
3837Number of bits in a short integer; defaults to @code{2 * TARGET_CHAR_BIT}.
3838
3839@item TARGET_READ_PC
56caf160
EZ
3840@findex TARGET_READ_PC
3841@itemx TARGET_WRITE_PC (@var{val}, @var{pid})
3842@findex TARGET_WRITE_PC
3843@itemx TARGET_READ_SP
3844@findex TARGET_READ_SP
3845@itemx TARGET_WRITE_SP
3846@findex TARGET_WRITE_SP
3847@itemx TARGET_READ_FP
3848@findex TARGET_READ_FP
56caf160
EZ
3849@findex read_pc
3850@findex write_pc
3851@findex read_sp
3852@findex write_sp
3853@findex read_fp
c906108c 3854These change the behavior of @code{read_pc}, @code{write_pc},
8227c0ff
AC
3855@code{read_sp}, @code{write_sp} and @code{read_fp}. For most targets,
3856these may be left undefined. @value{GDBN} will call the read and write
3857register functions with the relevant @code{_REGNUM} argument.
c906108c
SS
3858
3859These macros are useful when a target keeps one of these registers in a
3860hard to get at place; for example, part in a segment register and part
3861in an ordinary register.
3862
56caf160
EZ
3863@item TARGET_VIRTUAL_FRAME_POINTER(@var{pc}, @var{regp}, @var{offsetp})
3864@findex TARGET_VIRTUAL_FRAME_POINTER
c906108c 3865Returns a @code{(register, offset)} pair representing the virtual
56caf160 3866frame pointer in use at the code address @var{pc}. If virtual
c906108c
SS
3867frame pointers are not used, a default definition simply returns
3868@code{FP_REGNUM}, with an offset of zero.
3869
9742079a
EZ
3870@item TARGET_HAS_HARDWARE_WATCHPOINTS
3871If non-zero, the target has support for hardware-assisted
3872watchpoints. @xref{Algorithms, watchpoints}, for more details and
3873other related macros.
3874
7ccaa899
EZ
3875@item TARGET_PRINT_INSN (@var{addr}, @var{info})
3876@findex TARGET_PRINT_INSN
3877This is the function used by @value{GDBN} to print an assembly
3878instruction. It prints the instruction at address @var{addr} in
3879debugged memory and returns the length of the instruction, in bytes. If
3880a target doesn't define its own printing routine, it defaults to an
3881accessor function for the global pointer @code{tm_print_insn}. This
3882usually points to a function in the @code{opcodes} library (@pxref{Support
3883Libraries, ,Opcodes}). @var{info} is a structure (of type
3884@code{disassemble_info}) defined in @file{include/dis-asm.h} used to
3885pass information to the instruction decoding routine.
3886
56caf160
EZ
3887@item USE_STRUCT_CONVENTION (@var{gcc_p}, @var{type})
3888@findex USE_STRUCT_CONVENTION
c906108c
SS
3889If defined, this must be an expression that is nonzero if a value of the
3890given @var{type} being returned from a function must have space
3891allocated for it on the stack. @var{gcc_p} is true if the function
3892being considered is known to have been compiled by GCC; this is helpful
3893for systems where GCC is known to use different calling convention than
3894other compilers.
3895
13d01224
AC
3896@item VALUE_TO_REGISTER(@var{type}, @var{regnum}, @var{from}, @var{to})
3897@findex VALUE_TO_REGISTER
3898Convert a value of type @var{type} into the raw contents of register
3899@var{regnum}'s.
3900@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
3901
56caf160
EZ
3902@item VARIABLES_INSIDE_BLOCK (@var{desc}, @var{gcc_p})
3903@findex VARIABLES_INSIDE_BLOCK
c906108c
SS
3904For dbx-style debugging information, if the compiler puts variable
3905declarations inside LBRAC/RBRAC blocks, this should be defined to be
3906nonzero. @var{desc} is the value of @code{n_desc} from the
25822942 3907@code{N_RBRAC} symbol, and @var{gcc_p} is true if @value{GDBN} has noticed the
c906108c
SS
3908presence of either the @code{GCC_COMPILED_SYMBOL} or the
3909@code{GCC2_COMPILED_SYMBOL}. By default, this is 0.
3910
56caf160
EZ
3911@item OS9K_VARIABLES_INSIDE_BLOCK (@var{desc}, @var{gcc_p})
3912@findex OS9K_VARIABLES_INSIDE_BLOCK
c906108c 3913Similarly, for OS/9000. Defaults to 1.
c906108c
SS
3914@end table
3915
3916Motorola M68K target conditionals.
3917
56caf160 3918@ftable @code
c906108c
SS
3919@item BPT_VECTOR
3920Define this to be the 4-bit location of the breakpoint trap vector. If
3921not defined, it will default to @code{0xf}.
3922
3923@item REMOTE_BPT_VECTOR
3924Defaults to @code{1}.
a23a7bf1
JB
3925
3926@item NAME_OF_MALLOC
3927@findex NAME_OF_MALLOC
3928A string containing the name of the function to call in order to
3929allocate some memory in the inferior. The default value is "malloc".
3930
56caf160 3931@end ftable
c906108c
SS
3932
3933@section Adding a New Target
3934
56caf160 3935@cindex adding a target
af6c57ea 3936The following files add a target to @value{GDBN}:
c906108c
SS
3937
3938@table @file
56caf160 3939@vindex TDEPFILES
c906108c
SS
3940@item gdb/config/@var{arch}/@var{ttt}.mt
3941Contains a Makefile fragment specific to this target. Specifies what
3942object files are needed for target @var{ttt}, by defining
104c1213
JM
3943@samp{TDEPFILES=@dots{}} and @samp{TDEPLIBS=@dots{}}. Also specifies
3944the header file which describes @var{ttt}, by defining @samp{TM_FILE=
3945tm-@var{ttt}.h}.
3946
3947You can also define @samp{TM_CFLAGS}, @samp{TM_CLIBS}, @samp{TM_CDEPS},
3948but these are now deprecated, replaced by autoconf, and may go away in
25822942 3949future versions of @value{GDBN}.
c906108c 3950
c906108c
SS
3951@item gdb/@var{ttt}-tdep.c
3952Contains any miscellaneous code required for this target machine. On
3953some machines it doesn't exist at all. Sometimes the macros in
3954@file{tm-@var{ttt}.h} become very complicated, so they are implemented
3955as functions here instead, and the macro is simply defined to call the
3956function. This is vastly preferable, since it is easier to understand
3957and debug.
3958
af6c57ea
AC
3959@item gdb/@var{arch}-tdep.c
3960@itemx gdb/@var{arch}-tdep.h
3961This often exists to describe the basic layout of the target machine's
3962processor chip (registers, stack, etc.). If used, it is included by
3963@file{@var{ttt}-tdep.h}. It can be shared among many targets that use
3964the same processor.
3965
3966@item gdb/config/@var{arch}/tm-@var{ttt}.h
3967(@file{tm.h} is a link to this file, created by @code{configure}). Contains
3968macro definitions about the target machine's registers, stack frame
3969format and instructions.
3970
3971New targets do not need this file and should not create it.
3972
c906108c
SS
3973@item gdb/config/@var{arch}/tm-@var{arch}.h
3974This often exists to describe the basic layout of the target machine's
56caf160 3975processor chip (registers, stack, etc.). If used, it is included by
c906108c
SS
3976@file{tm-@var{ttt}.h}. It can be shared among many targets that use the
3977same processor.
3978
af6c57ea
AC
3979New targets do not need this file and should not create it.
3980
c906108c
SS
3981@end table
3982
3983If you are adding a new operating system for an existing CPU chip, add a
3984@file{config/tm-@var{os}.h} file that describes the operating system
3985facilities that are unusual (extra symbol table info; the breakpoint
56caf160 3986instruction needed; etc.). Then write a @file{@var{arch}/tm-@var{os}.h}
c906108c
SS
3987that just @code{#include}s @file{tm-@var{arch}.h} and
3988@file{config/tm-@var{os}.h}.
3989
3990
3352e23e
AC
3991@section Converting an existing Target Architecture to Multi-arch
3992@cindex converting targets to multi-arch
3993
3994This section describes the current accepted best practice for converting
3995an existing target architecture to the multi-arch framework.
3996
3997The process consists of generating, testing, posting and committing a
3998sequence of patches. Each patch must contain a single change, for
3999instance:
4000
4001@itemize @bullet
4002
4003@item
4004Directly convert a group of functions into macros (the conversion does
4005not change the behavior of any of the functions).
4006
4007@item
4008Replace a non-multi-arch with a multi-arch mechanism (e.g.,
4009@code{FRAME_INFO}).
4010
4011@item
4012Enable multi-arch level one.
4013
4014@item
4015Delete one or more files.
4016
4017@end itemize
4018
4019@noindent
4020There isn't a size limit on a patch, however, a developer is strongly
4021encouraged to keep the patch size down.
4022
4023Since each patch is well defined, and since each change has been tested
4024and shows no regressions, the patches are considered @emph{fairly}
4025obvious. Such patches, when submitted by developers listed in the
4026@file{MAINTAINERS} file, do not need approval. Occasional steps in the
4027process may be more complicated and less clear. The developer is
4028expected to use their judgment and is encouraged to seek advice as
4029needed.
4030
4031@subsection Preparation
4032
4033The first step is to establish control. Build (with @option{-Werror}
4034enabled) and test the target so that there is a baseline against which
4035the debugger can be compared.
4036
4037At no stage can the test results regress or @value{GDBN} stop compiling
4038with @option{-Werror}.
4039
4040@subsection Add the multi-arch initialization code
4041
4042The objective of this step is to establish the basic multi-arch
4043framework. It involves
4044
4045@itemize @bullet
4046
4047@item
4048The addition of a @code{@var{arch}_gdbarch_init} function@footnote{The
4049above is from the original example and uses K&R C. @value{GDBN}
4050has since converted to ISO C but lets ignore that.} that creates
4051the architecture:
4052@smallexample
4053static struct gdbarch *
4054d10v_gdbarch_init (info, arches)
4055 struct gdbarch_info info;
4056 struct gdbarch_list *arches;
4057@{
4058 struct gdbarch *gdbarch;
4059 /* there is only one d10v architecture */
4060 if (arches != NULL)
4061 return arches->gdbarch;
4062 gdbarch = gdbarch_alloc (&info, NULL);
4063 return gdbarch;
4064@}
4065@end smallexample
4066@noindent
4067@emph{}
4068
4069@item
4070A per-architecture dump function to print any architecture specific
4071information:
4072@smallexample
4073static void
4074mips_dump_tdep (struct gdbarch *current_gdbarch,
4075 struct ui_file *file)
4076@{
4077 @dots{} code to print architecture specific info @dots{}
4078@}
4079@end smallexample
4080
4081@item
4082A change to @code{_initialize_@var{arch}_tdep} to register this new
4083architecture:
4084@smallexample
4085void
4086_initialize_mips_tdep (void)
4087@{
4088 gdbarch_register (bfd_arch_mips, mips_gdbarch_init,
4089 mips_dump_tdep);
4090@end smallexample
4091
4092@item
4093Add the macro @code{GDB_MULTI_ARCH}, defined as 0 (zero), to the file@*
4094@file{config/@var{arch}/tm-@var{arch}.h}.
4095
4096@end itemize
4097
4098@subsection Update multi-arch incompatible mechanisms
4099
4100Some mechanisms do not work with multi-arch. They include:
4101
4102@table @code
4103@item EXTRA_FRAME_INFO
4104Delete.
4105@item FRAME_FIND_SAVED_REGS
f30ee0bc 4106Replaced with @code{DEPRECATED_FRAME_INIT_SAVED_REGS}
3352e23e
AC
4107@end table
4108
4109@noindent
4110At this stage you could also consider converting the macros into
4111functions.
4112
4113@subsection Prepare for multi-arch level to one
4114
4115Temporally set @code{GDB_MULTI_ARCH} to @code{GDB_MULTI_ARCH_PARTIAL}
4116and then build and start @value{GDBN} (the change should not be
4117committed). @value{GDBN} may not build, and once built, it may die with
4118an internal error listing the architecture methods that must be
4119provided.
4120
4121Fix any build problems (patch(es)).
4122
4123Convert all the architecture methods listed, which are only macros, into
4124functions (patch(es)).
4125
4126Update @code{@var{arch}_gdbarch_init} to set all the missing
4127architecture methods and wrap the corresponding macros in @code{#if
4128!GDB_MULTI_ARCH} (patch(es)).
4129
4130@subsection Set multi-arch level one
4131
4132Change the value of @code{GDB_MULTI_ARCH} to GDB_MULTI_ARCH_PARTIAL (a
4133single patch).
4134
4135Any problems with throwing ``the switch'' should have been fixed
4136already.
4137
4138@subsection Convert remaining macros
4139
4140Suggest converting macros into functions (and setting the corresponding
4141architecture method) in small batches.
4142
4143@subsection Set multi-arch level to two
4144
4145This should go smoothly.
4146
4147@subsection Delete the TM file
4148
4149The @file{tm-@var{arch}.h} can be deleted. @file{@var{arch}.mt} and
4150@file{configure.in} updated.
4151
4152
c906108c
SS
4153@node Target Vector Definition
4154
4155@chapter Target Vector Definition
56caf160 4156@cindex target vector
c906108c 4157
56caf160
EZ
4158The target vector defines the interface between @value{GDBN}'s
4159abstract handling of target systems, and the nitty-gritty code that
4160actually exercises control over a process or a serial port.
4161@value{GDBN} includes some 30-40 different target vectors; however,
4162each configuration of @value{GDBN} includes only a few of them.
c906108c
SS
4163
4164@section File Targets
4165
4166Both executables and core files have target vectors.
4167
4168@section Standard Protocol and Remote Stubs
4169
56caf160
EZ
4170@value{GDBN}'s file @file{remote.c} talks a serial protocol to code
4171that runs in the target system. @value{GDBN} provides several sample
4172@dfn{stubs} that can be integrated into target programs or operating
4173systems for this purpose; they are named @file{*-stub.c}.
c906108c 4174
56caf160
EZ
4175The @value{GDBN} user's manual describes how to put such a stub into
4176your target code. What follows is a discussion of integrating the
4177SPARC stub into a complicated operating system (rather than a simple
4178program), by Stu Grossman, the author of this stub.
c906108c
SS
4179
4180The trap handling code in the stub assumes the following upon entry to
56caf160 4181@code{trap_low}:
c906108c
SS
4182
4183@enumerate
56caf160
EZ
4184@item
4185%l1 and %l2 contain pc and npc respectively at the time of the trap;
c906108c 4186
56caf160
EZ
4187@item
4188traps are disabled;
c906108c 4189
56caf160
EZ
4190@item
4191you are in the correct trap window.
c906108c
SS
4192@end enumerate
4193
4194As long as your trap handler can guarantee those conditions, then there
56caf160 4195is no reason why you shouldn't be able to ``share'' traps with the stub.
c906108c
SS
4196The stub has no requirement that it be jumped to directly from the
4197hardware trap vector. That is why it calls @code{exceptionHandler()},
4198which is provided by the external environment. For instance, this could
56caf160 4199set up the hardware traps to actually execute code which calls the stub
c906108c
SS
4200first, and then transfers to its own trap handler.
4201
4202For the most point, there probably won't be much of an issue with
56caf160 4203``sharing'' traps, as the traps we use are usually not used by the kernel,
c906108c
SS
4204and often indicate unrecoverable error conditions. Anyway, this is all
4205controlled by a table, and is trivial to modify. The most important
4206trap for us is for @code{ta 1}. Without that, we can't single step or
4207do breakpoints. Everything else is unnecessary for the proper operation
4208of the debugger/stub.
4209
4210From reading the stub, it's probably not obvious how breakpoints work.
25822942 4211They are simply done by deposit/examine operations from @value{GDBN}.
c906108c
SS
4212
4213@section ROM Monitor Interface
4214
4215@section Custom Protocols
4216
4217@section Transport Layer
4218
4219@section Builtin Simulator
4220
4221
4222@node Native Debugging
4223
4224@chapter Native Debugging
56caf160 4225@cindex native debugging
c906108c 4226
25822942 4227Several files control @value{GDBN}'s configuration for native support:
c906108c
SS
4228
4229@table @file
56caf160 4230@vindex NATDEPFILES
c906108c 4231@item gdb/config/@var{arch}/@var{xyz}.mh
7fd60527 4232Specifies Makefile fragments needed by a @emph{native} configuration on
c906108c
SS
4233machine @var{xyz}. In particular, this lists the required
4234native-dependent object files, by defining @samp{NATDEPFILES=@dots{}}.
4235Also specifies the header file which describes native support on
4236@var{xyz}, by defining @samp{NAT_FILE= nm-@var{xyz}.h}. You can also
4237define @samp{NAT_CFLAGS}, @samp{NAT_ADD_FILES}, @samp{NAT_CLIBS},
4238@samp{NAT_CDEPS}, etc.; see @file{Makefile.in}.
4239
7fd60527
AC
4240@emph{Maintainer's note: The @file{.mh} suffix is because this file
4241originally contained @file{Makefile} fragments for hosting @value{GDBN}
4242on machine @var{xyz}. While the file is no longer used for this
937f164b 4243purpose, the @file{.mh} suffix remains. Perhaps someone will
7fd60527
AC
4244eventually rename these fragments so that they have a @file{.mn}
4245suffix.}
4246
c906108c 4247@item gdb/config/@var{arch}/nm-@var{xyz}.h
56caf160 4248(@file{nm.h} is a link to this file, created by @code{configure}). Contains C
c906108c
SS
4249macro definitions describing the native system environment, such as
4250child process control and core file support.
4251
4252@item gdb/@var{xyz}-nat.c
4253Contains any miscellaneous C code required for this native support of
4254this machine. On some machines it doesn't exist at all.
c906108c
SS
4255@end table
4256
4257There are some ``generic'' versions of routines that can be used by
4258various systems. These can be customized in various ways by macros
4259defined in your @file{nm-@var{xyz}.h} file. If these routines work for
4260the @var{xyz} host, you can just include the generic file's name (with
4261@samp{.o}, not @samp{.c}) in @code{NATDEPFILES}.
4262
4263Otherwise, if your machine needs custom support routines, you will need
4264to write routines that perform the same functions as the generic file.
56caf160 4265Put them into @file{@var{xyz}-nat.c}, and put @file{@var{xyz}-nat.o}
c906108c
SS
4266into @code{NATDEPFILES}.
4267
4268@table @file
c906108c
SS
4269@item inftarg.c
4270This contains the @emph{target_ops vector} that supports Unix child
4271processes on systems which use ptrace and wait to control the child.
4272
4273@item procfs.c
4274This contains the @emph{target_ops vector} that supports Unix child
4275processes on systems which use /proc to control the child.
4276
4277@item fork-child.c
56caf160
EZ
4278This does the low-level grunge that uses Unix system calls to do a ``fork
4279and exec'' to start up a child process.
c906108c
SS
4280
4281@item infptrace.c
4282This is the low level interface to inferior processes for systems using
4283the Unix @code{ptrace} call in a vanilla way.
c906108c
SS
4284@end table
4285
4286@section Native core file Support
56caf160 4287@cindex native core files
c906108c
SS
4288
4289@table @file
56caf160 4290@findex fetch_core_registers
c906108c
SS
4291@item core-aout.c::fetch_core_registers()
4292Support for reading registers out of a core file. This routine calls
4293@code{register_addr()}, see below. Now that BFD is used to read core
4294files, virtually all machines should use @code{core-aout.c}, and should
4295just provide @code{fetch_core_registers} in @code{@var{xyz}-nat.c} (or
4296@code{REGISTER_U_ADDR} in @code{nm-@var{xyz}.h}).
4297
4298@item core-aout.c::register_addr()
4299If your @code{nm-@var{xyz}.h} file defines the macro
4300@code{REGISTER_U_ADDR(addr, blockend, regno)}, it should be defined to
25822942 4301set @code{addr} to the offset within the @samp{user} struct of @value{GDBN}
c906108c
SS
4302register number @code{regno}. @code{blockend} is the offset within the
4303``upage'' of @code{u.u_ar0}. If @code{REGISTER_U_ADDR} is defined,
4304@file{core-aout.c} will define the @code{register_addr()} function and
4305use the macro in it. If you do not define @code{REGISTER_U_ADDR}, but
4306you are using the standard @code{fetch_core_registers()}, you will need
4307to define your own version of @code{register_addr()}, put it into your
4308@code{@var{xyz}-nat.c} file, and be sure @code{@var{xyz}-nat.o} is in
4309the @code{NATDEPFILES} list. If you have your own
4310@code{fetch_core_registers()}, you may not need a separate
4311@code{register_addr()}. Many custom @code{fetch_core_registers()}
4312implementations simply locate the registers themselves.@refill
c906108c
SS
4313@end table
4314
25822942 4315When making @value{GDBN} run native on a new operating system, to make it
c906108c
SS
4316possible to debug core files, you will need to either write specific
4317code for parsing your OS's core files, or customize
4318@file{bfd/trad-core.c}. First, use whatever @code{#include} files your
4319machine uses to define the struct of registers that is accessible
4320(possibly in the u-area) in a core file (rather than
4321@file{machine/reg.h}), and an include file that defines whatever header
56caf160
EZ
4322exists on a core file (e.g. the u-area or a @code{struct core}). Then
4323modify @code{trad_unix_core_file_p} to use these values to set up the
c906108c
SS
4324section information for the data segment, stack segment, any other
4325segments in the core file (perhaps shared library contents or control
4326information), ``registers'' segment, and if there are two discontiguous
4327sets of registers (e.g. integer and float), the ``reg2'' segment. This
4328section information basically delimits areas in the core file in a
4329standard way, which the section-reading routines in BFD know how to seek
4330around in.
4331
25822942 4332Then back in @value{GDBN}, you need a matching routine called
56caf160 4333@code{fetch_core_registers}. If you can use the generic one, it's in
c906108c
SS
4334@file{core-aout.c}; if not, it's in your @file{@var{xyz}-nat.c} file.
4335It will be passed a char pointer to the entire ``registers'' segment,
4336its length, and a zero; or a char pointer to the entire ``regs2''
4337segment, its length, and a 2. The routine should suck out the supplied
25822942 4338register values and install them into @value{GDBN}'s ``registers'' array.
c906108c
SS
4339
4340If your system uses @file{/proc} to control processes, and uses ELF
4341format core files, then you may be able to use the same routines for
4342reading the registers out of processes and out of core files.
4343
4344@section ptrace
4345
4346@section /proc
4347
4348@section win32
4349
4350@section shared libraries
4351
4352@section Native Conditionals
56caf160 4353@cindex native conditionals
c906108c 4354
56caf160
EZ
4355When @value{GDBN} is configured and compiled, various macros are
4356defined or left undefined, to control compilation when the host and
4357target systems are the same. These macros should be defined (or left
4358undefined) in @file{nm-@var{system}.h}.
c906108c
SS
4359
4360@table @code
c906108c 4361@item ATTACH_DETACH
56caf160 4362@findex ATTACH_DETACH
25822942 4363If defined, then @value{GDBN} will include support for the @code{attach} and
c906108c
SS
4364@code{detach} commands.
4365
4366@item CHILD_PREPARE_TO_STORE
56caf160 4367@findex CHILD_PREPARE_TO_STORE
c906108c
SS
4368If the machine stores all registers at once in the child process, then
4369define this to ensure that all values are correct. This usually entails
4370a read from the child.
4371
4372[Note that this is incorrectly defined in @file{xm-@var{system}.h} files
4373currently.]
4374
4375@item FETCH_INFERIOR_REGISTERS
56caf160 4376@findex FETCH_INFERIOR_REGISTERS
c906108c
SS
4377Define this if the native-dependent code will provide its own routines
4378@code{fetch_inferior_registers} and @code{store_inferior_registers} in
56caf160 4379@file{@var{host}-nat.c}. If this symbol is @emph{not} defined, and
c906108c
SS
4380@file{infptrace.c} is included in this configuration, the default
4381routines in @file{infptrace.c} are used for these functions.
4382
4383@item FILES_INFO_HOOK
56caf160 4384@findex FILES_INFO_HOOK
c906108c
SS
4385(Only defined for Convex.)
4386
4387@item FP0_REGNUM
56caf160 4388@findex FP0_REGNUM
c906108c
SS
4389This macro is normally defined to be the number of the first floating
4390point register, if the machine has such registers. As such, it would
56caf160 4391appear only in target-specific code. However, @file{/proc} support uses this
c906108c
SS
4392to decide whether floats are in use on this target.
4393
4394@item GET_LONGJMP_TARGET
56caf160 4395@findex GET_LONGJMP_TARGET
c906108c
SS
4396For most machines, this is a target-dependent parameter. On the
4397DECstation and the Iris, this is a native-dependent parameter, since
56caf160 4398@file{setjmp.h} is needed to define it.
c906108c 4399
56caf160 4400This macro determines the target PC address that @code{longjmp} will jump to,
c906108c 4401assuming that we have just stopped at a longjmp breakpoint. It takes a
56caf160 4402@code{CORE_ADDR *} as argument, and stores the target PC value through this
c906108c
SS
4403pointer. It examines the current state of the machine as needed.
4404
9742079a
EZ
4405@item I386_USE_GENERIC_WATCHPOINTS
4406An x86-based machine can define this to use the generic x86 watchpoint
4407support; see @ref{Algorithms, I386_USE_GENERIC_WATCHPOINTS}.
4408
c906108c 4409@item KERNEL_U_ADDR
56caf160 4410@findex KERNEL_U_ADDR
c906108c 4411Define this to the address of the @code{u} structure (the ``user
25822942 4412struct'', also known as the ``u-page'') in kernel virtual memory. @value{GDBN}
c906108c
SS
4413needs to know this so that it can subtract this address from absolute
4414addresses in the upage, that are obtained via ptrace or from core files.
4415On systems that don't need this value, set it to zero.
4416
4417@item KERNEL_U_ADDR_BSD
56caf160 4418@findex KERNEL_U_ADDR_BSD
25822942 4419Define this to cause @value{GDBN} to determine the address of @code{u} at
c906108c
SS
4420runtime, by using Berkeley-style @code{nlist} on the kernel's image in
4421the root directory.
4422
4423@item KERNEL_U_ADDR_HPUX
56caf160 4424@findex KERNEL_U_ADDR_HPUX
25822942 4425Define this to cause @value{GDBN} to determine the address of @code{u} at
c906108c
SS
4426runtime, by using HP-style @code{nlist} on the kernel's image in the
4427root directory.
4428
4429@item ONE_PROCESS_WRITETEXT
56caf160 4430@findex ONE_PROCESS_WRITETEXT
c906108c
SS
4431Define this to be able to, when a breakpoint insertion fails, warn the
4432user that another process may be running with the same executable.
4433
56caf160
EZ
4434@item PREPARE_TO_PROCEED (@var{select_it})
4435@findex PREPARE_TO_PROCEED
adf40b2e
JM
4436This (ugly) macro allows a native configuration to customize the way the
4437@code{proceed} function in @file{infrun.c} deals with switching between
4438threads.
4439
4440In a multi-threaded task we may select another thread and then continue
4441or step. But if the old thread was stopped at a breakpoint, it will
4442immediately cause another breakpoint stop without any execution (i.e. it
25822942 4443will report a breakpoint hit incorrectly). So @value{GDBN} must step over it
adf40b2e
JM
4444first.
4445
4446If defined, @code{PREPARE_TO_PROCEED} should check the current thread
4447against the thread that reported the most recent event. If a step-over
4448is required, it returns TRUE. If @var{select_it} is non-zero, it should
4449reselect the old thread.
4450
c906108c 4451@item PROC_NAME_FMT
56caf160 4452@findex PROC_NAME_FMT
c906108c
SS
4453Defines the format for the name of a @file{/proc} device. Should be
4454defined in @file{nm.h} @emph{only} in order to override the default
4455definition in @file{procfs.c}.
4456
4457@item PTRACE_FP_BUG
56caf160
EZ
4458@findex PTRACE_FP_BUG
4459See @file{mach386-xdep.c}.
c906108c
SS
4460
4461@item PTRACE_ARG3_TYPE
56caf160 4462@findex PTRACE_ARG3_TYPE
c906108c
SS
4463The type of the third argument to the @code{ptrace} system call, if it
4464exists and is different from @code{int}.
4465
4466@item REGISTER_U_ADDR
56caf160 4467@findex REGISTER_U_ADDR
c906108c
SS
4468Defines the offset of the registers in the ``u area''.
4469
4470@item SHELL_COMMAND_CONCAT
56caf160 4471@findex SHELL_COMMAND_CONCAT
c906108c
SS
4472If defined, is a string to prefix on the shell command used to start the
4473inferior.
4474
4475@item SHELL_FILE
56caf160 4476@findex SHELL_FILE
c906108c
SS
4477If defined, this is the name of the shell to use to run the inferior.
4478Defaults to @code{"/bin/sh"}.
4479
990f9fe3 4480@item SOLIB_ADD (@var{filename}, @var{from_tty}, @var{targ}, @var{readsyms})
56caf160 4481@findex SOLIB_ADD
c906108c 4482Define this to expand into an expression that will cause the symbols in
990f9fe3
FF
4483@var{filename} to be added to @value{GDBN}'s symbol table. If
4484@var{readsyms} is zero symbols are not read but any necessary low level
4485processing for @var{filename} is still done.
c906108c
SS
4486
4487@item SOLIB_CREATE_INFERIOR_HOOK
56caf160 4488@findex SOLIB_CREATE_INFERIOR_HOOK
c906108c
SS
4489Define this to expand into any shared-library-relocation code that you
4490want to be run just after the child process has been forked.
4491
4492@item START_INFERIOR_TRAPS_EXPECTED
56caf160
EZ
4493@findex START_INFERIOR_TRAPS_EXPECTED
4494When starting an inferior, @value{GDBN} normally expects to trap
4495twice; once when
c906108c
SS
4496the shell execs, and once when the program itself execs. If the actual
4497number of traps is something other than 2, then define this macro to
4498expand into the number expected.
4499
4500@item SVR4_SHARED_LIBS
56caf160 4501@findex SVR4_SHARED_LIBS
c906108c
SS
4502Define this to indicate that SVR4-style shared libraries are in use.
4503
4504@item USE_PROC_FS
56caf160 4505@findex USE_PROC_FS
c906108c 4506This determines whether small routines in @file{*-tdep.c}, which
56caf160
EZ
4507translate register values between @value{GDBN}'s internal
4508representation and the @file{/proc} representation, are compiled.
c906108c
SS
4509
4510@item U_REGS_OFFSET
56caf160 4511@findex U_REGS_OFFSET
c906108c
SS
4512This is the offset of the registers in the upage. It need only be
4513defined if the generic ptrace register access routines in
4514@file{infptrace.c} are being used (that is, @file{infptrace.c} is
4515configured in, and @code{FETCH_INFERIOR_REGISTERS} is not defined). If
4516the default value from @file{infptrace.c} is good enough, leave it
4517undefined.
4518
4519The default value means that u.u_ar0 @emph{points to} the location of
4520the registers. I'm guessing that @code{#define U_REGS_OFFSET 0} means
56caf160 4521that @code{u.u_ar0} @emph{is} the location of the registers.
c906108c
SS
4522
4523@item CLEAR_SOLIB
56caf160
EZ
4524@findex CLEAR_SOLIB
4525See @file{objfiles.c}.
c906108c
SS
4526
4527@item DEBUG_PTRACE
56caf160
EZ
4528@findex DEBUG_PTRACE
4529Define this to debug @code{ptrace} calls.
c906108c
SS
4530@end table
4531
4532
4533@node Support Libraries
4534
4535@chapter Support Libraries
4536
4537@section BFD
56caf160 4538@cindex BFD library
c906108c 4539
25822942 4540BFD provides support for @value{GDBN} in several ways:
c906108c
SS
4541
4542@table @emph
c906108c
SS
4543@item identifying executable and core files
4544BFD will identify a variety of file types, including a.out, coff, and
4545several variants thereof, as well as several kinds of core files.
4546
4547@item access to sections of files
4548BFD parses the file headers to determine the names, virtual addresses,
4549sizes, and file locations of all the various named sections in files
56caf160
EZ
4550(such as the text section or the data section). @value{GDBN} simply
4551calls BFD to read or write section @var{x} at byte offset @var{y} for
4552length @var{z}.
c906108c
SS
4553
4554@item specialized core file support
4555BFD provides routines to determine the failing command name stored in a
4556core file, the signal with which the program failed, and whether a core
56caf160 4557file matches (i.e.@: could be a core dump of) a particular executable
c906108c
SS
4558file.
4559
4560@item locating the symbol information
25822942
DB
4561@value{GDBN} uses an internal interface of BFD to determine where to find the
4562symbol information in an executable file or symbol-file. @value{GDBN} itself
c906108c 4563handles the reading of symbols, since BFD does not ``understand'' debug
25822942 4564symbols, but @value{GDBN} uses BFD's cached information to find the symbols,
c906108c 4565string table, etc.
c906108c
SS
4566@end table
4567
4568@section opcodes
56caf160 4569@cindex opcodes library
c906108c 4570
25822942 4571The opcodes library provides @value{GDBN}'s disassembler. (It's a separate
c906108c
SS
4572library because it's also used in binutils, for @file{objdump}).
4573
4574@section readline
4575
4576@section mmalloc
4577
4578@section libiberty
4579
4580@section gnu-regex
56caf160 4581@cindex regular expressions library
c906108c
SS
4582
4583Regex conditionals.
4584
4585@table @code
c906108c
SS
4586@item C_ALLOCA
4587
4588@item NFAILURES
4589
4590@item RE_NREGS
4591
4592@item SIGN_EXTEND_CHAR
4593
4594@item SWITCH_ENUM_BUG
4595
4596@item SYNTAX_TABLE
4597
4598@item Sword
4599
4600@item sparc
c906108c
SS
4601@end table
4602
4603@section include
4604
4605@node Coding
4606
4607@chapter Coding
4608
4609This chapter covers topics that are lower-level than the major
25822942 4610algorithms of @value{GDBN}.
c906108c
SS
4611
4612@section Cleanups
56caf160 4613@cindex cleanups
c906108c
SS
4614
4615Cleanups are a structured way to deal with things that need to be done
cc1cb004 4616later.
c906108c 4617
cc1cb004
AC
4618When your code does something (e.g., @code{xmalloc} some memory, or
4619@code{open} a file) that needs to be undone later (e.g., @code{xfree}
4620the memory or @code{close} the file), it can make a cleanup. The
4621cleanup will be done at some future point: when the command is finished
4622and control returns to the top level; when an error occurs and the stack
4623is unwound; or when your code decides it's time to explicitly perform
4624cleanups. Alternatively you can elect to discard the cleanups you
4625created.
c906108c
SS
4626
4627Syntax:
4628
4629@table @code
c906108c
SS
4630@item struct cleanup *@var{old_chain};
4631Declare a variable which will hold a cleanup chain handle.
4632
56caf160 4633@findex make_cleanup
c906108c
SS
4634@item @var{old_chain} = make_cleanup (@var{function}, @var{arg});
4635Make a cleanup which will cause @var{function} to be called with
4636@var{arg} (a @code{char *}) later. The result, @var{old_chain}, is a
cc1cb004
AC
4637handle that can later be passed to @code{do_cleanups} or
4638@code{discard_cleanups}. Unless you are going to call
4639@code{do_cleanups} or @code{discard_cleanups}, you can ignore the result
4640from @code{make_cleanup}.
c906108c 4641
56caf160 4642@findex do_cleanups
c906108c 4643@item do_cleanups (@var{old_chain});
cc1cb004
AC
4644Do all cleanups added to the chain since the corresponding
4645@code{make_cleanup} call was made.
4646
4647@findex discard_cleanups
4648@item discard_cleanups (@var{old_chain});
4649Same as @code{do_cleanups} except that it just removes the cleanups from
4650the chain and does not call the specified functions.
4651@end table
4652
4653Cleanups are implemented as a chain. The handle returned by
4654@code{make_cleanups} includes the cleanup passed to the call and any
4655later cleanups appended to the chain (but not yet discarded or
4656performed). E.g.:
56caf160 4657
474c8240 4658@smallexample
c906108c 4659make_cleanup (a, 0);
cc1cb004
AC
4660@{
4661 struct cleanup *old = make_cleanup (b, 0);
4662 make_cleanup (c, 0)
4663 ...
4664 do_cleanups (old);
4665@}
474c8240 4666@end smallexample
56caf160 4667
c906108c 4668@noindent
cc1cb004
AC
4669will call @code{c()} and @code{b()} but will not call @code{a()}. The
4670cleanup that calls @code{a()} will remain in the cleanup chain, and will
4671be done later unless otherwise discarded.@refill
4672
4673Your function should explicitly do or discard the cleanups it creates.
4674Failing to do this leads to non-deterministic behavior since the caller
4675will arbitrarily do or discard your functions cleanups. This need leads
4676to two common cleanup styles.
4677
4678The first style is try/finally. Before it exits, your code-block calls
4679@code{do_cleanups} with the old cleanup chain and thus ensures that your
4680code-block's cleanups are always performed. For instance, the following
4681code-segment avoids a memory leak problem (even when @code{error} is
4682called and a forced stack unwind occurs) by ensuring that the
4683@code{xfree} will always be called:
c906108c 4684
474c8240 4685@smallexample
cc1cb004
AC
4686struct cleanup *old = make_cleanup (null_cleanup, 0);
4687data = xmalloc (sizeof blah);
4688make_cleanup (xfree, data);
4689... blah blah ...
4690do_cleanups (old);
474c8240 4691@end smallexample
cc1cb004
AC
4692
4693The second style is try/except. Before it exits, your code-block calls
4694@code{discard_cleanups} with the old cleanup chain and thus ensures that
4695any created cleanups are not performed. For instance, the following
4696code segment, ensures that the file will be closed but only if there is
4697an error:
4698
474c8240 4699@smallexample
cc1cb004
AC
4700FILE *file = fopen ("afile", "r");
4701struct cleanup *old = make_cleanup (close_file, file);
4702... blah blah ...
4703discard_cleanups (old);
4704return file;
474c8240 4705@end smallexample
c906108c
SS
4706
4707Some functions, e.g. @code{fputs_filtered()} or @code{error()}, specify
4708that they ``should not be called when cleanups are not in place''. This
4709means that any actions you need to reverse in the case of an error or
4710interruption must be on the cleanup chain before you call these
4711functions, since they might never return to your code (they
4712@samp{longjmp} instead).
4713
ba8c9337
AC
4714@section Per-architecture module data
4715@cindex per-architecture module data
4716@cindex multi-arch data
4717@cindex data-pointer, per-architecture/per-module
4718
4719The multi-arch framework includes a mechanism for adding module specific
4720per-architecture data-pointers to the @code{struct gdbarch} architecture
4721object.
4722
4723A module registers one or more per-architecture data-pointers using the
4724function @code{register_gdbarch_data}:
4725
4726@deftypefun struct gdbarch_data *register_gdbarch_data (gdbarch_data_init_ftype *@var{init}, gdbarch_data_free_ftype *@var{free})
4727
4728The @var{init} function is used to obtain an initial value for a
4729per-architecture data-pointer. The function is called, after the
4730architecture has been created, when the data-pointer is still
4731uninitialized (@code{NULL}) and its value has been requested via a call
4732to @code{gdbarch_data}. A data-pointer can also be initialize
4733explicitly using @code{set_gdbarch_data}.
4734
4735The @var{free} function is called when a data-pointer needs to be
4736destroyed. This occurs when either the corresponding @code{struct
4737gdbarch} object is being destroyed or when @code{set_gdbarch_data} is
4738overriding a non-@code{NULL} data-pointer value.
4739
4740The function @code{register_gdbarch_data} returns a @code{struct
4741gdbarch_data} that is used to identify the data-pointer that was added
4742to the module.
4743
4744@end deftypefun
4745
4746A typical module has @code{init} and @code{free} functions of the form:
4747
4748@smallexample
4749static struct gdbarch_data *nozel_handle;
4750static void *
4751nozel_init (struct gdbarch *gdbarch)
4752@{
4753 struct nozel *data = XMALLOC (struct nozel);
4754 @dots{}
4755 return data;
4756@}
4757@dots{}
4758static void
4759nozel_free (struct gdbarch *gdbarch, void *data)
4760@{
4761 xfree (data);
4762@}
4763@end smallexample
4764
4765Since uninitialized (@code{NULL}) data-pointers are initialized
4766on-demand, an @code{init} function is free to call other modules that
4767use data-pointers. Those modules data-pointers will be initialized as
4768needed. Care should be taken to ensure that the @code{init} call graph
4769does not contain cycles.
4770
4771The data-pointer is registered with the call:
4772
4773@smallexample
4774void
4775_initialize_nozel (void)
4776@{
4777 nozel_handle = register_gdbarch_data (nozel_init, nozel_free);
4778@dots{}
4779@end smallexample
4780
4781The per-architecture data-pointer is accessed using the function:
4782
4783@deftypefun void *gdbarch_data (struct gdbarch *@var{gdbarch}, struct gdbarch_data *@var{data_handle})
4784Given the architecture @var{arch} and module data handle
4785@var{data_handle} (returned by @code{register_gdbarch_data}, this
4786function returns the current value of the per-architecture data-pointer.
4787@end deftypefun
4788
4789The non-@code{NULL} data-pointer returned by @code{gdbarch_data} should
4790be saved in a local variable and then used directly:
4791
4792@smallexample
4793int
4794nozel_total (struct gdbarch *gdbarch)
4795@{
4796 int total;
4797 struct nozel *data = gdbarch_data (gdbarch, nozel_handle);
4798 @dots{}
4799 return total;
4800@}
4801@end smallexample
4802
4803It is also possible to directly initialize the data-pointer using:
4804
4805@deftypefun void set_gdbarch_data (struct gdbarch *@var{gdbarch}, struct gdbarch_data *handle, void *@var{pointer})
4806Update the data-pointer corresponding to @var{handle} with the value of
4807@var{pointer}. If the previous data-pointer value is non-NULL, then it
4808is freed using data-pointers @var{free} function.
4809@end deftypefun
4810
4811This function is used by modules that require a mechanism for explicitly
4812setting the per-architecture data-pointer during architecture creation:
4813
4814@smallexample
4815/* Called during architecture creation. */
4816extern void
4817set_gdbarch_nozel (struct gdbarch *gdbarch,
4818 int total)
4819@{
4820 struct nozel *data = XMALLOC (struct nozel);
4821 @dots{}
4822 set_gdbarch_data (gdbarch, nozel_handle, nozel);
4823@}
4824@end smallexample
4825
4826@smallexample
4827/* Default, called when nozel not set by set_gdbarch_nozel(). */
4828static void *
4829nozel_init (struct gdbarch *gdbarch)
4830@{
4831 struct nozel *default_nozel = XMALLOC (struc nozel);
4832 @dots{}
4833 return default_nozel;
4834@}
4835@end smallexample
4836
4837@smallexample
4838void
4839_initialize_nozel (void)
4840@{
4841 nozel_handle = register_gdbarch_data (nozel_init, NULL);
4842 @dots{}
4843@end smallexample
4844
4845@noindent
4846Note that an @code{init} function still needs to be registered. It is
4847used to initialize the data-pointer when the architecture creation phase
4848fail to set an initial value.
4849
4850
c906108c 4851@section Wrapping Output Lines
56caf160 4852@cindex line wrap in output
c906108c 4853
56caf160 4854@findex wrap_here
c906108c
SS
4855Output that goes through @code{printf_filtered} or @code{fputs_filtered}
4856or @code{fputs_demangled} needs only to have calls to @code{wrap_here}
4857added in places that would be good breaking points. The utility
4858routines will take care of actually wrapping if the line width is
4859exceeded.
4860
4861The argument to @code{wrap_here} is an indentation string which is
4862printed @emph{only} if the line breaks there. This argument is saved
4863away and used later. It must remain valid until the next call to
4864@code{wrap_here} or until a newline has been printed through the
4865@code{*_filtered} functions. Don't pass in a local variable and then
4866return!
4867
56caf160 4868It is usually best to call @code{wrap_here} after printing a comma or
c906108c
SS
4869space. If you call it before printing a space, make sure that your
4870indentation properly accounts for the leading space that will print if
4871the line wraps there.
4872
4873Any function or set of functions that produce filtered output must
4874finish by printing a newline, to flush the wrap buffer, before switching
56caf160 4875to unfiltered (@code{printf}) output. Symbol reading routines that
c906108c
SS
4876print warnings are a good example.
4877
25822942 4878@section @value{GDBN} Coding Standards
56caf160 4879@cindex coding standards
c906108c 4880
25822942 4881@value{GDBN} follows the GNU coding standards, as described in
c906108c 4882@file{etc/standards.texi}. This file is also available for anonymous
af6c57ea
AC
4883FTP from GNU archive sites. @value{GDBN} takes a strict interpretation
4884of the standard; in general, when the GNU standard recommends a practice
4885but does not require it, @value{GDBN} requires it.
c906108c 4886
56caf160
EZ
4887@value{GDBN} follows an additional set of coding standards specific to
4888@value{GDBN}, as described in the following sections.
c906108c 4889
af6c57ea 4890
b9aa90c9 4891@subsection ISO C
af6c57ea 4892
b9aa90c9
AC
4893@value{GDBN} assumes an ISO/IEC 9899:1990 (a.k.a.@: ISO C90) compliant
4894compiler.
af6c57ea 4895
b9aa90c9 4896@value{GDBN} does not assume an ISO C or POSIX compliant C library.
af6c57ea
AC
4897
4898
4899@subsection Memory Management
4900
4901@value{GDBN} does not use the functions @code{malloc}, @code{realloc},
4902@code{calloc}, @code{free} and @code{asprintf}.
4903
4904@value{GDBN} uses the functions @code{xmalloc}, @code{xrealloc} and
4905@code{xcalloc} when allocating memory. Unlike @code{malloc} et.al.@:
4906these functions do not return when the memory pool is empty. Instead,
4907they unwind the stack using cleanups. These functions return
4908@code{NULL} when requested to allocate a chunk of memory of size zero.
4909
4910@emph{Pragmatics: By using these functions, the need to check every
4911memory allocation is removed. These functions provide portable
4912behavior.}
4913
4914@value{GDBN} does not use the function @code{free}.
4915
4916@value{GDBN} uses the function @code{xfree} to return memory to the
4917memory pool. Consistent with ISO-C, this function ignores a request to
4918free a @code{NULL} pointer.
4919
4920@emph{Pragmatics: On some systems @code{free} fails when passed a
4921@code{NULL} pointer.}
4922
4923@value{GDBN} can use the non-portable function @code{alloca} for the
4924allocation of small temporary values (such as strings).
4925
4926@emph{Pragmatics: This function is very non-portable. Some systems
4927restrict the memory being allocated to no more than a few kilobytes.}
4928
4929@value{GDBN} uses the string function @code{xstrdup} and the print
4930function @code{xasprintf}.
4931
4932@emph{Pragmatics: @code{asprintf} and @code{strdup} can fail. Print
4933functions such as @code{sprintf} are very prone to buffer overflow
4934errors.}
4935
4936
4937@subsection Compiler Warnings
56caf160 4938@cindex compiler warnings
af6c57ea
AC
4939
4940With few exceptions, developers should include the configuration option
4941@samp{--enable-gdb-build-warnings=,-Werror} when building @value{GDBN}.
4942The exceptions are listed in the file @file{gdb/MAINTAINERS}.
4943
4944This option causes @value{GDBN} (when built using GCC) to be compiled
4945with a carefully selected list of compiler warning flags. Any warnings
4946from those flags being treated as errors.
4947
4948The current list of warning flags includes:
4949
4950@table @samp
4951@item -Wimplicit
4952Since @value{GDBN} coding standard requires all functions to be declared
4953using a prototype, the flag has the side effect of ensuring that
4954prototyped functions are always visible with out resorting to
4955@samp{-Wstrict-prototypes}.
4956
4957@item -Wreturn-type
4958Such code often appears to work except on instruction set architectures
4959that use register windows.
4960
4961@item -Wcomment
4962
4963@item -Wtrigraphs
4964
4965@item -Wformat
4966Since @value{GDBN} uses the @code{format printf} attribute on all
4967@code{printf} like functions this checks not just @code{printf} calls
4968but also calls to functions such as @code{fprintf_unfiltered}.
4969
4970@item -Wparentheses
4971This warning includes uses of the assignment operator within an
4972@code{if} statement.
4973
4974@item -Wpointer-arith
4975
4976@item -Wuninitialized
4977@end table
4978
4979@emph{Pragmatics: Due to the way that @value{GDBN} is implemented most
4980functions have unused parameters. Consequently the warning
4981@samp{-Wunused-parameter} is precluded from the list. The macro
4982@code{ATTRIBUTE_UNUSED} is not used as it leads to false negatives ---
4983it is not an error to have @code{ATTRIBUTE_UNUSED} on a parameter that
4984is being used. The options @samp{-Wall} and @samp{-Wunused} are also
4985precluded because they both include @samp{-Wunused-parameter}.}
4986
4987@emph{Pragmatics: @value{GDBN} has not simply accepted the warnings
4988enabled by @samp{-Wall -Werror -W...}. Instead it is selecting warnings
4989when and where their benefits can be demonstrated.}
c906108c
SS
4990
4991@subsection Formatting
4992
56caf160 4993@cindex source code formatting
c906108c
SS
4994The standard GNU recommendations for formatting must be followed
4995strictly.
4996
af6c57ea
AC
4997A function declaration should not have its name in column zero. A
4998function definition should have its name in column zero.
4999
474c8240 5000@smallexample
af6c57ea
AC
5001/* Declaration */
5002static void foo (void);
5003/* Definition */
5004void
5005foo (void)
5006@{
5007@}
474c8240 5008@end smallexample
af6c57ea
AC
5009
5010@emph{Pragmatics: This simplifies scripting. Function definitions can
5011be found using @samp{^function-name}.}
c906108c 5012
af6c57ea
AC
5013There must be a space between a function or macro name and the opening
5014parenthesis of its argument list (except for macro definitions, as
5015required by C). There must not be a space after an open paren/bracket
5016or before a close paren/bracket.
c906108c
SS
5017
5018While additional whitespace is generally helpful for reading, do not use
5019more than one blank line to separate blocks, and avoid adding whitespace
af6c57ea
AC
5020after the end of a program line (as of 1/99, some 600 lines had
5021whitespace after the semicolon). Excess whitespace causes difficulties
5022for @code{diff} and @code{patch} utilities.
5023
5024Pointers are declared using the traditional K&R C style:
5025
474c8240 5026@smallexample
af6c57ea 5027void *foo;
474c8240 5028@end smallexample
af6c57ea
AC
5029
5030@noindent
5031and not:
5032
474c8240 5033@smallexample
af6c57ea
AC
5034void * foo;
5035void* foo;
474c8240 5036@end smallexample
c906108c
SS
5037
5038@subsection Comments
5039
56caf160 5040@cindex comment formatting
c906108c
SS
5041The standard GNU requirements on comments must be followed strictly.
5042
af6c57ea
AC
5043Block comments must appear in the following form, with no @code{/*}- or
5044@code{*/}-only lines, and no leading @code{*}:
c906108c 5045
474c8240 5046@smallexample
c906108c
SS
5047/* Wait for control to return from inferior to debugger. If inferior
5048 gets a signal, we may decide to start it up again instead of
5049 returning. That is why there is a loop in this function. When
5050 this function actually returns it means the inferior should be left
25822942 5051 stopped and @value{GDBN} should read more commands. */
474c8240 5052@end smallexample
c906108c
SS
5053
5054(Note that this format is encouraged by Emacs; tabbing for a multi-line
56caf160 5055comment works correctly, and @kbd{M-q} fills the block consistently.)
c906108c
SS
5056
5057Put a blank line between the block comments preceding function or
5058variable definitions, and the definition itself.
5059
5060In general, put function-body comments on lines by themselves, rather
5061than trying to fit them into the 20 characters left at the end of a
5062line, since either the comment or the code will inevitably get longer
5063than will fit, and then somebody will have to move it anyhow.
5064
5065@subsection C Usage
5066
56caf160 5067@cindex C data types
c906108c
SS
5068Code must not depend on the sizes of C data types, the format of the
5069host's floating point numbers, the alignment of anything, or the order
5070of evaluation of expressions.
5071
56caf160 5072@cindex function usage
c906108c 5073Use functions freely. There are only a handful of compute-bound areas
56caf160
EZ
5074in @value{GDBN} that might be affected by the overhead of a function
5075call, mainly in symbol reading. Most of @value{GDBN}'s performance is
5076limited by the target interface (whether serial line or system call).
c906108c
SS
5077
5078However, use functions with moderation. A thousand one-line functions
5079are just as hard to understand as a single thousand-line function.
5080
af6c57ea 5081@emph{Macros are bad, M'kay.}
9e678452
CF
5082(But if you have to use a macro, make sure that the macro arguments are
5083protected with parentheses.)
af6c57ea
AC
5084
5085@cindex types
c906108c 5086
af6c57ea
AC
5087Declarations like @samp{struct foo *} should be used in preference to
5088declarations like @samp{typedef struct foo @{ @dots{} @} *foo_ptr}.
5089
5090
5091@subsection Function Prototypes
56caf160 5092@cindex function prototypes
af6c57ea
AC
5093
5094Prototypes must be used when both @emph{declaring} and @emph{defining}
5095a function. Prototypes for @value{GDBN} functions must include both the
5096argument type and name, with the name matching that used in the actual
5097function definition.
c906108c 5098
53a5351d
JM
5099All external functions should have a declaration in a header file that
5100callers include, except for @code{_initialize_*} functions, which must
5101be external so that @file{init.c} construction works, but shouldn't be
5102visible to random source files.
c906108c 5103
af6c57ea
AC
5104Where a source file needs a forward declaration of a static function,
5105that declaration must appear in a block near the top of the source file.
5106
5107
5108@subsection Internal Error Recovery
5109
5110During its execution, @value{GDBN} can encounter two types of errors.
5111User errors and internal errors. User errors include not only a user
5112entering an incorrect command but also problems arising from corrupt
5113object files and system errors when interacting with the target.
937f164b
FF
5114Internal errors include situations where @value{GDBN} has detected, at
5115run time, a corrupt or erroneous situation.
af6c57ea
AC
5116
5117When reporting an internal error, @value{GDBN} uses
5118@code{internal_error} and @code{gdb_assert}.
5119
5120@value{GDBN} must not call @code{abort} or @code{assert}.
5121
5122@emph{Pragmatics: There is no @code{internal_warning} function. Either
5123the code detected a user error, recovered from it and issued a
5124@code{warning} or the code failed to correctly recover from the user
5125error and issued an @code{internal_error}.}
5126
5127@subsection File Names
5128
5129Any file used when building the core of @value{GDBN} must be in lower
5130case. Any file used when building the core of @value{GDBN} must be 8.3
5131unique. These requirements apply to both source and generated files.
5132
5133@emph{Pragmatics: The core of @value{GDBN} must be buildable on many
5134platforms including DJGPP and MacOS/HFS. Every time an unfriendly file
5135is introduced to the build process both @file{Makefile.in} and
5136@file{configure.in} need to be modified accordingly. Compare the
5137convoluted conversion process needed to transform @file{COPYING} into
5138@file{copying.c} with the conversion needed to transform
5139@file{version.in} into @file{version.c}.}
5140
5141Any file non 8.3 compliant file (that is not used when building the core
5142of @value{GDBN}) must be added to @file{gdb/config/djgpp/fnchange.lst}.
5143
5144@emph{Pragmatics: This is clearly a compromise.}
5145
5146When @value{GDBN} has a local version of a system header file (ex
5147@file{string.h}) the file name based on the POSIX header prefixed with
5148@file{gdb_} (@file{gdb_string.h}).
5149
5150For other files @samp{-} is used as the separator.
5151
5152
5153@subsection Include Files
5154
e2b28d04 5155A @file{.c} file should include @file{defs.h} first.
af6c57ea 5156
e2b28d04
AC
5157A @file{.c} file should directly include the @code{.h} file of every
5158declaration and/or definition it directly refers to. It cannot rely on
5159indirect inclusion.
af6c57ea 5160
e2b28d04
AC
5161A @file{.h} file should directly include the @code{.h} file of every
5162declaration and/or definition it directly refers to. It cannot rely on
5163indirect inclusion. Exception: The file @file{defs.h} does not need to
5164be directly included.
af6c57ea 5165
e2b28d04 5166An external declaration should only appear in one include file.
af6c57ea 5167
e2b28d04
AC
5168An external declaration should never appear in a @code{.c} file.
5169Exception: a declaration for the @code{_initialize} function that
5170pacifies @option{-Wmissing-declaration}.
5171
5172A @code{typedef} definition should only appear in one include file.
5173
5174An opaque @code{struct} declaration can appear in multiple @file{.h}
5175files. Where possible, a @file{.h} file should use an opaque
5176@code{struct} declaration instead of an include.
5177
5178All @file{.h} files should be wrapped in:
af6c57ea 5179
474c8240 5180@smallexample
af6c57ea
AC
5181#ifndef INCLUDE_FILE_NAME_H
5182#define INCLUDE_FILE_NAME_H
5183header body
5184#endif
474c8240 5185@end smallexample
af6c57ea 5186
c906108c 5187
dab11f21 5188@subsection Clean Design and Portable Implementation
c906108c 5189
56caf160 5190@cindex design
c906108c 5191In addition to getting the syntax right, there's the little question of
25822942 5192semantics. Some things are done in certain ways in @value{GDBN} because long
c906108c
SS
5193experience has shown that the more obvious ways caused various kinds of
5194trouble.
5195
56caf160 5196@cindex assumptions about targets
c906108c
SS
5197You can't assume the byte order of anything that comes from a target
5198(including @var{value}s, object files, and instructions). Such things
56caf160
EZ
5199must be byte-swapped using @code{SWAP_TARGET_AND_HOST} in
5200@value{GDBN}, or one of the swap routines defined in @file{bfd.h},
5201such as @code{bfd_get_32}.
c906108c
SS
5202
5203You can't assume that you know what interface is being used to talk to
5204the target system. All references to the target must go through the
5205current @code{target_ops} vector.
5206
5207You can't assume that the host and target machines are the same machine
5208(except in the ``native'' support modules). In particular, you can't
5209assume that the target machine's header files will be available on the
5210host machine. Target code must bring along its own header files --
5211written from scratch or explicitly donated by their owner, to avoid
5212copyright problems.
5213
56caf160 5214@cindex portability
c906108c
SS
5215Insertion of new @code{#ifdef}'s will be frowned upon. It's much better
5216to write the code portably than to conditionalize it for various
5217systems.
5218
56caf160 5219@cindex system dependencies
c906108c
SS
5220New @code{#ifdef}'s which test for specific compilers or manufacturers
5221or operating systems are unacceptable. All @code{#ifdef}'s should test
5222for features. The information about which configurations contain which
5223features should be segregated into the configuration files. Experience
5224has proven far too often that a feature unique to one particular system
5225often creeps into other systems; and that a conditional based on some
5226predefined macro for your current system will become worthless over
5227time, as new versions of your system come out that behave differently
5228with regard to this feature.
5229
5230Adding code that handles specific architectures, operating systems,
af6c57ea 5231target interfaces, or hosts, is not acceptable in generic code.
c906108c 5232
dab11f21
EZ
5233@cindex portable file name handling
5234@cindex file names, portability
5235One particularly notorious area where system dependencies tend to
5236creep in is handling of file names. The mainline @value{GDBN} code
5237assumes Posix semantics of file names: absolute file names begin with
5238a forward slash @file{/}, slashes are used to separate leading
5239directories, case-sensitive file names. These assumptions are not
5240necessarily true on non-Posix systems such as MS-Windows. To avoid
5241system-dependent code where you need to take apart or construct a file
5242name, use the following portable macros:
5243
5244@table @code
5245@findex HAVE_DOS_BASED_FILE_SYSTEM
5246@item HAVE_DOS_BASED_FILE_SYSTEM
5247This preprocessing symbol is defined to a non-zero value on hosts
5248whose filesystems belong to the MS-DOS/MS-Windows family. Use this
5249symbol to write conditional code which should only be compiled for
5250such hosts.
5251
5252@findex IS_DIR_SEPARATOR
4be31470 5253@item IS_DIR_SEPARATOR (@var{c})
dab11f21
EZ
5254Evaluates to a non-zero value if @var{c} is a directory separator
5255character. On Unix and GNU/Linux systems, only a slash @file{/} is
5256such a character, but on Windows, both @file{/} and @file{\} will
5257pass.
5258
5259@findex IS_ABSOLUTE_PATH
5260@item IS_ABSOLUTE_PATH (@var{file})
5261Evaluates to a non-zero value if @var{file} is an absolute file name.
5262For Unix and GNU/Linux hosts, a name which begins with a slash
5263@file{/} is absolute. On DOS and Windows, @file{d:/foo} and
5264@file{x:\bar} are also absolute file names.
5265
5266@findex FILENAME_CMP
5267@item FILENAME_CMP (@var{f1}, @var{f2})
5268Calls a function which compares file names @var{f1} and @var{f2} as
5269appropriate for the underlying host filesystem. For Posix systems,
5270this simply calls @code{strcmp}; on case-insensitive filesystems it
5271will call @code{strcasecmp} instead.
5272
5273@findex DIRNAME_SEPARATOR
5274@item DIRNAME_SEPARATOR
5275Evaluates to a character which separates directories in
5276@code{PATH}-style lists, typically held in environment variables.
5277This character is @samp{:} on Unix, @samp{;} on DOS and Windows.
5278
5279@findex SLASH_STRING
5280@item SLASH_STRING
5281This evaluates to a constant string you should use to produce an
5282absolute filename from leading directories and the file's basename.
5283@code{SLASH_STRING} is @code{"/"} on most systems, but might be
5284@code{"\\"} for some Windows-based ports.
5285@end table
5286
5287In addition to using these macros, be sure to use portable library
5288functions whenever possible. For example, to extract a directory or a
5289basename part from a file name, use the @code{dirname} and
5290@code{basename} library functions (available in @code{libiberty} for
5291platforms which don't provide them), instead of searching for a slash
5292with @code{strrchr}.
5293
25822942
DB
5294Another way to generalize @value{GDBN} along a particular interface is with an
5295attribute struct. For example, @value{GDBN} has been generalized to handle
56caf160
EZ
5296multiple kinds of remote interfaces---not by @code{#ifdef}s everywhere, but
5297by defining the @code{target_ops} structure and having a current target (as
c906108c
SS
5298well as a stack of targets below it, for memory references). Whenever
5299something needs to be done that depends on which remote interface we are
56caf160
EZ
5300using, a flag in the current target_ops structure is tested (e.g.,
5301@code{target_has_stack}), or a function is called through a pointer in the
c906108c 5302current target_ops structure. In this way, when a new remote interface
56caf160 5303is added, only one module needs to be touched---the one that actually
c906108c
SS
5304implements the new remote interface. Other examples of
5305attribute-structs are BFD access to multiple kinds of object file
25822942 5306formats, or @value{GDBN}'s access to multiple source languages.
c906108c 5307
56caf160
EZ
5308Please avoid duplicating code. For example, in @value{GDBN} 3.x all
5309the code interfacing between @code{ptrace} and the rest of
5310@value{GDBN} was duplicated in @file{*-dep.c}, and so changing
5311something was very painful. In @value{GDBN} 4.x, these have all been
5312consolidated into @file{infptrace.c}. @file{infptrace.c} can deal
5313with variations between systems the same way any system-independent
5314file would (hooks, @code{#if defined}, etc.), and machines which are
5315radically different don't need to use @file{infptrace.c} at all.
c906108c 5316
af6c57ea
AC
5317All debugging code must be controllable using the @samp{set debug
5318@var{module}} command. Do not use @code{printf} to print trace
5319messages. Use @code{fprintf_unfiltered(gdb_stdlog, ...}. Do not use
5320@code{#ifdef DEBUG}.
5321
c906108c 5322
8487521e 5323@node Porting GDB
c906108c 5324
25822942 5325@chapter Porting @value{GDBN}
56caf160 5326@cindex porting to new machines
c906108c 5327
56caf160
EZ
5328Most of the work in making @value{GDBN} compile on a new machine is in
5329specifying the configuration of the machine. This is done in a
5330dizzying variety of header files and configuration scripts, which we
5331hope to make more sensible soon. Let's say your new host is called an
5332@var{xyz} (e.g., @samp{sun4}), and its full three-part configuration
5333name is @code{@var{arch}-@var{xvend}-@var{xos}} (e.g.,
5334@samp{sparc-sun-sunos4}). In particular:
c906108c 5335
56caf160
EZ
5336@itemize @bullet
5337@item
c906108c
SS
5338In the top level directory, edit @file{config.sub} and add @var{arch},
5339@var{xvend}, and @var{xos} to the lists of supported architectures,
5340vendors, and operating systems near the bottom of the file. Also, add
5341@var{xyz} as an alias that maps to
5342@code{@var{arch}-@var{xvend}-@var{xos}}. You can test your changes by
5343running
5344
474c8240 5345@smallexample
c906108c 5346./config.sub @var{xyz}
474c8240 5347@end smallexample
56caf160 5348
c906108c
SS
5349@noindent
5350and
56caf160 5351
474c8240 5352@smallexample
c906108c 5353./config.sub @code{@var{arch}-@var{xvend}-@var{xos}}
474c8240 5354@end smallexample
56caf160 5355
c906108c
SS
5356@noindent
5357which should both respond with @code{@var{arch}-@var{xvend}-@var{xos}}
5358and no error messages.
5359
56caf160 5360@noindent
c906108c
SS
5361You need to port BFD, if that hasn't been done already. Porting BFD is
5362beyond the scope of this manual.
5363
56caf160 5364@item
25822942 5365To configure @value{GDBN} itself, edit @file{gdb/configure.host} to recognize
c906108c
SS
5366your system and set @code{gdb_host} to @var{xyz}, and (unless your
5367desired target is already available) also edit @file{gdb/configure.tgt},
5368setting @code{gdb_target} to something appropriate (for instance,
5369@var{xyz}).
5370
7fd60527
AC
5371@emph{Maintainer's note: Work in progress. The file
5372@file{gdb/configure.host} originally needed to be modified when either a
5373new native target or a new host machine was being added to @value{GDBN}.
5374Recent changes have removed this requirement. The file now only needs
5375to be modified when adding a new native configuration. This will likely
5376changed again in the future.}
5377
56caf160 5378@item
25822942 5379Finally, you'll need to specify and define @value{GDBN}'s host-, native-, and
c906108c
SS
5380target-dependent @file{.h} and @file{.c} files used for your
5381configuration.
56caf160 5382@end itemize
c906108c 5383
8973da3a
AC
5384@node Releasing GDB
5385
5386@chapter Releasing @value{GDBN}
5387@cindex making a new release of gdb
5388
fb0ff88f
AC
5389@section Versions and Branches
5390
5391@subsection Version Identifiers
5392
5393@value{GDBN}'s version is determined by the file @file{gdb/version.in}.
5394
5395@value{GDBN}'s mainline uses ISO dates to differentiate between
5396versions. The CVS repository uses @var{YYYY}-@var{MM}-@var{DD}-cvs
5397while the corresponding snapshot uses @var{YYYYMMDD}.
5398
5399@value{GDBN}'s release branch uses a slightly more complicated scheme.
5400When the branch is first cut, the mainline version identifier is
5401prefixed with the @var{major}.@var{minor} from of the previous release
5402series but with .90 appended. As draft releases are drawn from the
5403branch, the minor minor number (.90) is incremented. Once the first
5404release (@var{M}.@var{N}) has been made, the version prefix is updated
5405to @var{M}.@var{N}.0.90 (dot zero, dot ninety). Follow on releases have
5406an incremented minor minor version number (.0).
5407
5408Using 5.1 (previous) and 5.2 (current), the example below illustrates a
5409typical sequence of version identifiers:
5410
5411@table @asis
5412@item 5.1.1
5413final release from previous branch
5414@item 2002-03-03-cvs
5415main-line the day the branch is cut
5416@item 5.1.90-2002-03-03-cvs
5417corresponding branch version
5418@item 5.1.91
5419first draft release candidate
5420@item 5.1.91-2002-03-17-cvs
5421updated branch version
5422@item 5.1.92
5423second draft release candidate
5424@item 5.1.92-2002-03-31-cvs
5425updated branch version
5426@item 5.1.93
5427final release candidate (see below)
5428@item 5.2
5429official release
5430@item 5.2.0.90-2002-04-07-cvs
5431updated CVS branch version
5432@item 5.2.1
5433second official release
5434@end table
5435
5436Notes:
5437
5438@itemize @bullet
5439@item
5440Minor minor minor draft release candidates such as 5.2.0.91 have been
5441omitted from the example. Such release candidates are, typically, never
5442made.
5443@item
5444For 5.1.93 the bziped tar ball @file{gdb-5.1.93.tar.bz2} is just the
5445official @file{gdb-5.2.tar} renamed and compressed.
5446@end itemize
5447
5448To avoid version conflicts, vendors are expected to modify the file
5449@file{gdb/version.in} to include a vendor unique alphabetic identifier
5450(an official @value{GDBN} release never uses alphabetic characters in
5451its version identifer).
5452
5453Since @value{GDBN} does not make minor minor minor releases (e.g.,
54545.1.0.1) the conflict between that and a minor minor draft release
5455identifier (e.g., 5.1.0.90) is avoided.
5456
5457
5458@subsection Branches
5459
5460@value{GDBN} draws a release series (5.2, 5.2.1, @dots{}) from a single
5461release branch (gdb_5_2-branch). Since minor minor minor releases
5462(5.1.0.1) are not made, the need to branch the release branch is avoided
5463(it also turns out that the effort required for such a a branch and
5464release is significantly greater than the effort needed to create a new
5465release from the head of the release branch).
5466
5467Releases 5.0 and 5.1 used branch and release tags of the form:
5468
474c8240 5469@smallexample
fb0ff88f
AC
5470gdb_N_M-YYYY-MM-DD-branchpoint
5471gdb_N_M-YYYY-MM-DD-branch
5472gdb_M_N-YYYY-MM-DD-release
474c8240 5473@end smallexample
fb0ff88f
AC
5474
5475Release 5.2 is trialing the branch and release tags:
5476
474c8240 5477@smallexample
fb0ff88f
AC
5478gdb_N_M-YYYY-MM-DD-branchpoint
5479gdb_N_M-branch
5480gdb_M_N-YYYY-MM-DD-release
474c8240 5481@end smallexample
fb0ff88f
AC
5482
5483@emph{Pragmatics: The branchpoint and release tags need to identify when
5484a branch and release are made. The branch tag, denoting the head of the
5485branch, does not have this criteria.}
5486
5487
9bb0a4d8
AC
5488@section Branch Commit Policy
5489
5490The branch commit policy is pretty slack. @value{GDBN} releases 5.0,
54915.1 and 5.2 all used the below:
5492
5493@itemize @bullet
5494@item
5495The @file{gdb/MAINTAINERS} file still holds.
5496@item
5497Don't fix something on the branch unless/until it is also fixed in the
5498trunk. If this isn't possible, mentioning it in the @file{gdb/PROBLEMS}
4be31470 5499file is better than committing a hack.
9bb0a4d8
AC
5500@item
5501When considering a patch for the branch, suggested criteria include:
5502Does it fix a build? Does it fix the sequence @kbd{break main; run}
5503when debugging a static binary?
5504@item
5505The further a change is from the core of @value{GDBN}, the less likely
5506the change will worry anyone (e.g., target specific code).
5507@item
5508Only post a proposal to change the core of @value{GDBN} after you've
5509sent individual bribes to all the people listed in the
5510@file{MAINTAINERS} file @t{;-)}
5511@end itemize
5512
5513@emph{Pragmatics: Provided updates are restricted to non-core
5514functionality there is little chance that a broken change will be fatal.
5515This means that changes such as adding a new architectures or (within
5516reason) support for a new host are considered acceptable.}
5517
5518
cbb09e6a 5519@section Obsoleting code
8973da3a 5520
8642bc8f 5521Before anything else, poke the other developers (and around the source
4be31470
EZ
5522code) to see if there is anything that can be removed from @value{GDBN}
5523(an old target, an unused file).
8973da3a 5524
8642bc8f 5525Obsolete code is identified by adding an @code{OBSOLETE} prefix to every
cbb09e6a
AC
5526line. Doing this means that it is easy to identify something that has
5527been obsoleted when greping through the sources.
8973da3a 5528
cbb09e6a
AC
5529The process is done in stages --- this is mainly to ensure that the
5530wider @value{GDBN} community has a reasonable opportunity to respond.
5531Remember, everything on the Internet takes a week.
8973da3a 5532
cbb09e6a 5533@enumerate
8973da3a 5534@item
cbb09e6a
AC
5535Post the proposal on @email{gdb@@sources.redhat.com, the GDB mailing
5536list} Creating a bug report to track the task's state, is also highly
5537recommended.
8973da3a 5538@item
cbb09e6a 5539Wait a week or so.
8973da3a 5540@item
cbb09e6a
AC
5541Post the proposal on @email{gdb-announce@@sources.redhat.com, the GDB
5542Announcement mailing list}.
8973da3a 5543@item
cbb09e6a 5544Wait a week or so.
8973da3a 5545@item
cbb09e6a
AC
5546Go through and edit all relevant files and lines so that they are
5547prefixed with the word @code{OBSOLETE}.
5548@item
5549Wait until the next GDB version, containing this obsolete code, has been
5550released.
5551@item
5552Remove the obsolete code.
5553@end enumerate
5554
5555@noindent
5556@emph{Maintainer note: While removing old code is regrettable it is
5557hopefully better for @value{GDBN}'s long term development. Firstly it
5558helps the developers by removing code that is either no longer relevant
5559or simply wrong. Secondly since it removes any history associated with
5560the file (effectively clearing the slate) the developer has a much freer
5561hand when it comes to fixing broken files.}
8973da3a 5562
8973da3a 5563
9ae8b82c
AC
5564
5565@section Before the Branch
8973da3a 5566
8642bc8f
AC
5567The most important objective at this stage is to find and fix simple
5568changes that become a pain to track once the branch is created. For
5569instance, configuration problems that stop @value{GDBN} from even
5570building. If you can't get the problem fixed, document it in the
5571@file{gdb/PROBLEMS} file.
8973da3a 5572
9ae8b82c 5573@subheading Prompt for @file{gdb/NEWS}
8973da3a 5574
9ae8b82c
AC
5575People always forget. Send a post reminding them but also if you know
5576something interesting happened add it yourself. The @code{schedule}
5577script will mention this in its e-mail.
8973da3a 5578
9ae8b82c 5579@subheading Review @file{gdb/README}
8973da3a 5580
9ae8b82c
AC
5581Grab one of the nightly snapshots and then walk through the
5582@file{gdb/README} looking for anything that can be improved. The
5583@code{schedule} script will mention this in its e-mail.
8642bc8f
AC
5584
5585@subheading Refresh any imported files.
8973da3a 5586
8642bc8f 5587A number of files are taken from external repositories. They include:
8973da3a 5588
8642bc8f
AC
5589@itemize @bullet
5590@item
5591@file{texinfo/texinfo.tex}
5592@item
9ae8b82c
AC
5593@file{config.guess} et.@: al.@: (see the top-level @file{MAINTAINERS}
5594file)
5595@item
5596@file{etc/standards.texi}, @file{etc/make-stds.texi}
8642bc8f
AC
5597@end itemize
5598
9ae8b82c 5599@subheading Check the ARI
8642bc8f 5600
9ae8b82c
AC
5601@uref{http://sources.redhat.com/gdb/ari,,A.R.I.} is an @code{awk} script
5602(Awk Regression Index ;-) that checks for a number of errors and coding
5603conventions. The checks include things like using @code{malloc} instead
5604of @code{xmalloc} and file naming problems. There shouldn't be any
5605regressions.
8642bc8f 5606
9ae8b82c 5607@subsection Review the bug data base
8642bc8f 5608
9ae8b82c 5609Close anything obviously fixed.
8642bc8f 5610
9ae8b82c 5611@subsection Check all cross targets build
8642bc8f 5612
9ae8b82c 5613The targets are listed in @file{gdb/MAINTAINERS}.
8642bc8f 5614
8642bc8f 5615
30107679 5616@section Cut the Branch
8642bc8f 5617
30107679 5618@subheading Create the branch
8642bc8f 5619
474c8240 5620@smallexample
30107679
AC
5621$ u=5.1
5622$ v=5.2
5623$ V=`echo $v | sed 's/\./_/g'`
5624$ D=`date -u +%Y-%m-%d`
5625$ echo $u $V $D
56265.1 5_2 2002-03-03
5627$ echo cvs -f -d :ext:sources.redhat.com:/cvs/src rtag \
5628-D $D-gmt gdb_$V-$D-branchpoint insight+dejagnu
5629cvs -f -d :ext:sources.redhat.com:/cvs/src rtag
5630-D 2002-03-03-gmt gdb_5_2-2002-03-03-branchpoint insight+dejagnu
5631$ ^echo ^^
5632...
5633$ echo cvs -f -d :ext:sources.redhat.com:/cvs/src rtag \
5634-b -r gdb_$V-$D-branchpoint gdb_$V-branch insight+dejagnu
5635cvs -f -d :ext:sources.redhat.com:/cvs/src rtag \
5636-b -r gdb_5_2-2002-03-03-branchpoint gdb_5_2-branch insight+dejagnu
5637$ ^echo ^^
5638...
8642bc8f 5639$
474c8240 5640@end smallexample
8642bc8f
AC
5641
5642@itemize @bullet
5643@item
30107679
AC
5644by using @kbd{-D YYYY-MM-DD-gmt} the branch is forced to an exact
5645date/time.
5646@item
5647the trunk is first taged so that the branch point can easily be found
5648@item
5649Insight (which includes GDB) and dejagnu are all tagged at the same time
8642bc8f 5650@item
30107679 5651@file{version.in} gets bumped to avoid version number conflicts
8642bc8f 5652@item
30107679
AC
5653the reading of @file{.cvsrc} is disabled using @file{-f}
5654@end itemize
5655
5656@subheading Update @file{version.in}
5657
5658@smallexample
5659$ u=5.1
5660$ v=5.2
5661$ V=`echo $v | sed 's/\./_/g'`
5662$ echo $u $v$V
56635.1 5_2
5664$ cd /tmp
5665$ echo cvs -f -d :ext:sources.redhat.com:/cvs/src co \
5666-r gdb_$V-branch src/gdb/version.in
5667cvs -f -d :ext:sources.redhat.com:/cvs/src co
5668 -r gdb_5_2-branch src/gdb/version.in
5669$ ^echo ^^
5670U src/gdb/version.in
5671$ cd src/gdb
5672$ echo $u.90-0000-00-00-cvs > version.in
5673$ cat version.in
56745.1.90-0000-00-00-cvs
5675$ cvs -f commit version.in
5676@end smallexample
5677
5678@itemize @bullet
5679@item
5680@file{0000-00-00} is used as a date to pump prime the version.in update
5681mechanism
5682@item
5683@file{.90} and the previous branch version are used as fairly arbitrary
5684initial branch version number
8642bc8f
AC
5685@end itemize
5686
8642bc8f
AC
5687
5688@subheading Update the web and news pages
5689
30107679
AC
5690Something?
5691
8642bc8f
AC
5692@subheading Tweak cron to track the new branch
5693
30107679
AC
5694The file @file{gdbadmin/cron/crontab} contains gdbadmin's cron table.
5695This file needs to be updated so that:
5696
5697@itemize @bullet
5698@item
5699a daily timestamp is added to the file @file{version.in}
5700@item
5701the new branch is included in the snapshot process
5702@end itemize
5703
5704@noindent
5705See the file @file{gdbadmin/cron/README} for how to install the updated
5706cron table.
5707
5708The file @file{gdbadmin/ss/README} should also be reviewed to reflect
5709any changes. That file is copied to both the branch/ and current/
5710snapshot directories.
5711
5712
5713@subheading Update the NEWS and README files
5714
5715The @file{NEWS} file needs to be updated so that on the branch it refers
5716to @emph{changes in the current release} while on the trunk it also
5717refers to @emph{changes since the current release}.
5718
5719The @file{README} file needs to be updated so that it refers to the
5720current release.
5721
5722@subheading Post the branch info
5723
5724Send an announcement to the mailing lists:
5725
5726@itemize @bullet
5727@item
5728@email{gdb-announce@@sources.redhat.com, GDB Announcement mailing list}
5729@item
5730@email{gdb@@sources.redhat.com, GDB Discsussion mailing list} and
5731@email{gdb-testers@@sources.redhat.com, GDB Discsussion mailing list}
16737d73 5732@end itemize
30107679
AC
5733
5734@emph{Pragmatics: The branch creation is sent to the announce list to
5735ensure that people people not subscribed to the higher volume discussion
5736list are alerted.}
5737
5738The announcement should include:
5739
5740@itemize @bullet
5741@item
5742the branch tag
5743@item
5744how to check out the branch using CVS
5745@item
5746the date/number of weeks until the release
5747@item
5748the branch commit policy
5749still holds.
16737d73 5750@end itemize
30107679 5751
8642bc8f
AC
5752@section Stabilize the branch
5753
5754Something goes here.
5755
5756@section Create a Release
5757
0816590b
AC
5758The process of creating and then making available a release is broken
5759down into a number of stages. The first part addresses the technical
5760process of creating a releasable tar ball. The later stages address the
5761process of releasing that tar ball.
8973da3a 5762
0816590b
AC
5763When making a release candidate just the first section is needed.
5764
5765@subsection Create a release candidate
5766
5767The objective at this stage is to create a set of tar balls that can be
5768made available as a formal release (or as a less formal release
5769candidate).
5770
5771@subsubheading Freeze the branch
5772
5773Send out an e-mail notifying everyone that the branch is frozen to
5774@email{gdb-patches@@sources.redhat.com}.
5775
5776@subsubheading Establish a few defaults.
8973da3a 5777
474c8240 5778@smallexample
0816590b
AC
5779$ b=gdb_5_2-branch
5780$ v=5.2
8642bc8f
AC
5781$ t=/sourceware/snapshot-tmp/gdbadmin-tmp
5782$ echo $t/$b/$v
0816590b 5783/sourceware/snapshot-tmp/gdbadmin-tmp/gdb_5_2-branch/5.2
8642bc8f
AC
5784$ mkdir -p $t/$b/$v
5785$ cd $t/$b/$v
5786$ pwd
0816590b 5787/sourceware/snapshot-tmp/gdbadmin-tmp/gdb_5_2-branch/5.2
8973da3a
AC
5788$ which autoconf
5789/home/gdbadmin/bin/autoconf
8642bc8f 5790$
474c8240 5791@end smallexample
8973da3a 5792
0816590b
AC
5793@noindent
5794Notes:
8973da3a 5795
0816590b
AC
5796@itemize @bullet
5797@item
5798Check the @code{autoconf} version carefully. You want to be using the
4a2b4636
JB
5799version taken from the @file{binutils} snapshot directory, which can be
5800found at @uref{ftp://sources.redhat.com/pub/binutils/}. It is very
0816590b
AC
5801unlikely that a system installed version of @code{autoconf} (e.g.,
5802@file{/usr/bin/autoconf}) is correct.
5803@end itemize
5804
5805@subsubheading Check out the relevant modules:
8973da3a 5806
474c8240 5807@smallexample
8642bc8f
AC
5808$ for m in gdb insight dejagnu
5809do
8973da3a
AC
5810( mkdir -p $m && cd $m && cvs -q -f -d /cvs/src co -P -r $b $m )
5811done
8642bc8f 5812$
474c8240 5813@end smallexample
8973da3a 5814
0816590b
AC
5815@noindent
5816Note:
8642bc8f 5817
0816590b
AC
5818@itemize @bullet
5819@item
5820The reading of @file{.cvsrc} is disabled (@file{-f}) so that there isn't
5821any confusion between what is written here and what your local
5822@code{cvs} really does.
5823@end itemize
5824
5825@subsubheading Update relevant files.
8973da3a 5826
0816590b
AC
5827@table @file
5828
5829@item gdb/NEWS
8642bc8f
AC
5830
5831Major releases get their comments added as part of the mainline. Minor
5832releases should probably mention any significant bugs that were fixed.
5833
0816590b 5834Don't forget to include the @file{ChangeLog} entry.
8973da3a 5835
474c8240 5836@smallexample
8642bc8f
AC
5837$ emacs gdb/src/gdb/NEWS
5838...
5839c-x 4 a
5840...
5841c-x c-s c-x c-c
5842$ cp gdb/src/gdb/NEWS insight/src/gdb/NEWS
5843$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
474c8240 5844@end smallexample
8973da3a 5845
0816590b
AC
5846@item gdb/README
5847
5848You'll need to update:
8973da3a 5849
0816590b
AC
5850@itemize @bullet
5851@item
5852the version
5853@item
5854the update date
5855@item
5856who did it
5857@end itemize
8973da3a 5858
474c8240 5859@smallexample
8642bc8f
AC
5860$ emacs gdb/src/gdb/README
5861...
8973da3a 5862c-x 4 a
8642bc8f 5863...
8973da3a 5864c-x c-s c-x c-c
8642bc8f
AC
5865$ cp gdb/src/gdb/README insight/src/gdb/README
5866$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
474c8240 5867@end smallexample
8973da3a 5868
0816590b
AC
5869@emph{Maintainer note: Hopefully the @file{README} file was reviewed
5870before the initial branch was cut so just a simple substitute is needed
5871to get it updated.}
8973da3a 5872
8642bc8f
AC
5873@emph{Maintainer note: Other projects generate @file{README} and
5874@file{INSTALL} from the core documentation. This might be worth
5875pursuing.}
8973da3a 5876
0816590b 5877@item gdb/version.in
8973da3a 5878
474c8240 5879@smallexample
8642bc8f 5880$ echo $v > gdb/src/gdb/version.in
0816590b
AC
5881$ cat gdb/src/gdb/version.in
58825.2
8642bc8f 5883$ emacs gdb/src/gdb/version.in
8973da3a
AC
5884...
5885c-x 4 a
0816590b 5886... Bump to version ...
8973da3a 5887c-x c-s c-x c-c
8642bc8f
AC
5888$ cp gdb/src/gdb/version.in insight/src/gdb/version.in
5889$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
474c8240 5890@end smallexample
8973da3a 5891
0816590b 5892@item dejagnu/src/dejagnu/configure.in
8642bc8f
AC
5893
5894Dejagnu is more complicated. The version number is a parameter to
0816590b 5895@code{AM_INIT_AUTOMAKE}. Tweak it to read something like gdb-5.1.91.
8642bc8f 5896
0816590b 5897Don't forget to re-generate @file{configure}.
8642bc8f 5898
0816590b 5899Don't forget to include a @file{ChangeLog} entry.
8642bc8f 5900
0816590b
AC
5901@smallexample
5902$ emacs dejagnu/src/dejagnu/configure.in
5903...
5904c-x 4 a
5905...
5906c-x c-s c-x c-c
5907$ ( cd dejagnu/src/dejagnu && autoconf )
5908@end smallexample
8642bc8f 5909
0816590b
AC
5910@end table
5911
5912@subsubheading Do the dirty work
5913
5914This is identical to the process used to create the daily snapshot.
8973da3a 5915
4ce8657e
MC
5916@smallexample
5917$ for m in gdb insight
5918do
5919( cd $m/src && gmake -f src-release $m.tar )
5920done
5921$ ( m=dejagnu; cd $m/src && gmake -f src-release $m.tar.bz2 )
5922@end smallexample
5923
5924If the top level source directory does not have @file{src-release}
5925(@value{GDBN} version 5.3.1 or earlier), try these commands instead:
5926
474c8240 5927@smallexample
0816590b 5928$ for m in gdb insight
8642bc8f 5929do
0816590b 5930( cd $m/src && gmake -f Makefile.in $m.tar )
8973da3a 5931done
0816590b 5932$ ( m=dejagnu; cd $m/src && gmake -f Makefile.in $m.tar.bz2 )
474c8240 5933@end smallexample
8973da3a 5934
0816590b 5935@subsubheading Check the source files
8642bc8f 5936
0816590b 5937You're looking for files that have mysteriously disappeared.
8642bc8f
AC
5938@kbd{distclean} has the habit of deleting files it shouldn't. Watch out
5939for the @file{version.in} update @kbd{cronjob}.
8973da3a 5940
474c8240 5941@smallexample
8642bc8f
AC
5942$ ( cd gdb/src && cvs -f -q -n update )
5943M djunpack.bat
0816590b 5944? gdb-5.1.91.tar
8642bc8f 5945? proto-toplev
0816590b 5946@dots{} lots of generated files @dots{}
8642bc8f
AC
5947M gdb/ChangeLog
5948M gdb/NEWS
5949M gdb/README
5950M gdb/version.in
0816590b 5951@dots{} lots of generated files @dots{}
8642bc8f 5952$
474c8240 5953@end smallexample
8973da3a 5954
0816590b 5955@noindent
8642bc8f
AC
5956@emph{Don't worry about the @file{gdb.info-??} or
5957@file{gdb/p-exp.tab.c}. They were generated (and yes @file{gdb.info-1}
5958was also generated only something strange with CVS means that they
5959didn't get supressed). Fixing it would be nice though.}
8973da3a 5960
0816590b 5961@subsubheading Create compressed versions of the release
8973da3a 5962
474c8240 5963@smallexample
0816590b
AC
5964$ cp */src/*.tar .
5965$ cp */src/*.bz2 .
5966$ ls -F
5967dejagnu/ dejagnu-gdb-5.2.tar.bz2 gdb/ gdb-5.2.tar insight/ insight-5.2.tar
5968$ for m in gdb insight
5969do
5970bzip2 -v -9 -c $m-$v.tar > $m-$v.tar.bz2
5971gzip -v -9 -c $m-$v.tar > $m-$v.tar.gz
5972done
5973$
474c8240 5974@end smallexample
8973da3a 5975
0816590b
AC
5976@noindent
5977Note:
5978
5979@itemize @bullet
5980@item
5981A pipe such as @kbd{bunzip2 < xxx.bz2 | gzip -9 > xxx.gz} is not since,
5982in that mode, @code{gzip} does not know the name of the file and, hence,
5983can not include it in the compressed file. This is also why the release
5984process runs @code{tar} and @code{bzip2} as separate passes.
5985@end itemize
5986
5987@subsection Sanity check the tar ball
8973da3a 5988
0816590b 5989Pick a popular machine (Solaris/PPC?) and try the build on that.
8973da3a 5990
0816590b
AC
5991@smallexample
5992$ bunzip2 < gdb-5.2.tar.bz2 | tar xpf -
5993$ cd gdb-5.2
5994$ ./configure
5995$ make
5996@dots{}
5997$ ./gdb/gdb ./gdb/gdb
5998GNU gdb 5.2
5999@dots{}
6000(gdb) b main
6001Breakpoint 1 at 0x80732bc: file main.c, line 734.
6002(gdb) run
6003Starting program: /tmp/gdb-5.2/gdb/gdb
6004
6005Breakpoint 1, main (argc=1, argv=0xbffff8b4) at main.c:734
6006734 catch_errors (captured_main, &args, "", RETURN_MASK_ALL);
6007(gdb) print args
6008$1 = @{argc = 136426532, argv = 0x821b7f0@}
6009(gdb)
6010@end smallexample
8973da3a 6011
0816590b 6012@subsection Make a release candidate available
8973da3a 6013
0816590b 6014If this is a release candidate then the only remaining steps are:
8642bc8f 6015
0816590b
AC
6016@enumerate
6017@item
6018Commit @file{version.in} and @file{ChangeLog}
6019@item
6020Tweak @file{version.in} (and @file{ChangeLog} to read
6021@var{L}.@var{M}.@var{N}-0000-00-00-cvs so that the version update
6022process can restart.
6023@item
6024Make the release candidate available in
6025@uref{ftp://sources.redhat.com/pub/gdb/snapshots/branch}
6026@item
6027Notify the relevant mailing lists ( @email{gdb@@sources.redhat.com} and
6028@email{gdb-testers@@sources.redhat.com} that the candidate is available.
6029@end enumerate
8642bc8f 6030
0816590b 6031@subsection Make a formal release available
8642bc8f 6032
0816590b 6033(And you thought all that was required was to post an e-mail.)
8642bc8f 6034
0816590b 6035@subsubheading Install on sware
8642bc8f 6036
0816590b 6037Copy the new files to both the release and the old release directory:
8642bc8f 6038
474c8240 6039@smallexample
0816590b 6040$ cp *.bz2 *.gz ~ftp/pub/gdb/old-releases/
8642bc8f 6041$ cp *.bz2 *.gz ~ftp/pub/gdb/releases
474c8240 6042@end smallexample
8642bc8f 6043
0816590b
AC
6044@noindent
6045Clean up the releases directory so that only the most recent releases
6046are available (e.g. keep 5.2 and 5.2.1 but remove 5.1):
6047
6048@smallexample
6049$ cd ~ftp/pub/gdb/releases
6050$ rm @dots{}
6051@end smallexample
6052
6053@noindent
6054Update the file @file{README} and @file{.message} in the releases
6055directory:
6056
6057@smallexample
6058$ vi README
6059@dots{}
6060$ rm -f .message
6061$ ln README .message
6062@end smallexample
8642bc8f 6063
0816590b 6064@subsubheading Update the web pages.
8973da3a 6065
0816590b
AC
6066@table @file
6067
6068@item htdocs/download/ANNOUNCEMENT
6069This file, which is posted as the official announcement, includes:
8973da3a
AC
6070@itemize @bullet
6071@item
0816590b 6072General announcement
8642bc8f 6073@item
0816590b
AC
6074News. If making an @var{M}.@var{N}.1 release, retain the news from
6075earlier @var{M}.@var{N} release.
8973da3a 6076@item
0816590b
AC
6077Errata
6078@end itemize
6079
6080@item htdocs/index.html
6081@itemx htdocs/news/index.html
6082@itemx htdocs/download/index.html
6083These files include:
6084@itemize @bullet
8642bc8f 6085@item
0816590b 6086announcement of the most recent release
8642bc8f 6087@item
0816590b 6088news entry (remember to update both the top level and the news directory).
8973da3a 6089@end itemize
0816590b 6090These pages also need to be regenerate using @code{index.sh}.
8973da3a 6091
0816590b 6092@item download/onlinedocs/
8642bc8f
AC
6093You need to find the magic command that is used to generate the online
6094docs from the @file{.tar.bz2}. The best way is to look in the output
0816590b 6095from one of the nightly @code{cron} jobs and then just edit accordingly.
8642bc8f
AC
6096Something like:
6097
474c8240 6098@smallexample
8642bc8f 6099$ ~/ss/update-web-docs \
0816590b 6100 ~ftp/pub/gdb/releases/gdb-5.2.tar.bz2 \
8642bc8f 6101 $PWD/www \
0816590b 6102 /www/sourceware/htdocs/gdb/download/onlinedocs \
8642bc8f 6103 gdb
474c8240 6104@end smallexample
8642bc8f 6105
0816590b
AC
6106@item download/ari/
6107Just like the online documentation. Something like:
8642bc8f 6108
0816590b
AC
6109@smallexample
6110$ /bin/sh ~/ss/update-web-ari \
6111 ~ftp/pub/gdb/releases/gdb-5.2.tar.bz2 \
6112 $PWD/www \
6113 /www/sourceware/htdocs/gdb/download/ari \
6114 gdb
6115@end smallexample
6116
6117@end table
6118
6119@subsubheading Shadow the pages onto gnu
6120
6121Something goes here.
6122
6123
6124@subsubheading Install the @value{GDBN} tar ball on GNU
6125
6126At the time of writing, the GNU machine was @kbd{gnudist.gnu.org} in
6127@file{~ftp/gnu/gdb}.
6128
6129@subsubheading Make the @file{ANNOUNCEMENT}
6130
6131Post the @file{ANNOUNCEMENT} file you created above to:
8642bc8f
AC
6132
6133@itemize @bullet
6134@item
6135@email{gdb-announce@@sources.redhat.com, GDB Announcement mailing list}
6136@item
0816590b
AC
6137@email{info-gnu@@gnu.org, General GNU Announcement list} (but delay it a
6138day or so to let things get out)
6139@item
6140@email{bug-gdb@@gnu.org, GDB Bug Report mailing list}
8642bc8f
AC
6141@end itemize
6142
0816590b 6143@subsection Cleanup
8642bc8f 6144
0816590b 6145The release is out but you're still not finished.
8642bc8f 6146
0816590b 6147@subsubheading Commit outstanding changes
8642bc8f 6148
0816590b 6149In particular you'll need to commit any changes to:
8642bc8f
AC
6150
6151@itemize @bullet
6152@item
6153@file{gdb/ChangeLog}
6154@item
6155@file{gdb/version.in}
6156@item
6157@file{gdb/NEWS}
6158@item
6159@file{gdb/README}
6160@end itemize
6161
0816590b 6162@subsubheading Tag the release
8642bc8f
AC
6163
6164Something like:
6165
474c8240 6166@smallexample
8642bc8f
AC
6167$ d=`date -u +%Y-%m-%d`
6168$ echo $d
61692002-01-24
6170$ ( cd insight/src/gdb && cvs -f -q update )
0816590b 6171$ ( cd insight/src && cvs -f -q tag gdb_5_2-$d-release )
474c8240 6172@end smallexample
8642bc8f 6173
0816590b
AC
6174Insight is used since that contains more of the release than
6175@value{GDBN} (@code{dejagnu} doesn't get tagged but I think we can live
6176with that).
6177
6178@subsubheading Mention the release on the trunk
8642bc8f 6179
0816590b
AC
6180Just put something in the @file{ChangeLog} so that the trunk also
6181indicates when the release was made.
6182
6183@subsubheading Restart @file{gdb/version.in}
8642bc8f
AC
6184
6185If @file{gdb/version.in} does not contain an ISO date such as
6186@kbd{2002-01-24} then the daily @code{cronjob} won't update it. Having
6187committed all the release changes it can be set to
0816590b 6188@file{5.2.0_0000-00-00-cvs} which will restart things (yes the @kbd{_}
8642bc8f
AC
6189is important - it affects the snapshot process).
6190
6191Don't forget the @file{ChangeLog}.
6192
0816590b 6193@subsubheading Merge into trunk
8973da3a 6194
8642bc8f
AC
6195The files committed to the branch may also need changes merged into the
6196trunk.
8973da3a 6197
0816590b
AC
6198@subsubheading Revise the release schedule
6199
6200Post a revised release schedule to @email{gdb@@sources.redhat.com, GDB
6201Discussion List} with an updated announcement. The schedule can be
6202generated by running:
6203
6204@smallexample
6205$ ~/ss/schedule `date +%s` schedule
6206@end smallexample
6207
6208@noindent
6209The first parameter is approximate date/time in seconds (from the epoch)
6210of the most recent release.
6211
6212Also update the schedule @code{cronjob}.
6213
8642bc8f 6214@section Post release
8973da3a 6215
8642bc8f 6216Remove any @code{OBSOLETE} code.
8973da3a 6217
085dd6e6
JM
6218@node Testsuite
6219
6220@chapter Testsuite
56caf160 6221@cindex test suite
085dd6e6 6222
56caf160
EZ
6223The testsuite is an important component of the @value{GDBN} package.
6224While it is always worthwhile to encourage user testing, in practice
6225this is rarely sufficient; users typically use only a small subset of
6226the available commands, and it has proven all too common for a change
6227to cause a significant regression that went unnoticed for some time.
085dd6e6 6228
56caf160
EZ
6229The @value{GDBN} testsuite uses the DejaGNU testing framework.
6230DejaGNU is built using @code{Tcl} and @code{expect}. The tests
6231themselves are calls to various @code{Tcl} procs; the framework runs all the
6232procs and summarizes the passes and fails.
085dd6e6
JM
6233
6234@section Using the Testsuite
6235
56caf160 6236@cindex running the test suite
25822942 6237To run the testsuite, simply go to the @value{GDBN} object directory (or to the
085dd6e6
JM
6238testsuite's objdir) and type @code{make check}. This just sets up some
6239environment variables and invokes DejaGNU's @code{runtest} script. While
6240the testsuite is running, you'll get mentions of which test file is in use,
6241and a mention of any unexpected passes or fails. When the testsuite is
6242finished, you'll get a summary that looks like this:
56caf160 6243
474c8240 6244@smallexample
085dd6e6
JM
6245 === gdb Summary ===
6246
6247# of expected passes 6016
6248# of unexpected failures 58
6249# of unexpected successes 5
6250# of expected failures 183
6251# of unresolved testcases 3
6252# of untested testcases 5
474c8240 6253@end smallexample
56caf160 6254
085dd6e6
JM
6255The ideal test run consists of expected passes only; however, reality
6256conspires to keep us from this ideal. Unexpected failures indicate
56caf160
EZ
6257real problems, whether in @value{GDBN} or in the testsuite. Expected
6258failures are still failures, but ones which have been decided are too
6259hard to deal with at the time; for instance, a test case might work
6260everywhere except on AIX, and there is no prospect of the AIX case
6261being fixed in the near future. Expected failures should not be added
6262lightly, since you may be masking serious bugs in @value{GDBN}.
6263Unexpected successes are expected fails that are passing for some
6264reason, while unresolved and untested cases often indicate some minor
6265catastrophe, such as the compiler being unable to deal with a test
6266program.
6267
6268When making any significant change to @value{GDBN}, you should run the
6269testsuite before and after the change, to confirm that there are no
6270regressions. Note that truly complete testing would require that you
6271run the testsuite with all supported configurations and a variety of
6272compilers; however this is more than really necessary. In many cases
6273testing with a single configuration is sufficient. Other useful
6274options are to test one big-endian (Sparc) and one little-endian (x86)
6275host, a cross config with a builtin simulator (powerpc-eabi,
6276mips-elf), or a 64-bit host (Alpha).
6277
6278If you add new functionality to @value{GDBN}, please consider adding
6279tests for it as well; this way future @value{GDBN} hackers can detect
6280and fix their changes that break the functionality you added.
6281Similarly, if you fix a bug that was not previously reported as a test
6282failure, please add a test case for it. Some cases are extremely
6283difficult to test, such as code that handles host OS failures or bugs
6284in particular versions of compilers, and it's OK not to try to write
6285tests for all of those.
085dd6e6
JM
6286
6287@section Testsuite Organization
6288
56caf160 6289@cindex test suite organization
085dd6e6
JM
6290The testsuite is entirely contained in @file{gdb/testsuite}. While the
6291testsuite includes some makefiles and configury, these are very minimal,
6292and used for little besides cleaning up, since the tests themselves
25822942 6293handle the compilation of the programs that @value{GDBN} will run. The file
085dd6e6 6294@file{testsuite/lib/gdb.exp} contains common utility procs useful for
25822942 6295all @value{GDBN} tests, while the directory @file{testsuite/config} contains
085dd6e6
JM
6296configuration-specific files, typically used for special-purpose
6297definitions of procs like @code{gdb_load} and @code{gdb_start}.
6298
6299The tests themselves are to be found in @file{testsuite/gdb.*} and
6300subdirectories of those. The names of the test files must always end
6301with @file{.exp}. DejaGNU collects the test files by wildcarding
6302in the test directories, so both subdirectories and individual files
6303get chosen and run in alphabetical order.
6304
6305The following table lists the main types of subdirectories and what they
6306are for. Since DejaGNU finds test files no matter where they are
6307located, and since each test file sets up its own compilation and
6308execution environment, this organization is simply for convenience and
6309intelligibility.
6310
56caf160 6311@table @file
085dd6e6 6312@item gdb.base
085dd6e6 6313This is the base testsuite. The tests in it should apply to all
25822942 6314configurations of @value{GDBN} (but generic native-only tests may live here).
085dd6e6 6315The test programs should be in the subset of C that is valid K&R,
56caf160 6316ANSI/ISO, and C++ (@code{#ifdef}s are allowed if necessary, for instance
085dd6e6
JM
6317for prototypes).
6318
6319@item gdb.@var{lang}
56caf160 6320Language-specific tests for any language @var{lang} besides C. Examples are
085dd6e6
JM
6321@file{gdb.c++} and @file{gdb.java}.
6322
6323@item gdb.@var{platform}
085dd6e6
JM
6324Non-portable tests. The tests are specific to a specific configuration
6325(host or target), such as HP-UX or eCos. Example is @file{gdb.hp}, for
6326HP-UX.
6327
6328@item gdb.@var{compiler}
085dd6e6
JM
6329Tests specific to a particular compiler. As of this writing (June
63301999), there aren't currently any groups of tests in this category that
6331couldn't just as sensibly be made platform-specific, but one could
56caf160
EZ
6332imagine a @file{gdb.gcc}, for tests of @value{GDBN}'s handling of GCC
6333extensions.
085dd6e6
JM
6334
6335@item gdb.@var{subsystem}
25822942 6336Tests that exercise a specific @value{GDBN} subsystem in more depth. For
085dd6e6
JM
6337instance, @file{gdb.disasm} exercises various disassemblers, while
6338@file{gdb.stabs} tests pathways through the stabs symbol reader.
085dd6e6
JM
6339@end table
6340
6341@section Writing Tests
56caf160 6342@cindex writing tests
085dd6e6 6343
25822942 6344In many areas, the @value{GDBN} tests are already quite comprehensive; you
085dd6e6
JM
6345should be able to copy existing tests to handle new cases.
6346
6347You should try to use @code{gdb_test} whenever possible, since it
6348includes cases to handle all the unexpected errors that might happen.
6349However, it doesn't cost anything to add new test procedures; for
6350instance, @file{gdb.base/exprs.exp} defines a @code{test_expr} that
6351calls @code{gdb_test} multiple times.
6352
6353Only use @code{send_gdb} and @code{gdb_expect} when absolutely
25822942 6354necessary, such as when @value{GDBN} has several valid responses to a command.
085dd6e6
JM
6355
6356The source language programs do @emph{not} need to be in a consistent
25822942 6357style. Since @value{GDBN} is used to debug programs written in many different
085dd6e6 6358styles, it's worth having a mix of styles in the testsuite; for
25822942 6359instance, some @value{GDBN} bugs involving the display of source lines would
085dd6e6
JM
6360never manifest themselves if the programs used GNU coding style
6361uniformly.
6362
c906108c
SS
6363@node Hints
6364
6365@chapter Hints
6366
6367Check the @file{README} file, it often has useful information that does not
6368appear anywhere else in the directory.
6369
6370@menu
25822942 6371* Getting Started:: Getting started working on @value{GDBN}
33e16fad 6372* Debugging GDB:: Debugging @value{GDBN} with itself
c906108c
SS
6373@end menu
6374
6375@node Getting Started,,, Hints
6376
6377@section Getting Started
6378
25822942 6379@value{GDBN} is a large and complicated program, and if you first starting to
c906108c
SS
6380work on it, it can be hard to know where to start. Fortunately, if you
6381know how to go about it, there are ways to figure out what is going on.
6382
25822942
DB
6383This manual, the @value{GDBN} Internals manual, has information which applies
6384generally to many parts of @value{GDBN}.
c906108c
SS
6385
6386Information about particular functions or data structures are located in
6387comments with those functions or data structures. If you run across a
6388function or a global variable which does not have a comment correctly
25822942 6389explaining what is does, this can be thought of as a bug in @value{GDBN}; feel
c906108c
SS
6390free to submit a bug report, with a suggested comment if you can figure
6391out what the comment should say. If you find a comment which is
6392actually wrong, be especially sure to report that.
6393
6394Comments explaining the function of macros defined in host, target, or
6395native dependent files can be in several places. Sometimes they are
6396repeated every place the macro is defined. Sometimes they are where the
6397macro is used. Sometimes there is a header file which supplies a
6398default definition of the macro, and the comment is there. This manual
6399also documents all the available macros.
6400@c (@pxref{Host Conditionals}, @pxref{Target
6401@c Conditionals}, @pxref{Native Conditionals}, and @pxref{Obsolete
6402@c Conditionals})
6403
56caf160
EZ
6404Start with the header files. Once you have some idea of how
6405@value{GDBN}'s internal symbol tables are stored (see @file{symtab.h},
6406@file{gdbtypes.h}), you will find it much easier to understand the
6407code which uses and creates those symbol tables.
c906108c
SS
6408
6409You may wish to process the information you are getting somehow, to
6410enhance your understanding of it. Summarize it, translate it to another
25822942 6411language, add some (perhaps trivial or non-useful) feature to @value{GDBN}, use
c906108c
SS
6412the code to predict what a test case would do and write the test case
6413and verify your prediction, etc. If you are reading code and your eyes
6414are starting to glaze over, this is a sign you need to use a more active
6415approach.
6416
25822942 6417Once you have a part of @value{GDBN} to start with, you can find more
c906108c
SS
6418specifically the part you are looking for by stepping through each
6419function with the @code{next} command. Do not use @code{step} or you
6420will quickly get distracted; when the function you are stepping through
6421calls another function try only to get a big-picture understanding
6422(perhaps using the comment at the beginning of the function being
6423called) of what it does. This way you can identify which of the
6424functions being called by the function you are stepping through is the
6425one which you are interested in. You may need to examine the data
6426structures generated at each stage, with reference to the comments in
6427the header files explaining what the data structures are supposed to
6428look like.
6429
6430Of course, this same technique can be used if you are just reading the
6431code, rather than actually stepping through it. The same general
6432principle applies---when the code you are looking at calls something
6433else, just try to understand generally what the code being called does,
6434rather than worrying about all its details.
6435
56caf160
EZ
6436@cindex command implementation
6437A good place to start when tracking down some particular area is with
6438a command which invokes that feature. Suppose you want to know how
6439single-stepping works. As a @value{GDBN} user, you know that the
6440@code{step} command invokes single-stepping. The command is invoked
6441via command tables (see @file{command.h}); by convention the function
6442which actually performs the command is formed by taking the name of
6443the command and adding @samp{_command}, or in the case of an
6444@code{info} subcommand, @samp{_info}. For example, the @code{step}
6445command invokes the @code{step_command} function and the @code{info
6446display} command invokes @code{display_info}. When this convention is
6447not followed, you might have to use @code{grep} or @kbd{M-x
6448tags-search} in emacs, or run @value{GDBN} on itself and set a
6449breakpoint in @code{execute_command}.
6450
6451@cindex @code{bug-gdb} mailing list
c906108c
SS
6452If all of the above fail, it may be appropriate to ask for information
6453on @code{bug-gdb}. But @emph{never} post a generic question like ``I was
6454wondering if anyone could give me some tips about understanding
25822942 6455@value{GDBN}''---if we had some magic secret we would put it in this manual.
c906108c
SS
6456Suggestions for improving the manual are always welcome, of course.
6457
33e16fad 6458@node Debugging GDB,,,Hints
c906108c 6459
25822942 6460@section Debugging @value{GDBN} with itself
56caf160 6461@cindex debugging @value{GDBN}
c906108c 6462
25822942 6463If @value{GDBN} is limping on your machine, this is the preferred way to get it
c906108c
SS
6464fully functional. Be warned that in some ancient Unix systems, like
6465Ultrix 4.2, a program can't be running in one process while it is being
56caf160 6466debugged in another. Rather than typing the command @kbd{@w{./gdb
c906108c 6467./gdb}}, which works on Suns and such, you can copy @file{gdb} to
56caf160 6468@file{gdb2} and then type @kbd{@w{./gdb ./gdb2}}.
c906108c 6469
25822942 6470When you run @value{GDBN} in the @value{GDBN} source directory, it will read a
c906108c
SS
6471@file{.gdbinit} file that sets up some simple things to make debugging
6472gdb easier. The @code{info} command, when executed without a subcommand
25822942 6473in a @value{GDBN} being debugged by gdb, will pop you back up to the top level
c906108c
SS
6474gdb. See @file{.gdbinit} for details.
6475
6476If you use emacs, you will probably want to do a @code{make TAGS} after
6477you configure your distribution; this will put the machine dependent
6478routines for your local machine where they will be accessed first by
6479@kbd{M-.}
6480
25822942 6481Also, make sure that you've either compiled @value{GDBN} with your local cc, or
c906108c
SS
6482have run @code{fixincludes} if you are compiling with gcc.
6483
6484@section Submitting Patches
6485
56caf160 6486@cindex submitting patches
c906108c 6487Thanks for thinking of offering your changes back to the community of
25822942 6488@value{GDBN} users. In general we like to get well designed enhancements.
c906108c
SS
6489Thanks also for checking in advance about the best way to transfer the
6490changes.
6491
25822942
DB
6492The @value{GDBN} maintainers will only install ``cleanly designed'' patches.
6493This manual summarizes what we believe to be clean design for @value{GDBN}.
c906108c
SS
6494
6495If the maintainers don't have time to put the patch in when it arrives,
6496or if there is any question about a patch, it goes into a large queue
6497with everyone else's patches and bug reports.
6498
56caf160 6499@cindex legal papers for code contributions
c906108c
SS
6500The legal issue is that to incorporate substantial changes requires a
6501copyright assignment from you and/or your employer, granting ownership
6502of the changes to the Free Software Foundation. You can get the
9e0b60a8
JM
6503standard documents for doing this by sending mail to @code{gnu@@gnu.org}
6504and asking for it. We recommend that people write in "All programs
6505owned by the Free Software Foundation" as "NAME OF PROGRAM", so that
56caf160
EZ
6506changes in many programs (not just @value{GDBN}, but GAS, Emacs, GCC,
6507etc) can be
9e0b60a8 6508contributed with only one piece of legalese pushed through the
be9c6c35 6509bureaucracy and filed with the FSF. We can't start merging changes until
9e0b60a8
JM
6510this paperwork is received by the FSF (their rules, which we follow
6511since we maintain it for them).
c906108c
SS
6512
6513Technically, the easiest way to receive changes is to receive each
56caf160
EZ
6514feature as a small context diff or unidiff, suitable for @code{patch}.
6515Each message sent to me should include the changes to C code and
6516header files for a single feature, plus @file{ChangeLog} entries for
6517each directory where files were modified, and diffs for any changes
6518needed to the manuals (@file{gdb/doc/gdb.texinfo} or
6519@file{gdb/doc/gdbint.texinfo}). If there are a lot of changes for a
6520single feature, they can be split down into multiple messages.
9e0b60a8
JM
6521
6522In this way, if we read and like the feature, we can add it to the
c906108c 6523sources with a single patch command, do some testing, and check it in.
56caf160
EZ
6524If you leave out the @file{ChangeLog}, we have to write one. If you leave
6525out the doc, we have to puzzle out what needs documenting. Etc., etc.
c906108c 6526
9e0b60a8
JM
6527The reason to send each change in a separate message is that we will not
6528install some of the changes. They'll be returned to you with questions
6529or comments. If we're doing our job correctly, the message back to you
c906108c 6530will say what you have to fix in order to make the change acceptable.
9e0b60a8
JM
6531The reason to have separate messages for separate features is so that
6532the acceptable changes can be installed while one or more changes are
6533being reworked. If multiple features are sent in a single message, we
6534tend to not put in the effort to sort out the acceptable changes from
6535the unacceptable, so none of the features get installed until all are
6536acceptable.
6537
6538If this sounds painful or authoritarian, well, it is. But we get a lot
6539of bug reports and a lot of patches, and many of them don't get
6540installed because we don't have the time to finish the job that the bug
c906108c
SS
6541reporter or the contributor could have done. Patches that arrive
6542complete, working, and well designed, tend to get installed on the day
9e0b60a8
JM
6543they arrive. The others go into a queue and get installed as time
6544permits, which, since the maintainers have many demands to meet, may not
6545be for quite some time.
c906108c 6546
56caf160 6547Please send patches directly to
47b95330 6548@email{gdb-patches@@sources.redhat.com, the @value{GDBN} maintainers}.
c906108c
SS
6549
6550@section Obsolete Conditionals
56caf160 6551@cindex obsolete code
c906108c 6552
25822942 6553Fragments of old code in @value{GDBN} sometimes reference or set the following
c906108c
SS
6554configuration macros. They should not be used by new code, and old uses
6555should be removed as those parts of the debugger are otherwise touched.
6556
6557@table @code
c906108c
SS
6558@item STACK_END_ADDR
6559This macro used to define where the end of the stack appeared, for use
6560in interpreting core file formats that don't record this address in the
25822942
DB
6561core file itself. This information is now configured in BFD, and @value{GDBN}
6562gets the info portably from there. The values in @value{GDBN}'s configuration
c906108c 6563files should be moved into BFD configuration files (if needed there),
25822942 6564and deleted from all of @value{GDBN}'s config files.
c906108c
SS
6565
6566Any @file{@var{foo}-xdep.c} file that references STACK_END_ADDR
6567is so old that it has never been converted to use BFD. Now that's old!
6568
c906108c
SS
6569@end table
6570
aab4e0ec
AC
6571@include fdl.texi
6572
56caf160
EZ
6573@node Index
6574@unnumbered Index
6575
6576@printindex cp
6577
c906108c 6578@bye
This page took 0.68057 seconds and 4 git commands to generate.