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