2003-03-05 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
6314f104
AC
3700@anchor{SAVE_DUMMY_FRAME_TOS} Used in @samp{call_function_by_hand} to
3701notify the target dependent code of the top-of-stack value that will be
3702passed to the the inferior code. This is the value of the @code{SP}
3703after both the dummy frame and space for parameters/results have been
3704allocated on the stack. @xref{unwind_dummy_id}.
43ff13b4 3705
c906108c 3706@item SDB_REG_TO_REGNUM
56caf160 3707@findex SDB_REG_TO_REGNUM
25822942 3708Define this to convert sdb register numbers into @value{GDBN} regnums. If not
c906108c
SS
3709defined, no conversion will be done.
3710
c2c6d25f 3711@item SKIP_PERMANENT_BREAKPOINT
56caf160 3712@findex SKIP_PERMANENT_BREAKPOINT
25822942 3713Advance the inferior's PC past a permanent breakpoint. @value{GDBN} normally
c2c6d25f
JM
3714steps over a breakpoint by removing it, stepping one instruction, and
3715re-inserting the breakpoint. However, permanent breakpoints are
3716hardwired into the inferior, and can't be removed, so this strategy
56caf160 3717doesn't work. Calling @code{SKIP_PERMANENT_BREAKPOINT} adjusts the processor's
c2c6d25f
JM
3718state so that execution will resume just after the breakpoint. This
3719macro does the right thing even when the breakpoint is in the delay slot
3720of a branch or jump.
3721
56caf160
EZ
3722@item SKIP_PROLOGUE (@var{pc})
3723@findex SKIP_PROLOGUE
b83266a0
SS
3724A C expression that returns the address of the ``real'' code beyond the
3725function entry prologue found at @var{pc}.
c906108c 3726
56caf160
EZ
3727@item SKIP_TRAMPOLINE_CODE (@var{pc})
3728@findex SKIP_TRAMPOLINE_CODE
c906108c
SS
3729If the target machine has trampoline code that sits between callers and
3730the functions being called, then define this macro to return a new PC
3731that is at the start of the real function.
3732
3733@item SP_REGNUM
56caf160 3734@findex SP_REGNUM
cce74817
JM
3735If the stack-pointer is kept in a register, then define this macro to be
3736the number (greater than or equal to zero) of that register.
3737
3738This should only need to be defined if @code{TARGET_WRITE_SP} and
3739@code{TARGET_WRITE_SP} are not defined.
c906108c
SS
3740
3741@item STAB_REG_TO_REGNUM
56caf160 3742@findex STAB_REG_TO_REGNUM
c906108c 3743Define this to convert stab register numbers (as gotten from `r'
25822942 3744declarations) into @value{GDBN} regnums. If not defined, no conversion will be
c906108c
SS
3745done.
3746
56caf160 3747@item STACK_ALIGN (@var{addr})
790eb8f5 3748@anchor{STACK_ALIGN}
56caf160 3749@findex STACK_ALIGN
790eb8f5
AC
3750Define this to increase @var{addr} so that it meets the alignment
3751requirements for the processor's stack.
3752
3753Unlike @ref{frame_align}, this function always adjusts @var{addr}
3754upwards.
3755
3756By default, no stack alignment is performed.
c906108c 3757
56caf160
EZ
3758@item STEP_SKIPS_DELAY (@var{addr})
3759@findex STEP_SKIPS_DELAY
c906108c
SS
3760Define this to return true if the address is of an instruction with a
3761delay slot. If a breakpoint has been placed in the instruction's delay
25822942 3762slot, @value{GDBN} will single-step over that instruction before resuming
c906108c
SS
3763normally. Currently only defined for the Mips.
3764
ebba8386 3765@item STORE_RETURN_VALUE (@var{type}, @var{regcache}, @var{valbuf})
56caf160 3766@findex STORE_RETURN_VALUE
ebba8386
AC
3767A C expression that writes the function return value, found in
3768@var{valbuf}, into the @var{regcache}. @var{type} is the type of the
3769value that is to be returned.
c906108c
SS
3770
3771@item SUN_FIXED_LBRAC_BUG
56caf160 3772@findex SUN_FIXED_LBRAC_BUG
c906108c
SS
3773(Used only for Sun-3 and Sun-4 targets.)
3774
3775@item SYMBOL_RELOADING_DEFAULT
56caf160
EZ
3776@findex SYMBOL_RELOADING_DEFAULT
3777The default value of the ``symbol-reloading'' variable. (Never defined in
c906108c
SS
3778current sources.)
3779
c906108c 3780@item TARGET_CHAR_BIT
56caf160 3781@findex TARGET_CHAR_BIT
c906108c
SS
3782Number of bits in a char; defaults to 8.
3783
c3d3ce5b
JB
3784@item TARGET_CHAR_SIGNED
3785@findex TARGET_CHAR_SIGNED
3786Non-zero if @code{char} is normally signed on this architecture; zero if
3787it should be unsigned.
3788
3789The ISO C standard requires the compiler to treat @code{char} as
3790equivalent to either @code{signed char} or @code{unsigned char}; any
3791character in the standard execution set is supposed to be positive.
3792Most compilers treat @code{char} as signed, but @code{char} is unsigned
3793on the IBM S/390, RS6000, and PowerPC targets.
3794
c906108c 3795@item TARGET_COMPLEX_BIT
56caf160 3796@findex TARGET_COMPLEX_BIT
c906108c
SS
3797Number of bits in a complex number; defaults to @code{2 * TARGET_FLOAT_BIT}.
3798
ac9a91a7
JM
3799At present this macro is not used.
3800
c906108c 3801@item TARGET_DOUBLE_BIT
56caf160 3802@findex TARGET_DOUBLE_BIT
c906108c
SS
3803Number of bits in a double float; defaults to @code{8 * TARGET_CHAR_BIT}.
3804
3805@item TARGET_DOUBLE_COMPLEX_BIT
56caf160 3806@findex TARGET_DOUBLE_COMPLEX_BIT
c906108c
SS
3807Number of bits in a double complex; defaults to @code{2 * TARGET_DOUBLE_BIT}.
3808
ac9a91a7
JM
3809At present this macro is not used.
3810
c906108c 3811@item TARGET_FLOAT_BIT
56caf160 3812@findex TARGET_FLOAT_BIT
c906108c
SS
3813Number of bits in a float; defaults to @code{4 * TARGET_CHAR_BIT}.
3814
3815@item TARGET_INT_BIT
56caf160 3816@findex TARGET_INT_BIT
c906108c
SS
3817Number of bits in an integer; defaults to @code{4 * TARGET_CHAR_BIT}.
3818
3819@item TARGET_LONG_BIT
56caf160 3820@findex TARGET_LONG_BIT
c906108c
SS
3821Number of bits in a long integer; defaults to @code{4 * TARGET_CHAR_BIT}.
3822
3823@item TARGET_LONG_DOUBLE_BIT
56caf160 3824@findex TARGET_LONG_DOUBLE_BIT
c906108c
SS
3825Number of bits in a long double float;
3826defaults to @code{2 * TARGET_DOUBLE_BIT}.
3827
3828@item TARGET_LONG_LONG_BIT
56caf160 3829@findex TARGET_LONG_LONG_BIT
c906108c
SS
3830Number of bits in a long long integer; defaults to @code{2 * TARGET_LONG_BIT}.
3831
3832@item TARGET_PTR_BIT
56caf160 3833@findex TARGET_PTR_BIT
c906108c
SS
3834Number of bits in a pointer; defaults to @code{TARGET_INT_BIT}.
3835
3836@item TARGET_SHORT_BIT
56caf160 3837@findex TARGET_SHORT_BIT
c906108c
SS
3838Number of bits in a short integer; defaults to @code{2 * TARGET_CHAR_BIT}.
3839
3840@item TARGET_READ_PC
56caf160
EZ
3841@findex TARGET_READ_PC
3842@itemx TARGET_WRITE_PC (@var{val}, @var{pid})
3843@findex TARGET_WRITE_PC
3844@itemx TARGET_READ_SP
3845@findex TARGET_READ_SP
3846@itemx TARGET_WRITE_SP
3847@findex TARGET_WRITE_SP
3848@itemx TARGET_READ_FP
3849@findex TARGET_READ_FP
56caf160
EZ
3850@findex read_pc
3851@findex write_pc
3852@findex read_sp
3853@findex write_sp
3854@findex read_fp
c906108c 3855These change the behavior of @code{read_pc}, @code{write_pc},
8227c0ff
AC
3856@code{read_sp}, @code{write_sp} and @code{read_fp}. For most targets,
3857these may be left undefined. @value{GDBN} will call the read and write
3858register functions with the relevant @code{_REGNUM} argument.
c906108c
SS
3859
3860These macros are useful when a target keeps one of these registers in a
3861hard to get at place; for example, part in a segment register and part
3862in an ordinary register.
3863
56caf160
EZ
3864@item TARGET_VIRTUAL_FRAME_POINTER(@var{pc}, @var{regp}, @var{offsetp})
3865@findex TARGET_VIRTUAL_FRAME_POINTER
c906108c 3866Returns a @code{(register, offset)} pair representing the virtual
56caf160 3867frame pointer in use at the code address @var{pc}. If virtual
c906108c
SS
3868frame pointers are not used, a default definition simply returns
3869@code{FP_REGNUM}, with an offset of zero.
3870
9742079a
EZ
3871@item TARGET_HAS_HARDWARE_WATCHPOINTS
3872If non-zero, the target has support for hardware-assisted
3873watchpoints. @xref{Algorithms, watchpoints}, for more details and
3874other related macros.
3875
7ccaa899
EZ
3876@item TARGET_PRINT_INSN (@var{addr}, @var{info})
3877@findex TARGET_PRINT_INSN
3878This is the function used by @value{GDBN} to print an assembly
3879instruction. It prints the instruction at address @var{addr} in
3880debugged memory and returns the length of the instruction, in bytes. If
3881a target doesn't define its own printing routine, it defaults to an
3882accessor function for the global pointer @code{tm_print_insn}. This
3883usually points to a function in the @code{opcodes} library (@pxref{Support
3884Libraries, ,Opcodes}). @var{info} is a structure (of type
3885@code{disassemble_info}) defined in @file{include/dis-asm.h} used to
3886pass information to the instruction decoding routine.
3887
6314f104
AC
3888@item struct frame_id unwind_dummy_id (struct frame_info *@var{frame})
3889@findex unwind_dummy_id
3890@anchor{unwind_dummy_id} Given @var{frame} return a @code{struct
3891frame_id} that uniquely identifies an inferior function call's dummy
3892frame. The value returned must match the dummy frame stack value
3893previously saved using @code{SAVE_DUMMY_FRAME_TOS}.
3894@xref{SAVE_DUMMY_FRAME_TOS}.
3895
56caf160
EZ
3896@item USE_STRUCT_CONVENTION (@var{gcc_p}, @var{type})
3897@findex USE_STRUCT_CONVENTION
c906108c
SS
3898If defined, this must be an expression that is nonzero if a value of the
3899given @var{type} being returned from a function must have space
3900allocated for it on the stack. @var{gcc_p} is true if the function
3901being considered is known to have been compiled by GCC; this is helpful
3902for systems where GCC is known to use different calling convention than
3903other compilers.
3904
13d01224
AC
3905@item VALUE_TO_REGISTER(@var{type}, @var{regnum}, @var{from}, @var{to})
3906@findex VALUE_TO_REGISTER
3907Convert a value of type @var{type} into the raw contents of register
3908@var{regnum}'s.
3909@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
3910
56caf160
EZ
3911@item VARIABLES_INSIDE_BLOCK (@var{desc}, @var{gcc_p})
3912@findex VARIABLES_INSIDE_BLOCK
c906108c
SS
3913For dbx-style debugging information, if the compiler puts variable
3914declarations inside LBRAC/RBRAC blocks, this should be defined to be
3915nonzero. @var{desc} is the value of @code{n_desc} from the
25822942 3916@code{N_RBRAC} symbol, and @var{gcc_p} is true if @value{GDBN} has noticed the
c906108c
SS
3917presence of either the @code{GCC_COMPILED_SYMBOL} or the
3918@code{GCC2_COMPILED_SYMBOL}. By default, this is 0.
3919
56caf160
EZ
3920@item OS9K_VARIABLES_INSIDE_BLOCK (@var{desc}, @var{gcc_p})
3921@findex OS9K_VARIABLES_INSIDE_BLOCK
c906108c 3922Similarly, for OS/9000. Defaults to 1.
c906108c
SS
3923@end table
3924
3925Motorola M68K target conditionals.
3926
56caf160 3927@ftable @code
c906108c
SS
3928@item BPT_VECTOR
3929Define this to be the 4-bit location of the breakpoint trap vector. If
3930not defined, it will default to @code{0xf}.
3931
3932@item REMOTE_BPT_VECTOR
3933Defaults to @code{1}.
a23a7bf1
JB
3934
3935@item NAME_OF_MALLOC
3936@findex NAME_OF_MALLOC
3937A string containing the name of the function to call in order to
3938allocate some memory in the inferior. The default value is "malloc".
3939
56caf160 3940@end ftable
c906108c
SS
3941
3942@section Adding a New Target
3943
56caf160 3944@cindex adding a target
af6c57ea 3945The following files add a target to @value{GDBN}:
c906108c
SS
3946
3947@table @file
56caf160 3948@vindex TDEPFILES
c906108c
SS
3949@item gdb/config/@var{arch}/@var{ttt}.mt
3950Contains a Makefile fragment specific to this target. Specifies what
3951object files are needed for target @var{ttt}, by defining
104c1213
JM
3952@samp{TDEPFILES=@dots{}} and @samp{TDEPLIBS=@dots{}}. Also specifies
3953the header file which describes @var{ttt}, by defining @samp{TM_FILE=
3954tm-@var{ttt}.h}.
3955
3956You can also define @samp{TM_CFLAGS}, @samp{TM_CLIBS}, @samp{TM_CDEPS},
3957but these are now deprecated, replaced by autoconf, and may go away in
25822942 3958future versions of @value{GDBN}.
c906108c 3959
c906108c
SS
3960@item gdb/@var{ttt}-tdep.c
3961Contains any miscellaneous code required for this target machine. On
3962some machines it doesn't exist at all. Sometimes the macros in
3963@file{tm-@var{ttt}.h} become very complicated, so they are implemented
3964as functions here instead, and the macro is simply defined to call the
3965function. This is vastly preferable, since it is easier to understand
3966and debug.
3967
af6c57ea
AC
3968@item gdb/@var{arch}-tdep.c
3969@itemx gdb/@var{arch}-tdep.h
3970This often exists to describe the basic layout of the target machine's
3971processor chip (registers, stack, etc.). If used, it is included by
3972@file{@var{ttt}-tdep.h}. It can be shared among many targets that use
3973the same processor.
3974
3975@item gdb/config/@var{arch}/tm-@var{ttt}.h
3976(@file{tm.h} is a link to this file, created by @code{configure}). Contains
3977macro definitions about the target machine's registers, stack frame
3978format and instructions.
3979
3980New targets do not need this file and should not create it.
3981
c906108c
SS
3982@item gdb/config/@var{arch}/tm-@var{arch}.h
3983This often exists to describe the basic layout of the target machine's
56caf160 3984processor chip (registers, stack, etc.). If used, it is included by
c906108c
SS
3985@file{tm-@var{ttt}.h}. It can be shared among many targets that use the
3986same processor.
3987
af6c57ea
AC
3988New targets do not need this file and should not create it.
3989
c906108c
SS
3990@end table
3991
3992If you are adding a new operating system for an existing CPU chip, add a
3993@file{config/tm-@var{os}.h} file that describes the operating system
3994facilities that are unusual (extra symbol table info; the breakpoint
56caf160 3995instruction needed; etc.). Then write a @file{@var{arch}/tm-@var{os}.h}
c906108c
SS
3996that just @code{#include}s @file{tm-@var{arch}.h} and
3997@file{config/tm-@var{os}.h}.
3998
3999
3352e23e
AC
4000@section Converting an existing Target Architecture to Multi-arch
4001@cindex converting targets to multi-arch
4002
4003This section describes the current accepted best practice for converting
4004an existing target architecture to the multi-arch framework.
4005
4006The process consists of generating, testing, posting and committing a
4007sequence of patches. Each patch must contain a single change, for
4008instance:
4009
4010@itemize @bullet
4011
4012@item
4013Directly convert a group of functions into macros (the conversion does
4014not change the behavior of any of the functions).
4015
4016@item
4017Replace a non-multi-arch with a multi-arch mechanism (e.g.,
4018@code{FRAME_INFO}).
4019
4020@item
4021Enable multi-arch level one.
4022
4023@item
4024Delete one or more files.
4025
4026@end itemize
4027
4028@noindent
4029There isn't a size limit on a patch, however, a developer is strongly
4030encouraged to keep the patch size down.
4031
4032Since each patch is well defined, and since each change has been tested
4033and shows no regressions, the patches are considered @emph{fairly}
4034obvious. Such patches, when submitted by developers listed in the
4035@file{MAINTAINERS} file, do not need approval. Occasional steps in the
4036process may be more complicated and less clear. The developer is
4037expected to use their judgment and is encouraged to seek advice as
4038needed.
4039
4040@subsection Preparation
4041
4042The first step is to establish control. Build (with @option{-Werror}
4043enabled) and test the target so that there is a baseline against which
4044the debugger can be compared.
4045
4046At no stage can the test results regress or @value{GDBN} stop compiling
4047with @option{-Werror}.
4048
4049@subsection Add the multi-arch initialization code
4050
4051The objective of this step is to establish the basic multi-arch
4052framework. It involves
4053
4054@itemize @bullet
4055
4056@item
4057The addition of a @code{@var{arch}_gdbarch_init} function@footnote{The
4058above is from the original example and uses K&R C. @value{GDBN}
4059has since converted to ISO C but lets ignore that.} that creates
4060the architecture:
4061@smallexample
4062static struct gdbarch *
4063d10v_gdbarch_init (info, arches)
4064 struct gdbarch_info info;
4065 struct gdbarch_list *arches;
4066@{
4067 struct gdbarch *gdbarch;
4068 /* there is only one d10v architecture */
4069 if (arches != NULL)
4070 return arches->gdbarch;
4071 gdbarch = gdbarch_alloc (&info, NULL);
4072 return gdbarch;
4073@}
4074@end smallexample
4075@noindent
4076@emph{}
4077
4078@item
4079A per-architecture dump function to print any architecture specific
4080information:
4081@smallexample
4082static void
4083mips_dump_tdep (struct gdbarch *current_gdbarch,
4084 struct ui_file *file)
4085@{
4086 @dots{} code to print architecture specific info @dots{}
4087@}
4088@end smallexample
4089
4090@item
4091A change to @code{_initialize_@var{arch}_tdep} to register this new
4092architecture:
4093@smallexample
4094void
4095_initialize_mips_tdep (void)
4096@{
4097 gdbarch_register (bfd_arch_mips, mips_gdbarch_init,
4098 mips_dump_tdep);
4099@end smallexample
4100
4101@item
4102Add the macro @code{GDB_MULTI_ARCH}, defined as 0 (zero), to the file@*
4103@file{config/@var{arch}/tm-@var{arch}.h}.
4104
4105@end itemize
4106
4107@subsection Update multi-arch incompatible mechanisms
4108
4109Some mechanisms do not work with multi-arch. They include:
4110
4111@table @code
4112@item EXTRA_FRAME_INFO
4113Delete.
4114@item FRAME_FIND_SAVED_REGS
f30ee0bc 4115Replaced with @code{DEPRECATED_FRAME_INIT_SAVED_REGS}
3352e23e
AC
4116@end table
4117
4118@noindent
4119At this stage you could also consider converting the macros into
4120functions.
4121
4122@subsection Prepare for multi-arch level to one
4123
4124Temporally set @code{GDB_MULTI_ARCH} to @code{GDB_MULTI_ARCH_PARTIAL}
4125and then build and start @value{GDBN} (the change should not be
4126committed). @value{GDBN} may not build, and once built, it may die with
4127an internal error listing the architecture methods that must be
4128provided.
4129
4130Fix any build problems (patch(es)).
4131
4132Convert all the architecture methods listed, which are only macros, into
4133functions (patch(es)).
4134
4135Update @code{@var{arch}_gdbarch_init} to set all the missing
4136architecture methods and wrap the corresponding macros in @code{#if
4137!GDB_MULTI_ARCH} (patch(es)).
4138
4139@subsection Set multi-arch level one
4140
4141Change the value of @code{GDB_MULTI_ARCH} to GDB_MULTI_ARCH_PARTIAL (a
4142single patch).
4143
4144Any problems with throwing ``the switch'' should have been fixed
4145already.
4146
4147@subsection Convert remaining macros
4148
4149Suggest converting macros into functions (and setting the corresponding
4150architecture method) in small batches.
4151
4152@subsection Set multi-arch level to two
4153
4154This should go smoothly.
4155
4156@subsection Delete the TM file
4157
4158The @file{tm-@var{arch}.h} can be deleted. @file{@var{arch}.mt} and
4159@file{configure.in} updated.
4160
4161
c906108c
SS
4162@node Target Vector Definition
4163
4164@chapter Target Vector Definition
56caf160 4165@cindex target vector
c906108c 4166
56caf160
EZ
4167The target vector defines the interface between @value{GDBN}'s
4168abstract handling of target systems, and the nitty-gritty code that
4169actually exercises control over a process or a serial port.
4170@value{GDBN} includes some 30-40 different target vectors; however,
4171each configuration of @value{GDBN} includes only a few of them.
c906108c
SS
4172
4173@section File Targets
4174
4175Both executables and core files have target vectors.
4176
4177@section Standard Protocol and Remote Stubs
4178
56caf160
EZ
4179@value{GDBN}'s file @file{remote.c} talks a serial protocol to code
4180that runs in the target system. @value{GDBN} provides several sample
4181@dfn{stubs} that can be integrated into target programs or operating
4182systems for this purpose; they are named @file{*-stub.c}.
c906108c 4183
56caf160
EZ
4184The @value{GDBN} user's manual describes how to put such a stub into
4185your target code. What follows is a discussion of integrating the
4186SPARC stub into a complicated operating system (rather than a simple
4187program), by Stu Grossman, the author of this stub.
c906108c
SS
4188
4189The trap handling code in the stub assumes the following upon entry to
56caf160 4190@code{trap_low}:
c906108c
SS
4191
4192@enumerate
56caf160
EZ
4193@item
4194%l1 and %l2 contain pc and npc respectively at the time of the trap;
c906108c 4195
56caf160
EZ
4196@item
4197traps are disabled;
c906108c 4198
56caf160
EZ
4199@item
4200you are in the correct trap window.
c906108c
SS
4201@end enumerate
4202
4203As long as your trap handler can guarantee those conditions, then there
56caf160 4204is no reason why you shouldn't be able to ``share'' traps with the stub.
c906108c
SS
4205The stub has no requirement that it be jumped to directly from the
4206hardware trap vector. That is why it calls @code{exceptionHandler()},
4207which is provided by the external environment. For instance, this could
56caf160 4208set up the hardware traps to actually execute code which calls the stub
c906108c
SS
4209first, and then transfers to its own trap handler.
4210
4211For the most point, there probably won't be much of an issue with
56caf160 4212``sharing'' traps, as the traps we use are usually not used by the kernel,
c906108c
SS
4213and often indicate unrecoverable error conditions. Anyway, this is all
4214controlled by a table, and is trivial to modify. The most important
4215trap for us is for @code{ta 1}. Without that, we can't single step or
4216do breakpoints. Everything else is unnecessary for the proper operation
4217of the debugger/stub.
4218
4219From reading the stub, it's probably not obvious how breakpoints work.
25822942 4220They are simply done by deposit/examine operations from @value{GDBN}.
c906108c
SS
4221
4222@section ROM Monitor Interface
4223
4224@section Custom Protocols
4225
4226@section Transport Layer
4227
4228@section Builtin Simulator
4229
4230
4231@node Native Debugging
4232
4233@chapter Native Debugging
56caf160 4234@cindex native debugging
c906108c 4235
25822942 4236Several files control @value{GDBN}'s configuration for native support:
c906108c
SS
4237
4238@table @file
56caf160 4239@vindex NATDEPFILES
c906108c 4240@item gdb/config/@var{arch}/@var{xyz}.mh
7fd60527 4241Specifies Makefile fragments needed by a @emph{native} configuration on
c906108c
SS
4242machine @var{xyz}. In particular, this lists the required
4243native-dependent object files, by defining @samp{NATDEPFILES=@dots{}}.
4244Also specifies the header file which describes native support on
4245@var{xyz}, by defining @samp{NAT_FILE= nm-@var{xyz}.h}. You can also
4246define @samp{NAT_CFLAGS}, @samp{NAT_ADD_FILES}, @samp{NAT_CLIBS},
4247@samp{NAT_CDEPS}, etc.; see @file{Makefile.in}.
4248
7fd60527
AC
4249@emph{Maintainer's note: The @file{.mh} suffix is because this file
4250originally contained @file{Makefile} fragments for hosting @value{GDBN}
4251on machine @var{xyz}. While the file is no longer used for this
937f164b 4252purpose, the @file{.mh} suffix remains. Perhaps someone will
7fd60527
AC
4253eventually rename these fragments so that they have a @file{.mn}
4254suffix.}
4255
c906108c 4256@item gdb/config/@var{arch}/nm-@var{xyz}.h
56caf160 4257(@file{nm.h} is a link to this file, created by @code{configure}). Contains C
c906108c
SS
4258macro definitions describing the native system environment, such as
4259child process control and core file support.
4260
4261@item gdb/@var{xyz}-nat.c
4262Contains any miscellaneous C code required for this native support of
4263this machine. On some machines it doesn't exist at all.
c906108c
SS
4264@end table
4265
4266There are some ``generic'' versions of routines that can be used by
4267various systems. These can be customized in various ways by macros
4268defined in your @file{nm-@var{xyz}.h} file. If these routines work for
4269the @var{xyz} host, you can just include the generic file's name (with
4270@samp{.o}, not @samp{.c}) in @code{NATDEPFILES}.
4271
4272Otherwise, if your machine needs custom support routines, you will need
4273to write routines that perform the same functions as the generic file.
56caf160 4274Put them into @file{@var{xyz}-nat.c}, and put @file{@var{xyz}-nat.o}
c906108c
SS
4275into @code{NATDEPFILES}.
4276
4277@table @file
c906108c
SS
4278@item inftarg.c
4279This contains the @emph{target_ops vector} that supports Unix child
4280processes on systems which use ptrace and wait to control the child.
4281
4282@item procfs.c
4283This contains the @emph{target_ops vector} that supports Unix child
4284processes on systems which use /proc to control the child.
4285
4286@item fork-child.c
56caf160
EZ
4287This does the low-level grunge that uses Unix system calls to do a ``fork
4288and exec'' to start up a child process.
c906108c
SS
4289
4290@item infptrace.c
4291This is the low level interface to inferior processes for systems using
4292the Unix @code{ptrace} call in a vanilla way.
c906108c
SS
4293@end table
4294
4295@section Native core file Support
56caf160 4296@cindex native core files
c906108c
SS
4297
4298@table @file
56caf160 4299@findex fetch_core_registers
c906108c
SS
4300@item core-aout.c::fetch_core_registers()
4301Support for reading registers out of a core file. This routine calls
4302@code{register_addr()}, see below. Now that BFD is used to read core
4303files, virtually all machines should use @code{core-aout.c}, and should
4304just provide @code{fetch_core_registers} in @code{@var{xyz}-nat.c} (or
4305@code{REGISTER_U_ADDR} in @code{nm-@var{xyz}.h}).
4306
4307@item core-aout.c::register_addr()
4308If your @code{nm-@var{xyz}.h} file defines the macro
4309@code{REGISTER_U_ADDR(addr, blockend, regno)}, it should be defined to
25822942 4310set @code{addr} to the offset within the @samp{user} struct of @value{GDBN}
c906108c
SS
4311register number @code{regno}. @code{blockend} is the offset within the
4312``upage'' of @code{u.u_ar0}. If @code{REGISTER_U_ADDR} is defined,
4313@file{core-aout.c} will define the @code{register_addr()} function and
4314use the macro in it. If you do not define @code{REGISTER_U_ADDR}, but
4315you are using the standard @code{fetch_core_registers()}, you will need
4316to define your own version of @code{register_addr()}, put it into your
4317@code{@var{xyz}-nat.c} file, and be sure @code{@var{xyz}-nat.o} is in
4318the @code{NATDEPFILES} list. If you have your own
4319@code{fetch_core_registers()}, you may not need a separate
4320@code{register_addr()}. Many custom @code{fetch_core_registers()}
4321implementations simply locate the registers themselves.@refill
c906108c
SS
4322@end table
4323
25822942 4324When making @value{GDBN} run native on a new operating system, to make it
c906108c
SS
4325possible to debug core files, you will need to either write specific
4326code for parsing your OS's core files, or customize
4327@file{bfd/trad-core.c}. First, use whatever @code{#include} files your
4328machine uses to define the struct of registers that is accessible
4329(possibly in the u-area) in a core file (rather than
4330@file{machine/reg.h}), and an include file that defines whatever header
56caf160
EZ
4331exists on a core file (e.g. the u-area or a @code{struct core}). Then
4332modify @code{trad_unix_core_file_p} to use these values to set up the
c906108c
SS
4333section information for the data segment, stack segment, any other
4334segments in the core file (perhaps shared library contents or control
4335information), ``registers'' segment, and if there are two discontiguous
4336sets of registers (e.g. integer and float), the ``reg2'' segment. This
4337section information basically delimits areas in the core file in a
4338standard way, which the section-reading routines in BFD know how to seek
4339around in.
4340
25822942 4341Then back in @value{GDBN}, you need a matching routine called
56caf160 4342@code{fetch_core_registers}. If you can use the generic one, it's in
c906108c
SS
4343@file{core-aout.c}; if not, it's in your @file{@var{xyz}-nat.c} file.
4344It will be passed a char pointer to the entire ``registers'' segment,
4345its length, and a zero; or a char pointer to the entire ``regs2''
4346segment, its length, and a 2. The routine should suck out the supplied
25822942 4347register values and install them into @value{GDBN}'s ``registers'' array.
c906108c
SS
4348
4349If your system uses @file{/proc} to control processes, and uses ELF
4350format core files, then you may be able to use the same routines for
4351reading the registers out of processes and out of core files.
4352
4353@section ptrace
4354
4355@section /proc
4356
4357@section win32
4358
4359@section shared libraries
4360
4361@section Native Conditionals
56caf160 4362@cindex native conditionals
c906108c 4363
56caf160
EZ
4364When @value{GDBN} is configured and compiled, various macros are
4365defined or left undefined, to control compilation when the host and
4366target systems are the same. These macros should be defined (or left
4367undefined) in @file{nm-@var{system}.h}.
c906108c
SS
4368
4369@table @code
c906108c 4370@item ATTACH_DETACH
56caf160 4371@findex ATTACH_DETACH
25822942 4372If defined, then @value{GDBN} will include support for the @code{attach} and
c906108c
SS
4373@code{detach} commands.
4374
4375@item CHILD_PREPARE_TO_STORE
56caf160 4376@findex CHILD_PREPARE_TO_STORE
c906108c
SS
4377If the machine stores all registers at once in the child process, then
4378define this to ensure that all values are correct. This usually entails
4379a read from the child.
4380
4381[Note that this is incorrectly defined in @file{xm-@var{system}.h} files
4382currently.]
4383
4384@item FETCH_INFERIOR_REGISTERS
56caf160 4385@findex FETCH_INFERIOR_REGISTERS
c906108c
SS
4386Define this if the native-dependent code will provide its own routines
4387@code{fetch_inferior_registers} and @code{store_inferior_registers} in
56caf160 4388@file{@var{host}-nat.c}. If this symbol is @emph{not} defined, and
c906108c
SS
4389@file{infptrace.c} is included in this configuration, the default
4390routines in @file{infptrace.c} are used for these functions.
4391
4392@item FILES_INFO_HOOK
56caf160 4393@findex FILES_INFO_HOOK
c906108c
SS
4394(Only defined for Convex.)
4395
4396@item FP0_REGNUM
56caf160 4397@findex FP0_REGNUM
c906108c
SS
4398This macro is normally defined to be the number of the first floating
4399point register, if the machine has such registers. As such, it would
56caf160 4400appear only in target-specific code. However, @file{/proc} support uses this
c906108c
SS
4401to decide whether floats are in use on this target.
4402
4403@item GET_LONGJMP_TARGET
56caf160 4404@findex GET_LONGJMP_TARGET
c906108c
SS
4405For most machines, this is a target-dependent parameter. On the
4406DECstation and the Iris, this is a native-dependent parameter, since
56caf160 4407@file{setjmp.h} is needed to define it.
c906108c 4408
56caf160 4409This macro determines the target PC address that @code{longjmp} will jump to,
c906108c 4410assuming that we have just stopped at a longjmp breakpoint. It takes a
56caf160 4411@code{CORE_ADDR *} as argument, and stores the target PC value through this
c906108c
SS
4412pointer. It examines the current state of the machine as needed.
4413
9742079a
EZ
4414@item I386_USE_GENERIC_WATCHPOINTS
4415An x86-based machine can define this to use the generic x86 watchpoint
4416support; see @ref{Algorithms, I386_USE_GENERIC_WATCHPOINTS}.
4417
c906108c 4418@item KERNEL_U_ADDR
56caf160 4419@findex KERNEL_U_ADDR
c906108c 4420Define this to the address of the @code{u} structure (the ``user
25822942 4421struct'', also known as the ``u-page'') in kernel virtual memory. @value{GDBN}
c906108c
SS
4422needs to know this so that it can subtract this address from absolute
4423addresses in the upage, that are obtained via ptrace or from core files.
4424On systems that don't need this value, set it to zero.
4425
4426@item KERNEL_U_ADDR_BSD
56caf160 4427@findex KERNEL_U_ADDR_BSD
25822942 4428Define this to cause @value{GDBN} to determine the address of @code{u} at
c906108c
SS
4429runtime, by using Berkeley-style @code{nlist} on the kernel's image in
4430the root directory.
4431
4432@item KERNEL_U_ADDR_HPUX
56caf160 4433@findex KERNEL_U_ADDR_HPUX
25822942 4434Define this to cause @value{GDBN} to determine the address of @code{u} at
c906108c
SS
4435runtime, by using HP-style @code{nlist} on the kernel's image in the
4436root directory.
4437
4438@item ONE_PROCESS_WRITETEXT
56caf160 4439@findex ONE_PROCESS_WRITETEXT
c906108c
SS
4440Define this to be able to, when a breakpoint insertion fails, warn the
4441user that another process may be running with the same executable.
4442
56caf160
EZ
4443@item PREPARE_TO_PROCEED (@var{select_it})
4444@findex PREPARE_TO_PROCEED
adf40b2e
JM
4445This (ugly) macro allows a native configuration to customize the way the
4446@code{proceed} function in @file{infrun.c} deals with switching between
4447threads.
4448
4449In a multi-threaded task we may select another thread and then continue
4450or step. But if the old thread was stopped at a breakpoint, it will
4451immediately cause another breakpoint stop without any execution (i.e. it
25822942 4452will report a breakpoint hit incorrectly). So @value{GDBN} must step over it
adf40b2e
JM
4453first.
4454
4455If defined, @code{PREPARE_TO_PROCEED} should check the current thread
4456against the thread that reported the most recent event. If a step-over
4457is required, it returns TRUE. If @var{select_it} is non-zero, it should
4458reselect the old thread.
4459
c906108c 4460@item PROC_NAME_FMT
56caf160 4461@findex PROC_NAME_FMT
c906108c
SS
4462Defines the format for the name of a @file{/proc} device. Should be
4463defined in @file{nm.h} @emph{only} in order to override the default
4464definition in @file{procfs.c}.
4465
4466@item PTRACE_FP_BUG
56caf160
EZ
4467@findex PTRACE_FP_BUG
4468See @file{mach386-xdep.c}.
c906108c
SS
4469
4470@item PTRACE_ARG3_TYPE
56caf160 4471@findex PTRACE_ARG3_TYPE
c906108c
SS
4472The type of the third argument to the @code{ptrace} system call, if it
4473exists and is different from @code{int}.
4474
4475@item REGISTER_U_ADDR
56caf160 4476@findex REGISTER_U_ADDR
c906108c
SS
4477Defines the offset of the registers in the ``u area''.
4478
4479@item SHELL_COMMAND_CONCAT
56caf160 4480@findex SHELL_COMMAND_CONCAT
c906108c
SS
4481If defined, is a string to prefix on the shell command used to start the
4482inferior.
4483
4484@item SHELL_FILE
56caf160 4485@findex SHELL_FILE
c906108c
SS
4486If defined, this is the name of the shell to use to run the inferior.
4487Defaults to @code{"/bin/sh"}.
4488
990f9fe3 4489@item SOLIB_ADD (@var{filename}, @var{from_tty}, @var{targ}, @var{readsyms})
56caf160 4490@findex SOLIB_ADD
c906108c 4491Define this to expand into an expression that will cause the symbols in
990f9fe3
FF
4492@var{filename} to be added to @value{GDBN}'s symbol table. If
4493@var{readsyms} is zero symbols are not read but any necessary low level
4494processing for @var{filename} is still done.
c906108c
SS
4495
4496@item SOLIB_CREATE_INFERIOR_HOOK
56caf160 4497@findex SOLIB_CREATE_INFERIOR_HOOK
c906108c
SS
4498Define this to expand into any shared-library-relocation code that you
4499want to be run just after the child process has been forked.
4500
4501@item START_INFERIOR_TRAPS_EXPECTED
56caf160
EZ
4502@findex START_INFERIOR_TRAPS_EXPECTED
4503When starting an inferior, @value{GDBN} normally expects to trap
4504twice; once when
c906108c
SS
4505the shell execs, and once when the program itself execs. If the actual
4506number of traps is something other than 2, then define this macro to
4507expand into the number expected.
4508
4509@item SVR4_SHARED_LIBS
56caf160 4510@findex SVR4_SHARED_LIBS
c906108c
SS
4511Define this to indicate that SVR4-style shared libraries are in use.
4512
4513@item USE_PROC_FS
56caf160 4514@findex USE_PROC_FS
c906108c 4515This determines whether small routines in @file{*-tdep.c}, which
56caf160
EZ
4516translate register values between @value{GDBN}'s internal
4517representation and the @file{/proc} representation, are compiled.
c906108c
SS
4518
4519@item U_REGS_OFFSET
56caf160 4520@findex U_REGS_OFFSET
c906108c
SS
4521This is the offset of the registers in the upage. It need only be
4522defined if the generic ptrace register access routines in
4523@file{infptrace.c} are being used (that is, @file{infptrace.c} is
4524configured in, and @code{FETCH_INFERIOR_REGISTERS} is not defined). If
4525the default value from @file{infptrace.c} is good enough, leave it
4526undefined.
4527
4528The default value means that u.u_ar0 @emph{points to} the location of
4529the registers. I'm guessing that @code{#define U_REGS_OFFSET 0} means
56caf160 4530that @code{u.u_ar0} @emph{is} the location of the registers.
c906108c
SS
4531
4532@item CLEAR_SOLIB
56caf160
EZ
4533@findex CLEAR_SOLIB
4534See @file{objfiles.c}.
c906108c
SS
4535
4536@item DEBUG_PTRACE
56caf160
EZ
4537@findex DEBUG_PTRACE
4538Define this to debug @code{ptrace} calls.
c906108c
SS
4539@end table
4540
4541
4542@node Support Libraries
4543
4544@chapter Support Libraries
4545
4546@section BFD
56caf160 4547@cindex BFD library
c906108c 4548
25822942 4549BFD provides support for @value{GDBN} in several ways:
c906108c
SS
4550
4551@table @emph
c906108c
SS
4552@item identifying executable and core files
4553BFD will identify a variety of file types, including a.out, coff, and
4554several variants thereof, as well as several kinds of core files.
4555
4556@item access to sections of files
4557BFD parses the file headers to determine the names, virtual addresses,
4558sizes, and file locations of all the various named sections in files
56caf160
EZ
4559(such as the text section or the data section). @value{GDBN} simply
4560calls BFD to read or write section @var{x} at byte offset @var{y} for
4561length @var{z}.
c906108c
SS
4562
4563@item specialized core file support
4564BFD provides routines to determine the failing command name stored in a
4565core file, the signal with which the program failed, and whether a core
56caf160 4566file matches (i.e.@: could be a core dump of) a particular executable
c906108c
SS
4567file.
4568
4569@item locating the symbol information
25822942
DB
4570@value{GDBN} uses an internal interface of BFD to determine where to find the
4571symbol information in an executable file or symbol-file. @value{GDBN} itself
c906108c 4572handles the reading of symbols, since BFD does not ``understand'' debug
25822942 4573symbols, but @value{GDBN} uses BFD's cached information to find the symbols,
c906108c 4574string table, etc.
c906108c
SS
4575@end table
4576
4577@section opcodes
56caf160 4578@cindex opcodes library
c906108c 4579
25822942 4580The opcodes library provides @value{GDBN}'s disassembler. (It's a separate
c906108c
SS
4581library because it's also used in binutils, for @file{objdump}).
4582
4583@section readline
4584
4585@section mmalloc
4586
4587@section libiberty
4588
4589@section gnu-regex
56caf160 4590@cindex regular expressions library
c906108c
SS
4591
4592Regex conditionals.
4593
4594@table @code
c906108c
SS
4595@item C_ALLOCA
4596
4597@item NFAILURES
4598
4599@item RE_NREGS
4600
4601@item SIGN_EXTEND_CHAR
4602
4603@item SWITCH_ENUM_BUG
4604
4605@item SYNTAX_TABLE
4606
4607@item Sword
4608
4609@item sparc
c906108c
SS
4610@end table
4611
4612@section include
4613
4614@node Coding
4615
4616@chapter Coding
4617
4618This chapter covers topics that are lower-level than the major
25822942 4619algorithms of @value{GDBN}.
c906108c
SS
4620
4621@section Cleanups
56caf160 4622@cindex cleanups
c906108c
SS
4623
4624Cleanups are a structured way to deal with things that need to be done
cc1cb004 4625later.
c906108c 4626
cc1cb004
AC
4627When your code does something (e.g., @code{xmalloc} some memory, or
4628@code{open} a file) that needs to be undone later (e.g., @code{xfree}
4629the memory or @code{close} the file), it can make a cleanup. The
4630cleanup will be done at some future point: when the command is finished
4631and control returns to the top level; when an error occurs and the stack
4632is unwound; or when your code decides it's time to explicitly perform
4633cleanups. Alternatively you can elect to discard the cleanups you
4634created.
c906108c
SS
4635
4636Syntax:
4637
4638@table @code
c906108c
SS
4639@item struct cleanup *@var{old_chain};
4640Declare a variable which will hold a cleanup chain handle.
4641
56caf160 4642@findex make_cleanup
c906108c
SS
4643@item @var{old_chain} = make_cleanup (@var{function}, @var{arg});
4644Make a cleanup which will cause @var{function} to be called with
4645@var{arg} (a @code{char *}) later. The result, @var{old_chain}, is a
cc1cb004
AC
4646handle that can later be passed to @code{do_cleanups} or
4647@code{discard_cleanups}. Unless you are going to call
4648@code{do_cleanups} or @code{discard_cleanups}, you can ignore the result
4649from @code{make_cleanup}.
c906108c 4650
56caf160 4651@findex do_cleanups
c906108c 4652@item do_cleanups (@var{old_chain});
cc1cb004
AC
4653Do all cleanups added to the chain since the corresponding
4654@code{make_cleanup} call was made.
4655
4656@findex discard_cleanups
4657@item discard_cleanups (@var{old_chain});
4658Same as @code{do_cleanups} except that it just removes the cleanups from
4659the chain and does not call the specified functions.
4660@end table
4661
4662Cleanups are implemented as a chain. The handle returned by
4663@code{make_cleanups} includes the cleanup passed to the call and any
4664later cleanups appended to the chain (but not yet discarded or
4665performed). E.g.:
56caf160 4666
474c8240 4667@smallexample
c906108c 4668make_cleanup (a, 0);
cc1cb004
AC
4669@{
4670 struct cleanup *old = make_cleanup (b, 0);
4671 make_cleanup (c, 0)
4672 ...
4673 do_cleanups (old);
4674@}
474c8240 4675@end smallexample
56caf160 4676
c906108c 4677@noindent
cc1cb004
AC
4678will call @code{c()} and @code{b()} but will not call @code{a()}. The
4679cleanup that calls @code{a()} will remain in the cleanup chain, and will
4680be done later unless otherwise discarded.@refill
4681
4682Your function should explicitly do or discard the cleanups it creates.
4683Failing to do this leads to non-deterministic behavior since the caller
4684will arbitrarily do or discard your functions cleanups. This need leads
4685to two common cleanup styles.
4686
4687The first style is try/finally. Before it exits, your code-block calls
4688@code{do_cleanups} with the old cleanup chain and thus ensures that your
4689code-block's cleanups are always performed. For instance, the following
4690code-segment avoids a memory leak problem (even when @code{error} is
4691called and a forced stack unwind occurs) by ensuring that the
4692@code{xfree} will always be called:
c906108c 4693
474c8240 4694@smallexample
cc1cb004
AC
4695struct cleanup *old = make_cleanup (null_cleanup, 0);
4696data = xmalloc (sizeof blah);
4697make_cleanup (xfree, data);
4698... blah blah ...
4699do_cleanups (old);
474c8240 4700@end smallexample
cc1cb004
AC
4701
4702The second style is try/except. Before it exits, your code-block calls
4703@code{discard_cleanups} with the old cleanup chain and thus ensures that
4704any created cleanups are not performed. For instance, the following
4705code segment, ensures that the file will be closed but only if there is
4706an error:
4707
474c8240 4708@smallexample
cc1cb004
AC
4709FILE *file = fopen ("afile", "r");
4710struct cleanup *old = make_cleanup (close_file, file);
4711... blah blah ...
4712discard_cleanups (old);
4713return file;
474c8240 4714@end smallexample
c906108c
SS
4715
4716Some functions, e.g. @code{fputs_filtered()} or @code{error()}, specify
4717that they ``should not be called when cleanups are not in place''. This
4718means that any actions you need to reverse in the case of an error or
4719interruption must be on the cleanup chain before you call these
4720functions, since they might never return to your code (they
4721@samp{longjmp} instead).
4722
ba8c9337
AC
4723@section Per-architecture module data
4724@cindex per-architecture module data
4725@cindex multi-arch data
4726@cindex data-pointer, per-architecture/per-module
4727
4728The multi-arch framework includes a mechanism for adding module specific
4729per-architecture data-pointers to the @code{struct gdbarch} architecture
4730object.
4731
4732A module registers one or more per-architecture data-pointers using the
4733function @code{register_gdbarch_data}:
4734
4735@deftypefun struct gdbarch_data *register_gdbarch_data (gdbarch_data_init_ftype *@var{init}, gdbarch_data_free_ftype *@var{free})
4736
4737The @var{init} function is used to obtain an initial value for a
4738per-architecture data-pointer. The function is called, after the
4739architecture has been created, when the data-pointer is still
4740uninitialized (@code{NULL}) and its value has been requested via a call
4741to @code{gdbarch_data}. A data-pointer can also be initialize
4742explicitly using @code{set_gdbarch_data}.
4743
4744The @var{free} function is called when a data-pointer needs to be
4745destroyed. This occurs when either the corresponding @code{struct
4746gdbarch} object is being destroyed or when @code{set_gdbarch_data} is
4747overriding a non-@code{NULL} data-pointer value.
4748
4749The function @code{register_gdbarch_data} returns a @code{struct
4750gdbarch_data} that is used to identify the data-pointer that was added
4751to the module.
4752
4753@end deftypefun
4754
4755A typical module has @code{init} and @code{free} functions of the form:
4756
4757@smallexample
4758static struct gdbarch_data *nozel_handle;
4759static void *
4760nozel_init (struct gdbarch *gdbarch)
4761@{
4762 struct nozel *data = XMALLOC (struct nozel);
4763 @dots{}
4764 return data;
4765@}
4766@dots{}
4767static void
4768nozel_free (struct gdbarch *gdbarch, void *data)
4769@{
4770 xfree (data);
4771@}
4772@end smallexample
4773
4774Since uninitialized (@code{NULL}) data-pointers are initialized
4775on-demand, an @code{init} function is free to call other modules that
4776use data-pointers. Those modules data-pointers will be initialized as
4777needed. Care should be taken to ensure that the @code{init} call graph
4778does not contain cycles.
4779
4780The data-pointer is registered with the call:
4781
4782@smallexample
4783void
4784_initialize_nozel (void)
4785@{
4786 nozel_handle = register_gdbarch_data (nozel_init, nozel_free);
4787@dots{}
4788@end smallexample
4789
4790The per-architecture data-pointer is accessed using the function:
4791
4792@deftypefun void *gdbarch_data (struct gdbarch *@var{gdbarch}, struct gdbarch_data *@var{data_handle})
4793Given the architecture @var{arch} and module data handle
4794@var{data_handle} (returned by @code{register_gdbarch_data}, this
4795function returns the current value of the per-architecture data-pointer.
4796@end deftypefun
4797
4798The non-@code{NULL} data-pointer returned by @code{gdbarch_data} should
4799be saved in a local variable and then used directly:
4800
4801@smallexample
4802int
4803nozel_total (struct gdbarch *gdbarch)
4804@{
4805 int total;
4806 struct nozel *data = gdbarch_data (gdbarch, nozel_handle);
4807 @dots{}
4808 return total;
4809@}
4810@end smallexample
4811
4812It is also possible to directly initialize the data-pointer using:
4813
4814@deftypefun void set_gdbarch_data (struct gdbarch *@var{gdbarch}, struct gdbarch_data *handle, void *@var{pointer})
4815Update the data-pointer corresponding to @var{handle} with the value of
4816@var{pointer}. If the previous data-pointer value is non-NULL, then it
4817is freed using data-pointers @var{free} function.
4818@end deftypefun
4819
4820This function is used by modules that require a mechanism for explicitly
4821setting the per-architecture data-pointer during architecture creation:
4822
4823@smallexample
4824/* Called during architecture creation. */
4825extern void
4826set_gdbarch_nozel (struct gdbarch *gdbarch,
4827 int total)
4828@{
4829 struct nozel *data = XMALLOC (struct nozel);
4830 @dots{}
4831 set_gdbarch_data (gdbarch, nozel_handle, nozel);
4832@}
4833@end smallexample
4834
4835@smallexample
4836/* Default, called when nozel not set by set_gdbarch_nozel(). */
4837static void *
4838nozel_init (struct gdbarch *gdbarch)
4839@{
4840 struct nozel *default_nozel = XMALLOC (struc nozel);
4841 @dots{}
4842 return default_nozel;
4843@}
4844@end smallexample
4845
4846@smallexample
4847void
4848_initialize_nozel (void)
4849@{
4850 nozel_handle = register_gdbarch_data (nozel_init, NULL);
4851 @dots{}
4852@end smallexample
4853
4854@noindent
4855Note that an @code{init} function still needs to be registered. It is
4856used to initialize the data-pointer when the architecture creation phase
4857fail to set an initial value.
4858
4859
c906108c 4860@section Wrapping Output Lines
56caf160 4861@cindex line wrap in output
c906108c 4862
56caf160 4863@findex wrap_here
c906108c
SS
4864Output that goes through @code{printf_filtered} or @code{fputs_filtered}
4865or @code{fputs_demangled} needs only to have calls to @code{wrap_here}
4866added in places that would be good breaking points. The utility
4867routines will take care of actually wrapping if the line width is
4868exceeded.
4869
4870The argument to @code{wrap_here} is an indentation string which is
4871printed @emph{only} if the line breaks there. This argument is saved
4872away and used later. It must remain valid until the next call to
4873@code{wrap_here} or until a newline has been printed through the
4874@code{*_filtered} functions. Don't pass in a local variable and then
4875return!
4876
56caf160 4877It is usually best to call @code{wrap_here} after printing a comma or
c906108c
SS
4878space. If you call it before printing a space, make sure that your
4879indentation properly accounts for the leading space that will print if
4880the line wraps there.
4881
4882Any function or set of functions that produce filtered output must
4883finish by printing a newline, to flush the wrap buffer, before switching
56caf160 4884to unfiltered (@code{printf}) output. Symbol reading routines that
c906108c
SS
4885print warnings are a good example.
4886
25822942 4887@section @value{GDBN} Coding Standards
56caf160 4888@cindex coding standards
c906108c 4889
25822942 4890@value{GDBN} follows the GNU coding standards, as described in
c906108c 4891@file{etc/standards.texi}. This file is also available for anonymous
af6c57ea
AC
4892FTP from GNU archive sites. @value{GDBN} takes a strict interpretation
4893of the standard; in general, when the GNU standard recommends a practice
4894but does not require it, @value{GDBN} requires it.
c906108c 4895
56caf160
EZ
4896@value{GDBN} follows an additional set of coding standards specific to
4897@value{GDBN}, as described in the following sections.
c906108c 4898
af6c57ea 4899
b9aa90c9 4900@subsection ISO C
af6c57ea 4901
b9aa90c9
AC
4902@value{GDBN} assumes an ISO/IEC 9899:1990 (a.k.a.@: ISO C90) compliant
4903compiler.
af6c57ea 4904
b9aa90c9 4905@value{GDBN} does not assume an ISO C or POSIX compliant C library.
af6c57ea
AC
4906
4907
4908@subsection Memory Management
4909
4910@value{GDBN} does not use the functions @code{malloc}, @code{realloc},
4911@code{calloc}, @code{free} and @code{asprintf}.
4912
4913@value{GDBN} uses the functions @code{xmalloc}, @code{xrealloc} and
4914@code{xcalloc} when allocating memory. Unlike @code{malloc} et.al.@:
4915these functions do not return when the memory pool is empty. Instead,
4916they unwind the stack using cleanups. These functions return
4917@code{NULL} when requested to allocate a chunk of memory of size zero.
4918
4919@emph{Pragmatics: By using these functions, the need to check every
4920memory allocation is removed. These functions provide portable
4921behavior.}
4922
4923@value{GDBN} does not use the function @code{free}.
4924
4925@value{GDBN} uses the function @code{xfree} to return memory to the
4926memory pool. Consistent with ISO-C, this function ignores a request to
4927free a @code{NULL} pointer.
4928
4929@emph{Pragmatics: On some systems @code{free} fails when passed a
4930@code{NULL} pointer.}
4931
4932@value{GDBN} can use the non-portable function @code{alloca} for the
4933allocation of small temporary values (such as strings).
4934
4935@emph{Pragmatics: This function is very non-portable. Some systems
4936restrict the memory being allocated to no more than a few kilobytes.}
4937
4938@value{GDBN} uses the string function @code{xstrdup} and the print
4939function @code{xasprintf}.
4940
4941@emph{Pragmatics: @code{asprintf} and @code{strdup} can fail. Print
4942functions such as @code{sprintf} are very prone to buffer overflow
4943errors.}
4944
4945
4946@subsection Compiler Warnings
56caf160 4947@cindex compiler warnings
af6c57ea
AC
4948
4949With few exceptions, developers should include the configuration option
4950@samp{--enable-gdb-build-warnings=,-Werror} when building @value{GDBN}.
4951The exceptions are listed in the file @file{gdb/MAINTAINERS}.
4952
4953This option causes @value{GDBN} (when built using GCC) to be compiled
4954with a carefully selected list of compiler warning flags. Any warnings
4955from those flags being treated as errors.
4956
4957The current list of warning flags includes:
4958
4959@table @samp
4960@item -Wimplicit
4961Since @value{GDBN} coding standard requires all functions to be declared
4962using a prototype, the flag has the side effect of ensuring that
4963prototyped functions are always visible with out resorting to
4964@samp{-Wstrict-prototypes}.
4965
4966@item -Wreturn-type
4967Such code often appears to work except on instruction set architectures
4968that use register windows.
4969
4970@item -Wcomment
4971
4972@item -Wtrigraphs
4973
4974@item -Wformat
4975Since @value{GDBN} uses the @code{format printf} attribute on all
4976@code{printf} like functions this checks not just @code{printf} calls
4977but also calls to functions such as @code{fprintf_unfiltered}.
4978
4979@item -Wparentheses
4980This warning includes uses of the assignment operator within an
4981@code{if} statement.
4982
4983@item -Wpointer-arith
4984
4985@item -Wuninitialized
4986@end table
4987
4988@emph{Pragmatics: Due to the way that @value{GDBN} is implemented most
4989functions have unused parameters. Consequently the warning
4990@samp{-Wunused-parameter} is precluded from the list. The macro
4991@code{ATTRIBUTE_UNUSED} is not used as it leads to false negatives ---
4992it is not an error to have @code{ATTRIBUTE_UNUSED} on a parameter that
4993is being used. The options @samp{-Wall} and @samp{-Wunused} are also
4994precluded because they both include @samp{-Wunused-parameter}.}
4995
4996@emph{Pragmatics: @value{GDBN} has not simply accepted the warnings
4997enabled by @samp{-Wall -Werror -W...}. Instead it is selecting warnings
4998when and where their benefits can be demonstrated.}
c906108c
SS
4999
5000@subsection Formatting
5001
56caf160 5002@cindex source code formatting
c906108c
SS
5003The standard GNU recommendations for formatting must be followed
5004strictly.
5005
af6c57ea
AC
5006A function declaration should not have its name in column zero. A
5007function definition should have its name in column zero.
5008
474c8240 5009@smallexample
af6c57ea
AC
5010/* Declaration */
5011static void foo (void);
5012/* Definition */
5013void
5014foo (void)
5015@{
5016@}
474c8240 5017@end smallexample
af6c57ea
AC
5018
5019@emph{Pragmatics: This simplifies scripting. Function definitions can
5020be found using @samp{^function-name}.}
c906108c 5021
af6c57ea
AC
5022There must be a space between a function or macro name and the opening
5023parenthesis of its argument list (except for macro definitions, as
5024required by C). There must not be a space after an open paren/bracket
5025or before a close paren/bracket.
c906108c
SS
5026
5027While additional whitespace is generally helpful for reading, do not use
5028more than one blank line to separate blocks, and avoid adding whitespace
af6c57ea
AC
5029after the end of a program line (as of 1/99, some 600 lines had
5030whitespace after the semicolon). Excess whitespace causes difficulties
5031for @code{diff} and @code{patch} utilities.
5032
5033Pointers are declared using the traditional K&R C style:
5034
474c8240 5035@smallexample
af6c57ea 5036void *foo;
474c8240 5037@end smallexample
af6c57ea
AC
5038
5039@noindent
5040and not:
5041
474c8240 5042@smallexample
af6c57ea
AC
5043void * foo;
5044void* foo;
474c8240 5045@end smallexample
c906108c
SS
5046
5047@subsection Comments
5048
56caf160 5049@cindex comment formatting
c906108c
SS
5050The standard GNU requirements on comments must be followed strictly.
5051
af6c57ea
AC
5052Block comments must appear in the following form, with no @code{/*}- or
5053@code{*/}-only lines, and no leading @code{*}:
c906108c 5054
474c8240 5055@smallexample
c906108c
SS
5056/* Wait for control to return from inferior to debugger. If inferior
5057 gets a signal, we may decide to start it up again instead of
5058 returning. That is why there is a loop in this function. When
5059 this function actually returns it means the inferior should be left
25822942 5060 stopped and @value{GDBN} should read more commands. */
474c8240 5061@end smallexample
c906108c
SS
5062
5063(Note that this format is encouraged by Emacs; tabbing for a multi-line
56caf160 5064comment works correctly, and @kbd{M-q} fills the block consistently.)
c906108c
SS
5065
5066Put a blank line between the block comments preceding function or
5067variable definitions, and the definition itself.
5068
5069In general, put function-body comments on lines by themselves, rather
5070than trying to fit them into the 20 characters left at the end of a
5071line, since either the comment or the code will inevitably get longer
5072than will fit, and then somebody will have to move it anyhow.
5073
5074@subsection C Usage
5075
56caf160 5076@cindex C data types
c906108c
SS
5077Code must not depend on the sizes of C data types, the format of the
5078host's floating point numbers, the alignment of anything, or the order
5079of evaluation of expressions.
5080
56caf160 5081@cindex function usage
c906108c 5082Use functions freely. There are only a handful of compute-bound areas
56caf160
EZ
5083in @value{GDBN} that might be affected by the overhead of a function
5084call, mainly in symbol reading. Most of @value{GDBN}'s performance is
5085limited by the target interface (whether serial line or system call).
c906108c
SS
5086
5087However, use functions with moderation. A thousand one-line functions
5088are just as hard to understand as a single thousand-line function.
5089
af6c57ea 5090@emph{Macros are bad, M'kay.}
9e678452
CF
5091(But if you have to use a macro, make sure that the macro arguments are
5092protected with parentheses.)
af6c57ea
AC
5093
5094@cindex types
c906108c 5095
af6c57ea
AC
5096Declarations like @samp{struct foo *} should be used in preference to
5097declarations like @samp{typedef struct foo @{ @dots{} @} *foo_ptr}.
5098
5099
5100@subsection Function Prototypes
56caf160 5101@cindex function prototypes
af6c57ea
AC
5102
5103Prototypes must be used when both @emph{declaring} and @emph{defining}
5104a function. Prototypes for @value{GDBN} functions must include both the
5105argument type and name, with the name matching that used in the actual
5106function definition.
c906108c 5107
53a5351d
JM
5108All external functions should have a declaration in a header file that
5109callers include, except for @code{_initialize_*} functions, which must
5110be external so that @file{init.c} construction works, but shouldn't be
5111visible to random source files.
c906108c 5112
af6c57ea
AC
5113Where a source file needs a forward declaration of a static function,
5114that declaration must appear in a block near the top of the source file.
5115
5116
5117@subsection Internal Error Recovery
5118
5119During its execution, @value{GDBN} can encounter two types of errors.
5120User errors and internal errors. User errors include not only a user
5121entering an incorrect command but also problems arising from corrupt
5122object files and system errors when interacting with the target.
937f164b
FF
5123Internal errors include situations where @value{GDBN} has detected, at
5124run time, a corrupt or erroneous situation.
af6c57ea
AC
5125
5126When reporting an internal error, @value{GDBN} uses
5127@code{internal_error} and @code{gdb_assert}.
5128
5129@value{GDBN} must not call @code{abort} or @code{assert}.
5130
5131@emph{Pragmatics: There is no @code{internal_warning} function. Either
5132the code detected a user error, recovered from it and issued a
5133@code{warning} or the code failed to correctly recover from the user
5134error and issued an @code{internal_error}.}
5135
5136@subsection File Names
5137
5138Any file used when building the core of @value{GDBN} must be in lower
5139case. Any file used when building the core of @value{GDBN} must be 8.3
5140unique. These requirements apply to both source and generated files.
5141
5142@emph{Pragmatics: The core of @value{GDBN} must be buildable on many
5143platforms including DJGPP and MacOS/HFS. Every time an unfriendly file
5144is introduced to the build process both @file{Makefile.in} and
5145@file{configure.in} need to be modified accordingly. Compare the
5146convoluted conversion process needed to transform @file{COPYING} into
5147@file{copying.c} with the conversion needed to transform
5148@file{version.in} into @file{version.c}.}
5149
5150Any file non 8.3 compliant file (that is not used when building the core
5151of @value{GDBN}) must be added to @file{gdb/config/djgpp/fnchange.lst}.
5152
5153@emph{Pragmatics: This is clearly a compromise.}
5154
5155When @value{GDBN} has a local version of a system header file (ex
5156@file{string.h}) the file name based on the POSIX header prefixed with
5157@file{gdb_} (@file{gdb_string.h}).
5158
5159For other files @samp{-} is used as the separator.
5160
5161
5162@subsection Include Files
5163
e2b28d04 5164A @file{.c} file should include @file{defs.h} first.
af6c57ea 5165
e2b28d04
AC
5166A @file{.c} file should directly include the @code{.h} file of every
5167declaration and/or definition it directly refers to. It cannot rely on
5168indirect inclusion.
af6c57ea 5169
e2b28d04
AC
5170A @file{.h} file should directly include the @code{.h} file of every
5171declaration and/or definition it directly refers to. It cannot rely on
5172indirect inclusion. Exception: The file @file{defs.h} does not need to
5173be directly included.
af6c57ea 5174
e2b28d04 5175An external declaration should only appear in one include file.
af6c57ea 5176
e2b28d04
AC
5177An external declaration should never appear in a @code{.c} file.
5178Exception: a declaration for the @code{_initialize} function that
5179pacifies @option{-Wmissing-declaration}.
5180
5181A @code{typedef} definition should only appear in one include file.
5182
5183An opaque @code{struct} declaration can appear in multiple @file{.h}
5184files. Where possible, a @file{.h} file should use an opaque
5185@code{struct} declaration instead of an include.
5186
5187All @file{.h} files should be wrapped in:
af6c57ea 5188
474c8240 5189@smallexample
af6c57ea
AC
5190#ifndef INCLUDE_FILE_NAME_H
5191#define INCLUDE_FILE_NAME_H
5192header body
5193#endif
474c8240 5194@end smallexample
af6c57ea 5195
c906108c 5196
dab11f21 5197@subsection Clean Design and Portable Implementation
c906108c 5198
56caf160 5199@cindex design
c906108c 5200In addition to getting the syntax right, there's the little question of
25822942 5201semantics. Some things are done in certain ways in @value{GDBN} because long
c906108c
SS
5202experience has shown that the more obvious ways caused various kinds of
5203trouble.
5204
56caf160 5205@cindex assumptions about targets
c906108c
SS
5206You can't assume the byte order of anything that comes from a target
5207(including @var{value}s, object files, and instructions). Such things
56caf160
EZ
5208must be byte-swapped using @code{SWAP_TARGET_AND_HOST} in
5209@value{GDBN}, or one of the swap routines defined in @file{bfd.h},
5210such as @code{bfd_get_32}.
c906108c
SS
5211
5212You can't assume that you know what interface is being used to talk to
5213the target system. All references to the target must go through the
5214current @code{target_ops} vector.
5215
5216You can't assume that the host and target machines are the same machine
5217(except in the ``native'' support modules). In particular, you can't
5218assume that the target machine's header files will be available on the
5219host machine. Target code must bring along its own header files --
5220written from scratch or explicitly donated by their owner, to avoid
5221copyright problems.
5222
56caf160 5223@cindex portability
c906108c
SS
5224Insertion of new @code{#ifdef}'s will be frowned upon. It's much better
5225to write the code portably than to conditionalize it for various
5226systems.
5227
56caf160 5228@cindex system dependencies
c906108c
SS
5229New @code{#ifdef}'s which test for specific compilers or manufacturers
5230or operating systems are unacceptable. All @code{#ifdef}'s should test
5231for features. The information about which configurations contain which
5232features should be segregated into the configuration files. Experience
5233has proven far too often that a feature unique to one particular system
5234often creeps into other systems; and that a conditional based on some
5235predefined macro for your current system will become worthless over
5236time, as new versions of your system come out that behave differently
5237with regard to this feature.
5238
5239Adding code that handles specific architectures, operating systems,
af6c57ea 5240target interfaces, or hosts, is not acceptable in generic code.
c906108c 5241
dab11f21
EZ
5242@cindex portable file name handling
5243@cindex file names, portability
5244One particularly notorious area where system dependencies tend to
5245creep in is handling of file names. The mainline @value{GDBN} code
5246assumes Posix semantics of file names: absolute file names begin with
5247a forward slash @file{/}, slashes are used to separate leading
5248directories, case-sensitive file names. These assumptions are not
5249necessarily true on non-Posix systems such as MS-Windows. To avoid
5250system-dependent code where you need to take apart or construct a file
5251name, use the following portable macros:
5252
5253@table @code
5254@findex HAVE_DOS_BASED_FILE_SYSTEM
5255@item HAVE_DOS_BASED_FILE_SYSTEM
5256This preprocessing symbol is defined to a non-zero value on hosts
5257whose filesystems belong to the MS-DOS/MS-Windows family. Use this
5258symbol to write conditional code which should only be compiled for
5259such hosts.
5260
5261@findex IS_DIR_SEPARATOR
4be31470 5262@item IS_DIR_SEPARATOR (@var{c})
dab11f21
EZ
5263Evaluates to a non-zero value if @var{c} is a directory separator
5264character. On Unix and GNU/Linux systems, only a slash @file{/} is
5265such a character, but on Windows, both @file{/} and @file{\} will
5266pass.
5267
5268@findex IS_ABSOLUTE_PATH
5269@item IS_ABSOLUTE_PATH (@var{file})
5270Evaluates to a non-zero value if @var{file} is an absolute file name.
5271For Unix and GNU/Linux hosts, a name which begins with a slash
5272@file{/} is absolute. On DOS and Windows, @file{d:/foo} and
5273@file{x:\bar} are also absolute file names.
5274
5275@findex FILENAME_CMP
5276@item FILENAME_CMP (@var{f1}, @var{f2})
5277Calls a function which compares file names @var{f1} and @var{f2} as
5278appropriate for the underlying host filesystem. For Posix systems,
5279this simply calls @code{strcmp}; on case-insensitive filesystems it
5280will call @code{strcasecmp} instead.
5281
5282@findex DIRNAME_SEPARATOR
5283@item DIRNAME_SEPARATOR
5284Evaluates to a character which separates directories in
5285@code{PATH}-style lists, typically held in environment variables.
5286This character is @samp{:} on Unix, @samp{;} on DOS and Windows.
5287
5288@findex SLASH_STRING
5289@item SLASH_STRING
5290This evaluates to a constant string you should use to produce an
5291absolute filename from leading directories and the file's basename.
5292@code{SLASH_STRING} is @code{"/"} on most systems, but might be
5293@code{"\\"} for some Windows-based ports.
5294@end table
5295
5296In addition to using these macros, be sure to use portable library
5297functions whenever possible. For example, to extract a directory or a
5298basename part from a file name, use the @code{dirname} and
5299@code{basename} library functions (available in @code{libiberty} for
5300platforms which don't provide them), instead of searching for a slash
5301with @code{strrchr}.
5302
25822942
DB
5303Another way to generalize @value{GDBN} along a particular interface is with an
5304attribute struct. For example, @value{GDBN} has been generalized to handle
56caf160
EZ
5305multiple kinds of remote interfaces---not by @code{#ifdef}s everywhere, but
5306by defining the @code{target_ops} structure and having a current target (as
c906108c
SS
5307well as a stack of targets below it, for memory references). Whenever
5308something needs to be done that depends on which remote interface we are
56caf160
EZ
5309using, a flag in the current target_ops structure is tested (e.g.,
5310@code{target_has_stack}), or a function is called through a pointer in the
c906108c 5311current target_ops structure. In this way, when a new remote interface
56caf160 5312is added, only one module needs to be touched---the one that actually
c906108c
SS
5313implements the new remote interface. Other examples of
5314attribute-structs are BFD access to multiple kinds of object file
25822942 5315formats, or @value{GDBN}'s access to multiple source languages.
c906108c 5316
56caf160
EZ
5317Please avoid duplicating code. For example, in @value{GDBN} 3.x all
5318the code interfacing between @code{ptrace} and the rest of
5319@value{GDBN} was duplicated in @file{*-dep.c}, and so changing
5320something was very painful. In @value{GDBN} 4.x, these have all been
5321consolidated into @file{infptrace.c}. @file{infptrace.c} can deal
5322with variations between systems the same way any system-independent
5323file would (hooks, @code{#if defined}, etc.), and machines which are
5324radically different don't need to use @file{infptrace.c} at all.
c906108c 5325
af6c57ea
AC
5326All debugging code must be controllable using the @samp{set debug
5327@var{module}} command. Do not use @code{printf} to print trace
5328messages. Use @code{fprintf_unfiltered(gdb_stdlog, ...}. Do not use
5329@code{#ifdef DEBUG}.
5330
c906108c 5331
8487521e 5332@node Porting GDB
c906108c 5333
25822942 5334@chapter Porting @value{GDBN}
56caf160 5335@cindex porting to new machines
c906108c 5336
56caf160
EZ
5337Most of the work in making @value{GDBN} compile on a new machine is in
5338specifying the configuration of the machine. This is done in a
5339dizzying variety of header files and configuration scripts, which we
5340hope to make more sensible soon. Let's say your new host is called an
5341@var{xyz} (e.g., @samp{sun4}), and its full three-part configuration
5342name is @code{@var{arch}-@var{xvend}-@var{xos}} (e.g.,
5343@samp{sparc-sun-sunos4}). In particular:
c906108c 5344
56caf160
EZ
5345@itemize @bullet
5346@item
c906108c
SS
5347In the top level directory, edit @file{config.sub} and add @var{arch},
5348@var{xvend}, and @var{xos} to the lists of supported architectures,
5349vendors, and operating systems near the bottom of the file. Also, add
5350@var{xyz} as an alias that maps to
5351@code{@var{arch}-@var{xvend}-@var{xos}}. You can test your changes by
5352running
5353
474c8240 5354@smallexample
c906108c 5355./config.sub @var{xyz}
474c8240 5356@end smallexample
56caf160 5357
c906108c
SS
5358@noindent
5359and
56caf160 5360
474c8240 5361@smallexample
c906108c 5362./config.sub @code{@var{arch}-@var{xvend}-@var{xos}}
474c8240 5363@end smallexample
56caf160 5364
c906108c
SS
5365@noindent
5366which should both respond with @code{@var{arch}-@var{xvend}-@var{xos}}
5367and no error messages.
5368
56caf160 5369@noindent
c906108c
SS
5370You need to port BFD, if that hasn't been done already. Porting BFD is
5371beyond the scope of this manual.
5372
56caf160 5373@item
25822942 5374To configure @value{GDBN} itself, edit @file{gdb/configure.host} to recognize
c906108c
SS
5375your system and set @code{gdb_host} to @var{xyz}, and (unless your
5376desired target is already available) also edit @file{gdb/configure.tgt},
5377setting @code{gdb_target} to something appropriate (for instance,
5378@var{xyz}).
5379
7fd60527
AC
5380@emph{Maintainer's note: Work in progress. The file
5381@file{gdb/configure.host} originally needed to be modified when either a
5382new native target or a new host machine was being added to @value{GDBN}.
5383Recent changes have removed this requirement. The file now only needs
5384to be modified when adding a new native configuration. This will likely
5385changed again in the future.}
5386
56caf160 5387@item
25822942 5388Finally, you'll need to specify and define @value{GDBN}'s host-, native-, and
c906108c
SS
5389target-dependent @file{.h} and @file{.c} files used for your
5390configuration.
56caf160 5391@end itemize
c906108c 5392
8973da3a
AC
5393@node Releasing GDB
5394
5395@chapter Releasing @value{GDBN}
5396@cindex making a new release of gdb
5397
fb0ff88f
AC
5398@section Versions and Branches
5399
5400@subsection Version Identifiers
5401
5402@value{GDBN}'s version is determined by the file @file{gdb/version.in}.
5403
5404@value{GDBN}'s mainline uses ISO dates to differentiate between
5405versions. The CVS repository uses @var{YYYY}-@var{MM}-@var{DD}-cvs
5406while the corresponding snapshot uses @var{YYYYMMDD}.
5407
5408@value{GDBN}'s release branch uses a slightly more complicated scheme.
5409When the branch is first cut, the mainline version identifier is
5410prefixed with the @var{major}.@var{minor} from of the previous release
5411series but with .90 appended. As draft releases are drawn from the
5412branch, the minor minor number (.90) is incremented. Once the first
5413release (@var{M}.@var{N}) has been made, the version prefix is updated
5414to @var{M}.@var{N}.0.90 (dot zero, dot ninety). Follow on releases have
5415an incremented minor minor version number (.0).
5416
5417Using 5.1 (previous) and 5.2 (current), the example below illustrates a
5418typical sequence of version identifiers:
5419
5420@table @asis
5421@item 5.1.1
5422final release from previous branch
5423@item 2002-03-03-cvs
5424main-line the day the branch is cut
5425@item 5.1.90-2002-03-03-cvs
5426corresponding branch version
5427@item 5.1.91
5428first draft release candidate
5429@item 5.1.91-2002-03-17-cvs
5430updated branch version
5431@item 5.1.92
5432second draft release candidate
5433@item 5.1.92-2002-03-31-cvs
5434updated branch version
5435@item 5.1.93
5436final release candidate (see below)
5437@item 5.2
5438official release
5439@item 5.2.0.90-2002-04-07-cvs
5440updated CVS branch version
5441@item 5.2.1
5442second official release
5443@end table
5444
5445Notes:
5446
5447@itemize @bullet
5448@item
5449Minor minor minor draft release candidates such as 5.2.0.91 have been
5450omitted from the example. Such release candidates are, typically, never
5451made.
5452@item
5453For 5.1.93 the bziped tar ball @file{gdb-5.1.93.tar.bz2} is just the
5454official @file{gdb-5.2.tar} renamed and compressed.
5455@end itemize
5456
5457To avoid version conflicts, vendors are expected to modify the file
5458@file{gdb/version.in} to include a vendor unique alphabetic identifier
5459(an official @value{GDBN} release never uses alphabetic characters in
5460its version identifer).
5461
5462Since @value{GDBN} does not make minor minor minor releases (e.g.,
54635.1.0.1) the conflict between that and a minor minor draft release
5464identifier (e.g., 5.1.0.90) is avoided.
5465
5466
5467@subsection Branches
5468
5469@value{GDBN} draws a release series (5.2, 5.2.1, @dots{}) from a single
5470release branch (gdb_5_2-branch). Since minor minor minor releases
5471(5.1.0.1) are not made, the need to branch the release branch is avoided
5472(it also turns out that the effort required for such a a branch and
5473release is significantly greater than the effort needed to create a new
5474release from the head of the release branch).
5475
5476Releases 5.0 and 5.1 used branch and release tags of the form:
5477
474c8240 5478@smallexample
fb0ff88f
AC
5479gdb_N_M-YYYY-MM-DD-branchpoint
5480gdb_N_M-YYYY-MM-DD-branch
5481gdb_M_N-YYYY-MM-DD-release
474c8240 5482@end smallexample
fb0ff88f
AC
5483
5484Release 5.2 is trialing the branch and release tags:
5485
474c8240 5486@smallexample
fb0ff88f
AC
5487gdb_N_M-YYYY-MM-DD-branchpoint
5488gdb_N_M-branch
5489gdb_M_N-YYYY-MM-DD-release
474c8240 5490@end smallexample
fb0ff88f
AC
5491
5492@emph{Pragmatics: The branchpoint and release tags need to identify when
5493a branch and release are made. The branch tag, denoting the head of the
5494branch, does not have this criteria.}
5495
5496
9bb0a4d8
AC
5497@section Branch Commit Policy
5498
5499The branch commit policy is pretty slack. @value{GDBN} releases 5.0,
55005.1 and 5.2 all used the below:
5501
5502@itemize @bullet
5503@item
5504The @file{gdb/MAINTAINERS} file still holds.
5505@item
5506Don't fix something on the branch unless/until it is also fixed in the
5507trunk. If this isn't possible, mentioning it in the @file{gdb/PROBLEMS}
4be31470 5508file is better than committing a hack.
9bb0a4d8
AC
5509@item
5510When considering a patch for the branch, suggested criteria include:
5511Does it fix a build? Does it fix the sequence @kbd{break main; run}
5512when debugging a static binary?
5513@item
5514The further a change is from the core of @value{GDBN}, the less likely
5515the change will worry anyone (e.g., target specific code).
5516@item
5517Only post a proposal to change the core of @value{GDBN} after you've
5518sent individual bribes to all the people listed in the
5519@file{MAINTAINERS} file @t{;-)}
5520@end itemize
5521
5522@emph{Pragmatics: Provided updates are restricted to non-core
5523functionality there is little chance that a broken change will be fatal.
5524This means that changes such as adding a new architectures or (within
5525reason) support for a new host are considered acceptable.}
5526
5527
cbb09e6a 5528@section Obsoleting code
8973da3a 5529
8642bc8f 5530Before anything else, poke the other developers (and around the source
4be31470
EZ
5531code) to see if there is anything that can be removed from @value{GDBN}
5532(an old target, an unused file).
8973da3a 5533
8642bc8f 5534Obsolete code is identified by adding an @code{OBSOLETE} prefix to every
cbb09e6a
AC
5535line. Doing this means that it is easy to identify something that has
5536been obsoleted when greping through the sources.
8973da3a 5537
cbb09e6a
AC
5538The process is done in stages --- this is mainly to ensure that the
5539wider @value{GDBN} community has a reasonable opportunity to respond.
5540Remember, everything on the Internet takes a week.
8973da3a 5541
cbb09e6a 5542@enumerate
8973da3a 5543@item
cbb09e6a
AC
5544Post the proposal on @email{gdb@@sources.redhat.com, the GDB mailing
5545list} Creating a bug report to track the task's state, is also highly
5546recommended.
8973da3a 5547@item
cbb09e6a 5548Wait a week or so.
8973da3a 5549@item
cbb09e6a
AC
5550Post the proposal on @email{gdb-announce@@sources.redhat.com, the GDB
5551Announcement mailing list}.
8973da3a 5552@item
cbb09e6a 5553Wait a week or so.
8973da3a 5554@item
cbb09e6a
AC
5555Go through and edit all relevant files and lines so that they are
5556prefixed with the word @code{OBSOLETE}.
5557@item
5558Wait until the next GDB version, containing this obsolete code, has been
5559released.
5560@item
5561Remove the obsolete code.
5562@end enumerate
5563
5564@noindent
5565@emph{Maintainer note: While removing old code is regrettable it is
5566hopefully better for @value{GDBN}'s long term development. Firstly it
5567helps the developers by removing code that is either no longer relevant
5568or simply wrong. Secondly since it removes any history associated with
5569the file (effectively clearing the slate) the developer has a much freer
5570hand when it comes to fixing broken files.}
8973da3a 5571
8973da3a 5572
9ae8b82c
AC
5573
5574@section Before the Branch
8973da3a 5575
8642bc8f
AC
5576The most important objective at this stage is to find and fix simple
5577changes that become a pain to track once the branch is created. For
5578instance, configuration problems that stop @value{GDBN} from even
5579building. If you can't get the problem fixed, document it in the
5580@file{gdb/PROBLEMS} file.
8973da3a 5581
9ae8b82c 5582@subheading Prompt for @file{gdb/NEWS}
8973da3a 5583
9ae8b82c
AC
5584People always forget. Send a post reminding them but also if you know
5585something interesting happened add it yourself. The @code{schedule}
5586script will mention this in its e-mail.
8973da3a 5587
9ae8b82c 5588@subheading Review @file{gdb/README}
8973da3a 5589
9ae8b82c
AC
5590Grab one of the nightly snapshots and then walk through the
5591@file{gdb/README} looking for anything that can be improved. The
5592@code{schedule} script will mention this in its e-mail.
8642bc8f
AC
5593
5594@subheading Refresh any imported files.
8973da3a 5595
8642bc8f 5596A number of files are taken from external repositories. They include:
8973da3a 5597
8642bc8f
AC
5598@itemize @bullet
5599@item
5600@file{texinfo/texinfo.tex}
5601@item
9ae8b82c
AC
5602@file{config.guess} et.@: al.@: (see the top-level @file{MAINTAINERS}
5603file)
5604@item
5605@file{etc/standards.texi}, @file{etc/make-stds.texi}
8642bc8f
AC
5606@end itemize
5607
9ae8b82c 5608@subheading Check the ARI
8642bc8f 5609
9ae8b82c
AC
5610@uref{http://sources.redhat.com/gdb/ari,,A.R.I.} is an @code{awk} script
5611(Awk Regression Index ;-) that checks for a number of errors and coding
5612conventions. The checks include things like using @code{malloc} instead
5613of @code{xmalloc} and file naming problems. There shouldn't be any
5614regressions.
8642bc8f 5615
9ae8b82c 5616@subsection Review the bug data base
8642bc8f 5617
9ae8b82c 5618Close anything obviously fixed.
8642bc8f 5619
9ae8b82c 5620@subsection Check all cross targets build
8642bc8f 5621
9ae8b82c 5622The targets are listed in @file{gdb/MAINTAINERS}.
8642bc8f 5623
8642bc8f 5624
30107679 5625@section Cut the Branch
8642bc8f 5626
30107679 5627@subheading Create the branch
8642bc8f 5628
474c8240 5629@smallexample
30107679
AC
5630$ u=5.1
5631$ v=5.2
5632$ V=`echo $v | sed 's/\./_/g'`
5633$ D=`date -u +%Y-%m-%d`
5634$ echo $u $V $D
56355.1 5_2 2002-03-03
5636$ echo cvs -f -d :ext:sources.redhat.com:/cvs/src rtag \
5637-D $D-gmt gdb_$V-$D-branchpoint insight+dejagnu
5638cvs -f -d :ext:sources.redhat.com:/cvs/src rtag
5639-D 2002-03-03-gmt gdb_5_2-2002-03-03-branchpoint insight+dejagnu
5640$ ^echo ^^
5641...
5642$ echo cvs -f -d :ext:sources.redhat.com:/cvs/src rtag \
5643-b -r gdb_$V-$D-branchpoint gdb_$V-branch insight+dejagnu
5644cvs -f -d :ext:sources.redhat.com:/cvs/src rtag \
5645-b -r gdb_5_2-2002-03-03-branchpoint gdb_5_2-branch insight+dejagnu
5646$ ^echo ^^
5647...
8642bc8f 5648$
474c8240 5649@end smallexample
8642bc8f
AC
5650
5651@itemize @bullet
5652@item
30107679
AC
5653by using @kbd{-D YYYY-MM-DD-gmt} the branch is forced to an exact
5654date/time.
5655@item
5656the trunk is first taged so that the branch point can easily be found
5657@item
5658Insight (which includes GDB) and dejagnu are all tagged at the same time
8642bc8f 5659@item
30107679 5660@file{version.in} gets bumped to avoid version number conflicts
8642bc8f 5661@item
30107679
AC
5662the reading of @file{.cvsrc} is disabled using @file{-f}
5663@end itemize
5664
5665@subheading Update @file{version.in}
5666
5667@smallexample
5668$ u=5.1
5669$ v=5.2
5670$ V=`echo $v | sed 's/\./_/g'`
5671$ echo $u $v$V
56725.1 5_2
5673$ cd /tmp
5674$ echo cvs -f -d :ext:sources.redhat.com:/cvs/src co \
5675-r gdb_$V-branch src/gdb/version.in
5676cvs -f -d :ext:sources.redhat.com:/cvs/src co
5677 -r gdb_5_2-branch src/gdb/version.in
5678$ ^echo ^^
5679U src/gdb/version.in
5680$ cd src/gdb
5681$ echo $u.90-0000-00-00-cvs > version.in
5682$ cat version.in
56835.1.90-0000-00-00-cvs
5684$ cvs -f commit version.in
5685@end smallexample
5686
5687@itemize @bullet
5688@item
5689@file{0000-00-00} is used as a date to pump prime the version.in update
5690mechanism
5691@item
5692@file{.90} and the previous branch version are used as fairly arbitrary
5693initial branch version number
8642bc8f
AC
5694@end itemize
5695
8642bc8f
AC
5696
5697@subheading Update the web and news pages
5698
30107679
AC
5699Something?
5700
8642bc8f
AC
5701@subheading Tweak cron to track the new branch
5702
30107679
AC
5703The file @file{gdbadmin/cron/crontab} contains gdbadmin's cron table.
5704This file needs to be updated so that:
5705
5706@itemize @bullet
5707@item
5708a daily timestamp is added to the file @file{version.in}
5709@item
5710the new branch is included in the snapshot process
5711@end itemize
5712
5713@noindent
5714See the file @file{gdbadmin/cron/README} for how to install the updated
5715cron table.
5716
5717The file @file{gdbadmin/ss/README} should also be reviewed to reflect
5718any changes. That file is copied to both the branch/ and current/
5719snapshot directories.
5720
5721
5722@subheading Update the NEWS and README files
5723
5724The @file{NEWS} file needs to be updated so that on the branch it refers
5725to @emph{changes in the current release} while on the trunk it also
5726refers to @emph{changes since the current release}.
5727
5728The @file{README} file needs to be updated so that it refers to the
5729current release.
5730
5731@subheading Post the branch info
5732
5733Send an announcement to the mailing lists:
5734
5735@itemize @bullet
5736@item
5737@email{gdb-announce@@sources.redhat.com, GDB Announcement mailing list}
5738@item
5739@email{gdb@@sources.redhat.com, GDB Discsussion mailing list} and
5740@email{gdb-testers@@sources.redhat.com, GDB Discsussion mailing list}
16737d73 5741@end itemize
30107679
AC
5742
5743@emph{Pragmatics: The branch creation is sent to the announce list to
5744ensure that people people not subscribed to the higher volume discussion
5745list are alerted.}
5746
5747The announcement should include:
5748
5749@itemize @bullet
5750@item
5751the branch tag
5752@item
5753how to check out the branch using CVS
5754@item
5755the date/number of weeks until the release
5756@item
5757the branch commit policy
5758still holds.
16737d73 5759@end itemize
30107679 5760
8642bc8f
AC
5761@section Stabilize the branch
5762
5763Something goes here.
5764
5765@section Create a Release
5766
0816590b
AC
5767The process of creating and then making available a release is broken
5768down into a number of stages. The first part addresses the technical
5769process of creating a releasable tar ball. The later stages address the
5770process of releasing that tar ball.
8973da3a 5771
0816590b
AC
5772When making a release candidate just the first section is needed.
5773
5774@subsection Create a release candidate
5775
5776The objective at this stage is to create a set of tar balls that can be
5777made available as a formal release (or as a less formal release
5778candidate).
5779
5780@subsubheading Freeze the branch
5781
5782Send out an e-mail notifying everyone that the branch is frozen to
5783@email{gdb-patches@@sources.redhat.com}.
5784
5785@subsubheading Establish a few defaults.
8973da3a 5786
474c8240 5787@smallexample
0816590b
AC
5788$ b=gdb_5_2-branch
5789$ v=5.2
8642bc8f
AC
5790$ t=/sourceware/snapshot-tmp/gdbadmin-tmp
5791$ echo $t/$b/$v
0816590b 5792/sourceware/snapshot-tmp/gdbadmin-tmp/gdb_5_2-branch/5.2
8642bc8f
AC
5793$ mkdir -p $t/$b/$v
5794$ cd $t/$b/$v
5795$ pwd
0816590b 5796/sourceware/snapshot-tmp/gdbadmin-tmp/gdb_5_2-branch/5.2
8973da3a
AC
5797$ which autoconf
5798/home/gdbadmin/bin/autoconf
8642bc8f 5799$
474c8240 5800@end smallexample
8973da3a 5801
0816590b
AC
5802@noindent
5803Notes:
8973da3a 5804
0816590b
AC
5805@itemize @bullet
5806@item
5807Check the @code{autoconf} version carefully. You want to be using the
4a2b4636
JB
5808version taken from the @file{binutils} snapshot directory, which can be
5809found at @uref{ftp://sources.redhat.com/pub/binutils/}. It is very
0816590b
AC
5810unlikely that a system installed version of @code{autoconf} (e.g.,
5811@file{/usr/bin/autoconf}) is correct.
5812@end itemize
5813
5814@subsubheading Check out the relevant modules:
8973da3a 5815
474c8240 5816@smallexample
8642bc8f
AC
5817$ for m in gdb insight dejagnu
5818do
8973da3a
AC
5819( mkdir -p $m && cd $m && cvs -q -f -d /cvs/src co -P -r $b $m )
5820done
8642bc8f 5821$
474c8240 5822@end smallexample
8973da3a 5823
0816590b
AC
5824@noindent
5825Note:
8642bc8f 5826
0816590b
AC
5827@itemize @bullet
5828@item
5829The reading of @file{.cvsrc} is disabled (@file{-f}) so that there isn't
5830any confusion between what is written here and what your local
5831@code{cvs} really does.
5832@end itemize
5833
5834@subsubheading Update relevant files.
8973da3a 5835
0816590b
AC
5836@table @file
5837
5838@item gdb/NEWS
8642bc8f
AC
5839
5840Major releases get their comments added as part of the mainline. Minor
5841releases should probably mention any significant bugs that were fixed.
5842
0816590b 5843Don't forget to include the @file{ChangeLog} entry.
8973da3a 5844
474c8240 5845@smallexample
8642bc8f
AC
5846$ emacs gdb/src/gdb/NEWS
5847...
5848c-x 4 a
5849...
5850c-x c-s c-x c-c
5851$ cp gdb/src/gdb/NEWS insight/src/gdb/NEWS
5852$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
474c8240 5853@end smallexample
8973da3a 5854
0816590b
AC
5855@item gdb/README
5856
5857You'll need to update:
8973da3a 5858
0816590b
AC
5859@itemize @bullet
5860@item
5861the version
5862@item
5863the update date
5864@item
5865who did it
5866@end itemize
8973da3a 5867
474c8240 5868@smallexample
8642bc8f
AC
5869$ emacs gdb/src/gdb/README
5870...
8973da3a 5871c-x 4 a
8642bc8f 5872...
8973da3a 5873c-x c-s c-x c-c
8642bc8f
AC
5874$ cp gdb/src/gdb/README insight/src/gdb/README
5875$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
474c8240 5876@end smallexample
8973da3a 5877
0816590b
AC
5878@emph{Maintainer note: Hopefully the @file{README} file was reviewed
5879before the initial branch was cut so just a simple substitute is needed
5880to get it updated.}
8973da3a 5881
8642bc8f
AC
5882@emph{Maintainer note: Other projects generate @file{README} and
5883@file{INSTALL} from the core documentation. This might be worth
5884pursuing.}
8973da3a 5885
0816590b 5886@item gdb/version.in
8973da3a 5887
474c8240 5888@smallexample
8642bc8f 5889$ echo $v > gdb/src/gdb/version.in
0816590b
AC
5890$ cat gdb/src/gdb/version.in
58915.2
8642bc8f 5892$ emacs gdb/src/gdb/version.in
8973da3a
AC
5893...
5894c-x 4 a
0816590b 5895... Bump to version ...
8973da3a 5896c-x c-s c-x c-c
8642bc8f
AC
5897$ cp gdb/src/gdb/version.in insight/src/gdb/version.in
5898$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
474c8240 5899@end smallexample
8973da3a 5900
0816590b 5901@item dejagnu/src/dejagnu/configure.in
8642bc8f
AC
5902
5903Dejagnu is more complicated. The version number is a parameter to
0816590b 5904@code{AM_INIT_AUTOMAKE}. Tweak it to read something like gdb-5.1.91.
8642bc8f 5905
0816590b 5906Don't forget to re-generate @file{configure}.
8642bc8f 5907
0816590b 5908Don't forget to include a @file{ChangeLog} entry.
8642bc8f 5909
0816590b
AC
5910@smallexample
5911$ emacs dejagnu/src/dejagnu/configure.in
5912...
5913c-x 4 a
5914...
5915c-x c-s c-x c-c
5916$ ( cd dejagnu/src/dejagnu && autoconf )
5917@end smallexample
8642bc8f 5918
0816590b
AC
5919@end table
5920
5921@subsubheading Do the dirty work
5922
5923This is identical to the process used to create the daily snapshot.
8973da3a 5924
4ce8657e
MC
5925@smallexample
5926$ for m in gdb insight
5927do
5928( cd $m/src && gmake -f src-release $m.tar )
5929done
5930$ ( m=dejagnu; cd $m/src && gmake -f src-release $m.tar.bz2 )
5931@end smallexample
5932
5933If the top level source directory does not have @file{src-release}
5934(@value{GDBN} version 5.3.1 or earlier), try these commands instead:
5935
474c8240 5936@smallexample
0816590b 5937$ for m in gdb insight
8642bc8f 5938do
0816590b 5939( cd $m/src && gmake -f Makefile.in $m.tar )
8973da3a 5940done
0816590b 5941$ ( m=dejagnu; cd $m/src && gmake -f Makefile.in $m.tar.bz2 )
474c8240 5942@end smallexample
8973da3a 5943
0816590b 5944@subsubheading Check the source files
8642bc8f 5945
0816590b 5946You're looking for files that have mysteriously disappeared.
8642bc8f
AC
5947@kbd{distclean} has the habit of deleting files it shouldn't. Watch out
5948for the @file{version.in} update @kbd{cronjob}.
8973da3a 5949
474c8240 5950@smallexample
8642bc8f
AC
5951$ ( cd gdb/src && cvs -f -q -n update )
5952M djunpack.bat
0816590b 5953? gdb-5.1.91.tar
8642bc8f 5954? proto-toplev
0816590b 5955@dots{} lots of generated files @dots{}
8642bc8f
AC
5956M gdb/ChangeLog
5957M gdb/NEWS
5958M gdb/README
5959M gdb/version.in
0816590b 5960@dots{} lots of generated files @dots{}
8642bc8f 5961$
474c8240 5962@end smallexample
8973da3a 5963
0816590b 5964@noindent
8642bc8f
AC
5965@emph{Don't worry about the @file{gdb.info-??} or
5966@file{gdb/p-exp.tab.c}. They were generated (and yes @file{gdb.info-1}
5967was also generated only something strange with CVS means that they
5968didn't get supressed). Fixing it would be nice though.}
8973da3a 5969
0816590b 5970@subsubheading Create compressed versions of the release
8973da3a 5971
474c8240 5972@smallexample
0816590b
AC
5973$ cp */src/*.tar .
5974$ cp */src/*.bz2 .
5975$ ls -F
5976dejagnu/ dejagnu-gdb-5.2.tar.bz2 gdb/ gdb-5.2.tar insight/ insight-5.2.tar
5977$ for m in gdb insight
5978do
5979bzip2 -v -9 -c $m-$v.tar > $m-$v.tar.bz2
5980gzip -v -9 -c $m-$v.tar > $m-$v.tar.gz
5981done
5982$
474c8240 5983@end smallexample
8973da3a 5984
0816590b
AC
5985@noindent
5986Note:
5987
5988@itemize @bullet
5989@item
5990A pipe such as @kbd{bunzip2 < xxx.bz2 | gzip -9 > xxx.gz} is not since,
5991in that mode, @code{gzip} does not know the name of the file and, hence,
5992can not include it in the compressed file. This is also why the release
5993process runs @code{tar} and @code{bzip2} as separate passes.
5994@end itemize
5995
5996@subsection Sanity check the tar ball
8973da3a 5997
0816590b 5998Pick a popular machine (Solaris/PPC?) and try the build on that.
8973da3a 5999
0816590b
AC
6000@smallexample
6001$ bunzip2 < gdb-5.2.tar.bz2 | tar xpf -
6002$ cd gdb-5.2
6003$ ./configure
6004$ make
6005@dots{}
6006$ ./gdb/gdb ./gdb/gdb
6007GNU gdb 5.2
6008@dots{}
6009(gdb) b main
6010Breakpoint 1 at 0x80732bc: file main.c, line 734.
6011(gdb) run
6012Starting program: /tmp/gdb-5.2/gdb/gdb
6013
6014Breakpoint 1, main (argc=1, argv=0xbffff8b4) at main.c:734
6015734 catch_errors (captured_main, &args, "", RETURN_MASK_ALL);
6016(gdb) print args
6017$1 = @{argc = 136426532, argv = 0x821b7f0@}
6018(gdb)
6019@end smallexample
8973da3a 6020
0816590b 6021@subsection Make a release candidate available
8973da3a 6022
0816590b 6023If this is a release candidate then the only remaining steps are:
8642bc8f 6024
0816590b
AC
6025@enumerate
6026@item
6027Commit @file{version.in} and @file{ChangeLog}
6028@item
6029Tweak @file{version.in} (and @file{ChangeLog} to read
6030@var{L}.@var{M}.@var{N}-0000-00-00-cvs so that the version update
6031process can restart.
6032@item
6033Make the release candidate available in
6034@uref{ftp://sources.redhat.com/pub/gdb/snapshots/branch}
6035@item
6036Notify the relevant mailing lists ( @email{gdb@@sources.redhat.com} and
6037@email{gdb-testers@@sources.redhat.com} that the candidate is available.
6038@end enumerate
8642bc8f 6039
0816590b 6040@subsection Make a formal release available
8642bc8f 6041
0816590b 6042(And you thought all that was required was to post an e-mail.)
8642bc8f 6043
0816590b 6044@subsubheading Install on sware
8642bc8f 6045
0816590b 6046Copy the new files to both the release and the old release directory:
8642bc8f 6047
474c8240 6048@smallexample
0816590b 6049$ cp *.bz2 *.gz ~ftp/pub/gdb/old-releases/
8642bc8f 6050$ cp *.bz2 *.gz ~ftp/pub/gdb/releases
474c8240 6051@end smallexample
8642bc8f 6052
0816590b
AC
6053@noindent
6054Clean up the releases directory so that only the most recent releases
6055are available (e.g. keep 5.2 and 5.2.1 but remove 5.1):
6056
6057@smallexample
6058$ cd ~ftp/pub/gdb/releases
6059$ rm @dots{}
6060@end smallexample
6061
6062@noindent
6063Update the file @file{README} and @file{.message} in the releases
6064directory:
6065
6066@smallexample
6067$ vi README
6068@dots{}
6069$ rm -f .message
6070$ ln README .message
6071@end smallexample
8642bc8f 6072
0816590b 6073@subsubheading Update the web pages.
8973da3a 6074
0816590b
AC
6075@table @file
6076
6077@item htdocs/download/ANNOUNCEMENT
6078This file, which is posted as the official announcement, includes:
8973da3a
AC
6079@itemize @bullet
6080@item
0816590b 6081General announcement
8642bc8f 6082@item
0816590b
AC
6083News. If making an @var{M}.@var{N}.1 release, retain the news from
6084earlier @var{M}.@var{N} release.
8973da3a 6085@item
0816590b
AC
6086Errata
6087@end itemize
6088
6089@item htdocs/index.html
6090@itemx htdocs/news/index.html
6091@itemx htdocs/download/index.html
6092These files include:
6093@itemize @bullet
8642bc8f 6094@item
0816590b 6095announcement of the most recent release
8642bc8f 6096@item
0816590b 6097news entry (remember to update both the top level and the news directory).
8973da3a 6098@end itemize
0816590b 6099These pages also need to be regenerate using @code{index.sh}.
8973da3a 6100
0816590b 6101@item download/onlinedocs/
8642bc8f
AC
6102You need to find the magic command that is used to generate the online
6103docs from the @file{.tar.bz2}. The best way is to look in the output
0816590b 6104from one of the nightly @code{cron} jobs and then just edit accordingly.
8642bc8f
AC
6105Something like:
6106
474c8240 6107@smallexample
8642bc8f 6108$ ~/ss/update-web-docs \
0816590b 6109 ~ftp/pub/gdb/releases/gdb-5.2.tar.bz2 \
8642bc8f 6110 $PWD/www \
0816590b 6111 /www/sourceware/htdocs/gdb/download/onlinedocs \
8642bc8f 6112 gdb
474c8240 6113@end smallexample
8642bc8f 6114
0816590b
AC
6115@item download/ari/
6116Just like the online documentation. Something like:
8642bc8f 6117
0816590b
AC
6118@smallexample
6119$ /bin/sh ~/ss/update-web-ari \
6120 ~ftp/pub/gdb/releases/gdb-5.2.tar.bz2 \
6121 $PWD/www \
6122 /www/sourceware/htdocs/gdb/download/ari \
6123 gdb
6124@end smallexample
6125
6126@end table
6127
6128@subsubheading Shadow the pages onto gnu
6129
6130Something goes here.
6131
6132
6133@subsubheading Install the @value{GDBN} tar ball on GNU
6134
6135At the time of writing, the GNU machine was @kbd{gnudist.gnu.org} in
6136@file{~ftp/gnu/gdb}.
6137
6138@subsubheading Make the @file{ANNOUNCEMENT}
6139
6140Post the @file{ANNOUNCEMENT} file you created above to:
8642bc8f
AC
6141
6142@itemize @bullet
6143@item
6144@email{gdb-announce@@sources.redhat.com, GDB Announcement mailing list}
6145@item
0816590b
AC
6146@email{info-gnu@@gnu.org, General GNU Announcement list} (but delay it a
6147day or so to let things get out)
6148@item
6149@email{bug-gdb@@gnu.org, GDB Bug Report mailing list}
8642bc8f
AC
6150@end itemize
6151
0816590b 6152@subsection Cleanup
8642bc8f 6153
0816590b 6154The release is out but you're still not finished.
8642bc8f 6155
0816590b 6156@subsubheading Commit outstanding changes
8642bc8f 6157
0816590b 6158In particular you'll need to commit any changes to:
8642bc8f
AC
6159
6160@itemize @bullet
6161@item
6162@file{gdb/ChangeLog}
6163@item
6164@file{gdb/version.in}
6165@item
6166@file{gdb/NEWS}
6167@item
6168@file{gdb/README}
6169@end itemize
6170
0816590b 6171@subsubheading Tag the release
8642bc8f
AC
6172
6173Something like:
6174
474c8240 6175@smallexample
8642bc8f
AC
6176$ d=`date -u +%Y-%m-%d`
6177$ echo $d
61782002-01-24
6179$ ( cd insight/src/gdb && cvs -f -q update )
0816590b 6180$ ( cd insight/src && cvs -f -q tag gdb_5_2-$d-release )
474c8240 6181@end smallexample
8642bc8f 6182
0816590b
AC
6183Insight is used since that contains more of the release than
6184@value{GDBN} (@code{dejagnu} doesn't get tagged but I think we can live
6185with that).
6186
6187@subsubheading Mention the release on the trunk
8642bc8f 6188
0816590b
AC
6189Just put something in the @file{ChangeLog} so that the trunk also
6190indicates when the release was made.
6191
6192@subsubheading Restart @file{gdb/version.in}
8642bc8f
AC
6193
6194If @file{gdb/version.in} does not contain an ISO date such as
6195@kbd{2002-01-24} then the daily @code{cronjob} won't update it. Having
6196committed all the release changes it can be set to
0816590b 6197@file{5.2.0_0000-00-00-cvs} which will restart things (yes the @kbd{_}
8642bc8f
AC
6198is important - it affects the snapshot process).
6199
6200Don't forget the @file{ChangeLog}.
6201
0816590b 6202@subsubheading Merge into trunk
8973da3a 6203
8642bc8f
AC
6204The files committed to the branch may also need changes merged into the
6205trunk.
8973da3a 6206
0816590b
AC
6207@subsubheading Revise the release schedule
6208
6209Post a revised release schedule to @email{gdb@@sources.redhat.com, GDB
6210Discussion List} with an updated announcement. The schedule can be
6211generated by running:
6212
6213@smallexample
6214$ ~/ss/schedule `date +%s` schedule
6215@end smallexample
6216
6217@noindent
6218The first parameter is approximate date/time in seconds (from the epoch)
6219of the most recent release.
6220
6221Also update the schedule @code{cronjob}.
6222
8642bc8f 6223@section Post release
8973da3a 6224
8642bc8f 6225Remove any @code{OBSOLETE} code.
8973da3a 6226
085dd6e6
JM
6227@node Testsuite
6228
6229@chapter Testsuite
56caf160 6230@cindex test suite
085dd6e6 6231
56caf160
EZ
6232The testsuite is an important component of the @value{GDBN} package.
6233While it is always worthwhile to encourage user testing, in practice
6234this is rarely sufficient; users typically use only a small subset of
6235the available commands, and it has proven all too common for a change
6236to cause a significant regression that went unnoticed for some time.
085dd6e6 6237
56caf160
EZ
6238The @value{GDBN} testsuite uses the DejaGNU testing framework.
6239DejaGNU is built using @code{Tcl} and @code{expect}. The tests
6240themselves are calls to various @code{Tcl} procs; the framework runs all the
6241procs and summarizes the passes and fails.
085dd6e6
JM
6242
6243@section Using the Testsuite
6244
56caf160 6245@cindex running the test suite
25822942 6246To run the testsuite, simply go to the @value{GDBN} object directory (or to the
085dd6e6
JM
6247testsuite's objdir) and type @code{make check}. This just sets up some
6248environment variables and invokes DejaGNU's @code{runtest} script. While
6249the testsuite is running, you'll get mentions of which test file is in use,
6250and a mention of any unexpected passes or fails. When the testsuite is
6251finished, you'll get a summary that looks like this:
56caf160 6252
474c8240 6253@smallexample
085dd6e6
JM
6254 === gdb Summary ===
6255
6256# of expected passes 6016
6257# of unexpected failures 58
6258# of unexpected successes 5
6259# of expected failures 183
6260# of unresolved testcases 3
6261# of untested testcases 5
474c8240 6262@end smallexample
56caf160 6263
085dd6e6
JM
6264The ideal test run consists of expected passes only; however, reality
6265conspires to keep us from this ideal. Unexpected failures indicate
56caf160
EZ
6266real problems, whether in @value{GDBN} or in the testsuite. Expected
6267failures are still failures, but ones which have been decided are too
6268hard to deal with at the time; for instance, a test case might work
6269everywhere except on AIX, and there is no prospect of the AIX case
6270being fixed in the near future. Expected failures should not be added
6271lightly, since you may be masking serious bugs in @value{GDBN}.
6272Unexpected successes are expected fails that are passing for some
6273reason, while unresolved and untested cases often indicate some minor
6274catastrophe, such as the compiler being unable to deal with a test
6275program.
6276
6277When making any significant change to @value{GDBN}, you should run the
6278testsuite before and after the change, to confirm that there are no
6279regressions. Note that truly complete testing would require that you
6280run the testsuite with all supported configurations and a variety of
6281compilers; however this is more than really necessary. In many cases
6282testing with a single configuration is sufficient. Other useful
6283options are to test one big-endian (Sparc) and one little-endian (x86)
6284host, a cross config with a builtin simulator (powerpc-eabi,
6285mips-elf), or a 64-bit host (Alpha).
6286
6287If you add new functionality to @value{GDBN}, please consider adding
6288tests for it as well; this way future @value{GDBN} hackers can detect
6289and fix their changes that break the functionality you added.
6290Similarly, if you fix a bug that was not previously reported as a test
6291failure, please add a test case for it. Some cases are extremely
6292difficult to test, such as code that handles host OS failures or bugs
6293in particular versions of compilers, and it's OK not to try to write
6294tests for all of those.
085dd6e6
JM
6295
6296@section Testsuite Organization
6297
56caf160 6298@cindex test suite organization
085dd6e6
JM
6299The testsuite is entirely contained in @file{gdb/testsuite}. While the
6300testsuite includes some makefiles and configury, these are very minimal,
6301and used for little besides cleaning up, since the tests themselves
25822942 6302handle the compilation of the programs that @value{GDBN} will run. The file
085dd6e6 6303@file{testsuite/lib/gdb.exp} contains common utility procs useful for
25822942 6304all @value{GDBN} tests, while the directory @file{testsuite/config} contains
085dd6e6
JM
6305configuration-specific files, typically used for special-purpose
6306definitions of procs like @code{gdb_load} and @code{gdb_start}.
6307
6308The tests themselves are to be found in @file{testsuite/gdb.*} and
6309subdirectories of those. The names of the test files must always end
6310with @file{.exp}. DejaGNU collects the test files by wildcarding
6311in the test directories, so both subdirectories and individual files
6312get chosen and run in alphabetical order.
6313
6314The following table lists the main types of subdirectories and what they
6315are for. Since DejaGNU finds test files no matter where they are
6316located, and since each test file sets up its own compilation and
6317execution environment, this organization is simply for convenience and
6318intelligibility.
6319
56caf160 6320@table @file
085dd6e6 6321@item gdb.base
085dd6e6 6322This is the base testsuite. The tests in it should apply to all
25822942 6323configurations of @value{GDBN} (but generic native-only tests may live here).
085dd6e6 6324The test programs should be in the subset of C that is valid K&R,
56caf160 6325ANSI/ISO, and C++ (@code{#ifdef}s are allowed if necessary, for instance
085dd6e6
JM
6326for prototypes).
6327
6328@item gdb.@var{lang}
56caf160 6329Language-specific tests for any language @var{lang} besides C. Examples are
085dd6e6
JM
6330@file{gdb.c++} and @file{gdb.java}.
6331
6332@item gdb.@var{platform}
085dd6e6
JM
6333Non-portable tests. The tests are specific to a specific configuration
6334(host or target), such as HP-UX or eCos. Example is @file{gdb.hp}, for
6335HP-UX.
6336
6337@item gdb.@var{compiler}
085dd6e6
JM
6338Tests specific to a particular compiler. As of this writing (June
63391999), there aren't currently any groups of tests in this category that
6340couldn't just as sensibly be made platform-specific, but one could
56caf160
EZ
6341imagine a @file{gdb.gcc}, for tests of @value{GDBN}'s handling of GCC
6342extensions.
085dd6e6
JM
6343
6344@item gdb.@var{subsystem}
25822942 6345Tests that exercise a specific @value{GDBN} subsystem in more depth. For
085dd6e6
JM
6346instance, @file{gdb.disasm} exercises various disassemblers, while
6347@file{gdb.stabs} tests pathways through the stabs symbol reader.
085dd6e6
JM
6348@end table
6349
6350@section Writing Tests
56caf160 6351@cindex writing tests
085dd6e6 6352
25822942 6353In many areas, the @value{GDBN} tests are already quite comprehensive; you
085dd6e6
JM
6354should be able to copy existing tests to handle new cases.
6355
6356You should try to use @code{gdb_test} whenever possible, since it
6357includes cases to handle all the unexpected errors that might happen.
6358However, it doesn't cost anything to add new test procedures; for
6359instance, @file{gdb.base/exprs.exp} defines a @code{test_expr} that
6360calls @code{gdb_test} multiple times.
6361
6362Only use @code{send_gdb} and @code{gdb_expect} when absolutely
25822942 6363necessary, such as when @value{GDBN} has several valid responses to a command.
085dd6e6
JM
6364
6365The source language programs do @emph{not} need to be in a consistent
25822942 6366style. Since @value{GDBN} is used to debug programs written in many different
085dd6e6 6367styles, it's worth having a mix of styles in the testsuite; for
25822942 6368instance, some @value{GDBN} bugs involving the display of source lines would
085dd6e6
JM
6369never manifest themselves if the programs used GNU coding style
6370uniformly.
6371
c906108c
SS
6372@node Hints
6373
6374@chapter Hints
6375
6376Check the @file{README} file, it often has useful information that does not
6377appear anywhere else in the directory.
6378
6379@menu
25822942 6380* Getting Started:: Getting started working on @value{GDBN}
33e16fad 6381* Debugging GDB:: Debugging @value{GDBN} with itself
c906108c
SS
6382@end menu
6383
6384@node Getting Started,,, Hints
6385
6386@section Getting Started
6387
25822942 6388@value{GDBN} is a large and complicated program, and if you first starting to
c906108c
SS
6389work on it, it can be hard to know where to start. Fortunately, if you
6390know how to go about it, there are ways to figure out what is going on.
6391
25822942
DB
6392This manual, the @value{GDBN} Internals manual, has information which applies
6393generally to many parts of @value{GDBN}.
c906108c
SS
6394
6395Information about particular functions or data structures are located in
6396comments with those functions or data structures. If you run across a
6397function or a global variable which does not have a comment correctly
25822942 6398explaining what is does, this can be thought of as a bug in @value{GDBN}; feel
c906108c
SS
6399free to submit a bug report, with a suggested comment if you can figure
6400out what the comment should say. If you find a comment which is
6401actually wrong, be especially sure to report that.
6402
6403Comments explaining the function of macros defined in host, target, or
6404native dependent files can be in several places. Sometimes they are
6405repeated every place the macro is defined. Sometimes they are where the
6406macro is used. Sometimes there is a header file which supplies a
6407default definition of the macro, and the comment is there. This manual
6408also documents all the available macros.
6409@c (@pxref{Host Conditionals}, @pxref{Target
6410@c Conditionals}, @pxref{Native Conditionals}, and @pxref{Obsolete
6411@c Conditionals})
6412
56caf160
EZ
6413Start with the header files. Once you have some idea of how
6414@value{GDBN}'s internal symbol tables are stored (see @file{symtab.h},
6415@file{gdbtypes.h}), you will find it much easier to understand the
6416code which uses and creates those symbol tables.
c906108c
SS
6417
6418You may wish to process the information you are getting somehow, to
6419enhance your understanding of it. Summarize it, translate it to another
25822942 6420language, add some (perhaps trivial or non-useful) feature to @value{GDBN}, use
c906108c
SS
6421the code to predict what a test case would do and write the test case
6422and verify your prediction, etc. If you are reading code and your eyes
6423are starting to glaze over, this is a sign you need to use a more active
6424approach.
6425
25822942 6426Once you have a part of @value{GDBN} to start with, you can find more
c906108c
SS
6427specifically the part you are looking for by stepping through each
6428function with the @code{next} command. Do not use @code{step} or you
6429will quickly get distracted; when the function you are stepping through
6430calls another function try only to get a big-picture understanding
6431(perhaps using the comment at the beginning of the function being
6432called) of what it does. This way you can identify which of the
6433functions being called by the function you are stepping through is the
6434one which you are interested in. You may need to examine the data
6435structures generated at each stage, with reference to the comments in
6436the header files explaining what the data structures are supposed to
6437look like.
6438
6439Of course, this same technique can be used if you are just reading the
6440code, rather than actually stepping through it. The same general
6441principle applies---when the code you are looking at calls something
6442else, just try to understand generally what the code being called does,
6443rather than worrying about all its details.
6444
56caf160
EZ
6445@cindex command implementation
6446A good place to start when tracking down some particular area is with
6447a command which invokes that feature. Suppose you want to know how
6448single-stepping works. As a @value{GDBN} user, you know that the
6449@code{step} command invokes single-stepping. The command is invoked
6450via command tables (see @file{command.h}); by convention the function
6451which actually performs the command is formed by taking the name of
6452the command and adding @samp{_command}, or in the case of an
6453@code{info} subcommand, @samp{_info}. For example, the @code{step}
6454command invokes the @code{step_command} function and the @code{info
6455display} command invokes @code{display_info}. When this convention is
6456not followed, you might have to use @code{grep} or @kbd{M-x
6457tags-search} in emacs, or run @value{GDBN} on itself and set a
6458breakpoint in @code{execute_command}.
6459
6460@cindex @code{bug-gdb} mailing list
c906108c
SS
6461If all of the above fail, it may be appropriate to ask for information
6462on @code{bug-gdb}. But @emph{never} post a generic question like ``I was
6463wondering if anyone could give me some tips about understanding
25822942 6464@value{GDBN}''---if we had some magic secret we would put it in this manual.
c906108c
SS
6465Suggestions for improving the manual are always welcome, of course.
6466
33e16fad 6467@node Debugging GDB,,,Hints
c906108c 6468
25822942 6469@section Debugging @value{GDBN} with itself
56caf160 6470@cindex debugging @value{GDBN}
c906108c 6471
25822942 6472If @value{GDBN} is limping on your machine, this is the preferred way to get it
c906108c
SS
6473fully functional. Be warned that in some ancient Unix systems, like
6474Ultrix 4.2, a program can't be running in one process while it is being
56caf160 6475debugged in another. Rather than typing the command @kbd{@w{./gdb
c906108c 6476./gdb}}, which works on Suns and such, you can copy @file{gdb} to
56caf160 6477@file{gdb2} and then type @kbd{@w{./gdb ./gdb2}}.
c906108c 6478
25822942 6479When you run @value{GDBN} in the @value{GDBN} source directory, it will read a
c906108c
SS
6480@file{.gdbinit} file that sets up some simple things to make debugging
6481gdb easier. The @code{info} command, when executed without a subcommand
25822942 6482in a @value{GDBN} being debugged by gdb, will pop you back up to the top level
c906108c
SS
6483gdb. See @file{.gdbinit} for details.
6484
6485If you use emacs, you will probably want to do a @code{make TAGS} after
6486you configure your distribution; this will put the machine dependent
6487routines for your local machine where they will be accessed first by
6488@kbd{M-.}
6489
25822942 6490Also, make sure that you've either compiled @value{GDBN} with your local cc, or
c906108c
SS
6491have run @code{fixincludes} if you are compiling with gcc.
6492
6493@section Submitting Patches
6494
56caf160 6495@cindex submitting patches
c906108c 6496Thanks for thinking of offering your changes back to the community of
25822942 6497@value{GDBN} users. In general we like to get well designed enhancements.
c906108c
SS
6498Thanks also for checking in advance about the best way to transfer the
6499changes.
6500
25822942
DB
6501The @value{GDBN} maintainers will only install ``cleanly designed'' patches.
6502This manual summarizes what we believe to be clean design for @value{GDBN}.
c906108c
SS
6503
6504If the maintainers don't have time to put the patch in when it arrives,
6505or if there is any question about a patch, it goes into a large queue
6506with everyone else's patches and bug reports.
6507
56caf160 6508@cindex legal papers for code contributions
c906108c
SS
6509The legal issue is that to incorporate substantial changes requires a
6510copyright assignment from you and/or your employer, granting ownership
6511of the changes to the Free Software Foundation. You can get the
9e0b60a8
JM
6512standard documents for doing this by sending mail to @code{gnu@@gnu.org}
6513and asking for it. We recommend that people write in "All programs
6514owned by the Free Software Foundation" as "NAME OF PROGRAM", so that
56caf160
EZ
6515changes in many programs (not just @value{GDBN}, but GAS, Emacs, GCC,
6516etc) can be
9e0b60a8 6517contributed with only one piece of legalese pushed through the
be9c6c35 6518bureaucracy and filed with the FSF. We can't start merging changes until
9e0b60a8
JM
6519this paperwork is received by the FSF (their rules, which we follow
6520since we maintain it for them).
c906108c
SS
6521
6522Technically, the easiest way to receive changes is to receive each
56caf160
EZ
6523feature as a small context diff or unidiff, suitable for @code{patch}.
6524Each message sent to me should include the changes to C code and
6525header files for a single feature, plus @file{ChangeLog} entries for
6526each directory where files were modified, and diffs for any changes
6527needed to the manuals (@file{gdb/doc/gdb.texinfo} or
6528@file{gdb/doc/gdbint.texinfo}). If there are a lot of changes for a
6529single feature, they can be split down into multiple messages.
9e0b60a8
JM
6530
6531In this way, if we read and like the feature, we can add it to the
c906108c 6532sources with a single patch command, do some testing, and check it in.
56caf160
EZ
6533If you leave out the @file{ChangeLog}, we have to write one. If you leave
6534out the doc, we have to puzzle out what needs documenting. Etc., etc.
c906108c 6535
9e0b60a8
JM
6536The reason to send each change in a separate message is that we will not
6537install some of the changes. They'll be returned to you with questions
6538or comments. If we're doing our job correctly, the message back to you
c906108c 6539will say what you have to fix in order to make the change acceptable.
9e0b60a8
JM
6540The reason to have separate messages for separate features is so that
6541the acceptable changes can be installed while one or more changes are
6542being reworked. If multiple features are sent in a single message, we
6543tend to not put in the effort to sort out the acceptable changes from
6544the unacceptable, so none of the features get installed until all are
6545acceptable.
6546
6547If this sounds painful or authoritarian, well, it is. But we get a lot
6548of bug reports and a lot of patches, and many of them don't get
6549installed because we don't have the time to finish the job that the bug
c906108c
SS
6550reporter or the contributor could have done. Patches that arrive
6551complete, working, and well designed, tend to get installed on the day
9e0b60a8
JM
6552they arrive. The others go into a queue and get installed as time
6553permits, which, since the maintainers have many demands to meet, may not
6554be for quite some time.
c906108c 6555
56caf160 6556Please send patches directly to
47b95330 6557@email{gdb-patches@@sources.redhat.com, the @value{GDBN} maintainers}.
c906108c
SS
6558
6559@section Obsolete Conditionals
56caf160 6560@cindex obsolete code
c906108c 6561
25822942 6562Fragments of old code in @value{GDBN} sometimes reference or set the following
c906108c
SS
6563configuration macros. They should not be used by new code, and old uses
6564should be removed as those parts of the debugger are otherwise touched.
6565
6566@table @code
c906108c
SS
6567@item STACK_END_ADDR
6568This macro used to define where the end of the stack appeared, for use
6569in interpreting core file formats that don't record this address in the
25822942
DB
6570core file itself. This information is now configured in BFD, and @value{GDBN}
6571gets the info portably from there. The values in @value{GDBN}'s configuration
c906108c 6572files should be moved into BFD configuration files (if needed there),
25822942 6573and deleted from all of @value{GDBN}'s config files.
c906108c
SS
6574
6575Any @file{@var{foo}-xdep.c} file that references STACK_END_ADDR
6576is so old that it has never been converted to use BFD. Now that's old!
6577
c906108c
SS
6578@end table
6579
aab4e0ec
AC
6580@include fdl.texi
6581
56caf160
EZ
6582@node Index
6583@unnumbered Index
6584
6585@printindex cp
6586
c906108c 6587@bye
This page took 0.599504 seconds and 4 git commands to generate.