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