@unnchapentry{Scope of this Document}{10001}{Top}{1} @numchapentry{Summary}{1}{Summary}{1} @numsecentry{Requirements}{1.1}{Requirements}{1} @numsecentry{Contributors}{1.2}{Contributors}{1} @numchapentry{Overall Structure}{2}{Overall Structure}{2} @numsecentry{The Symbol Side}{2.1}{}{2} @numsecentry{The Target Side}{2.2}{}{2} @numsecentry{Configurations}{2.3}{}{2} @numsecentry{Source Tree Structure}{2.4}{}{3} @numchapentry{Algorithms}{3}{Algorithms}{4} @numsecentry{Prologue Analysis}{3.1}{}{4} @numsecentry{Breakpoint Handling}{3.2}{}{6} @numsecentry{Single Stepping}{3.3}{}{7} @numsecentry{Signal Handling}{3.4}{}{7} @numsecentry{Thread Handling}{3.5}{}{7} @numsecentry{Inferior Function Calls}{3.6}{}{7} @numsecentry{Longjmp Support}{3.7}{}{7} @numsecentry{Watchpoints}{3.8}{}{8} @numsubsecentry{Watchpoints and Threads}{3.8.1}{}{10} @numsubsecentry{x86 Watchpoints}{3.8.2}{}{10} @numsecentry{Checkpoints}{3.9}{}{13} @numsecentry{Observing changes in @sc {gdb} internals}{3.10}{}{13} @numchapentry{User Interface}{4}{User Interface}{14} @numsecentry{Command Interpreter}{4.1}{}{14} @numsecentry{UI-Independent Output---the @code {ui_out} Functions}{4.2}{}{14} @numsubsecentry{Overview and Terminology}{4.2.1}{}{14} @numsubsecentry{General Conventions}{4.2.2}{}{15} @numsubsecentry{Table, Tuple and List Functions}{4.2.3}{}{15} @numsubsecentry{Item Output Functions}{4.2.4}{}{17} @numsubsecentry{Utility Output Functions}{4.2.5}{}{19} @numsubsecentry{Examples of Use of @code {ui_out} functions}{4.2.6}{}{20} @numsecentry{Console Printing}{4.3}{}{23} @numsecentry{TUI}{4.4}{}{23} @numchapentry{libgdb}{5}{libgdb}{23} @numsecentry{libgdb 1.0}{5.1}{}{23} @numsecentry{libgdb 2.0}{5.2}{}{23} @numsecentry{The @code {libgdb} Model}{5.3}{}{23} @numsecentry{CLI support}{5.4}{}{24} @numsecentry{@code {libgdb} components}{5.5}{}{24} @numchapentry{Values}{6}{Values}{25} @numsecentry{Values}{6.1}{}{25} @numchapentry{Stack Frames}{7}{Stack Frames}{26} @numsecentry{Selecting an Unwinder}{7.1}{}{26} @numsecentry{Unwinding the Frame ID}{7.2}{}{27} @numsecentry{Unwinding Registers}{7.3}{}{27} @numchapentry{Symbol Handling}{8}{Symbol Handling}{28} @numsecentry{Symbol Reading}{8.1}{}{28} @numsecentry{Partial Symbol Tables}{8.2}{}{29} @numsecentry{Types}{8.3}{}{31} @unnsubsecentry{Fundamental Types (e.g., @code {FT_VOID}, @code {FT_BOOLEAN}).}{10001.3.1}{}{31} @unnsubsecentry{Type Codes (e.g., @code {TYPE_CODE_PTR}, @code {TYPE_CODE_ARRAY}).}{10001.3.2}{}{31} @unnsubsecentry{Builtin Types (e.g., @code {builtin_type_void}, @code {builtin_type_char}).}{10001.3.3}{}{31} @numsecentry{Object File Formats}{8.4}{}{31} @numsubsecentry{a.out}{8.4.1}{}{31} @numsubsecentry{COFF}{8.4.2}{}{31} @numsubsecentry{ECOFF}{8.4.3}{}{32} @numsubsecentry{XCOFF}{8.4.4}{}{32} @numsubsecentry{PE}{8.4.5}{}{32} @numsubsecentry{ELF}{8.4.6}{}{32} @numsubsecentry{SOM}{8.4.7}{}{32} @numsecentry{Debugging File Formats}{8.5}{}{32} @numsubsecentry{stabs}{8.5.1}{}{32} @numsubsecentry{COFF}{8.5.2}{}{32} @numsubsecentry{Mips debug (Third Eye)}{8.5.3}{}{33} @numsubsecentry{DWARF 2}{8.5.4}{}{33} @numsubsecentry{Compressed DWARF 2}{8.5.5}{}{33} @numsubsecentry{DWARF 3}{8.5.6}{}{33} @numsubsecentry{SOM}{8.5.7}{}{33} @numsecentry{Adding a New Symbol Reader to @sc {gdb}}{8.6}{}{33} @numsecentry{Memory Management for Symbol Files}{8.7}{}{34} @numchapentry{Language Support}{9}{Language Support}{34} @numsecentry{Adding a Source Language to @sc {gdb}}{9.1}{}{34} @numchapentry{Host Definition}{10}{Host Definition}{35} @numsecentry{Adding a New Host}{10.1}{}{36} @numsecentry{Host Conditionals}{10.2}{}{36} @numchapentry{Target Architecture Definition}{11}{Target Architecture Definition}{38} @numsecentry{Operating System ABI Variant Handling}{11.1}{OS ABI Variant Handling}{38} @numsecentry{Initializing a New Architecture}{11.2}{Initialize New Architecture}{40} @numsubsecentry{How an Architecture is Represented}{11.2.1}{How an Architecture is Represented}{40} @numsubsecentry{Looking Up an Existing Architecture}{11.2.2}{Looking Up an Existing Architecture}{41} @numsubsecentry{Creating a New Architecture}{11.2.3}{Creating a New Architecture}{41} @numsecentry{Registers and Memory}{11.3}{Registers and Memory}{42} @numsecentry{Pointers Are Not Always Addresses}{11.4}{Pointers and Addresses}{42} @numsecentry{Address Classes}{11.5}{Address Classes}{44} @numsecentry{Register Representation}{11.6}{Register Representation}{45} @numsubsecentry{Raw and Cooked Registers}{11.6.1}{Raw and Cooked Registers}{45} @numsubsecentry{Functions and Variables Specifying the Register Architecture}{11.6.2}{Register Architecture Functions & Variables}{46} @numsubsecentry{Functions Giving Register Information}{11.6.3}{Register Information Functions}{47} @numsubsecentry{Using Different Register and Memory Data Representations}{11.6.4}{Register and Memory Data}{49} @numsubsecentry{Register Caching}{11.6.5}{Register Caching}{50} @numsecentry{Frame Interpretation}{11.7}{Frame Interpretation}{50} @numsubsecentry{All About Stack Frames}{11.7.1}{All About Stack Frames}{50} @numsubsecentry{Frame Handling Terminology}{11.7.2}{Frame Handling Terminology}{52} @numsubsecentry{Prologue Caches}{11.7.3}{Prologue Caches}{53} @numsubsecentry{Functions and Variable to Analyze Frames}{11.7.4}{Functions and Variable to Analyze Frames}{53} @numsubsecentry{Functions to Access Frame Data}{11.7.5}{Functions to Access Frame Data}{54} @numsubsecentry{Analyzing Stacks---Frame Sniffers}{11.7.6}{Analyzing Stacks---Frame Sniffers}{55} @numsecentry{Inferior Call Setup}{11.8}{Inferior Call Setup}{57} @numsubsecentry{About Dummy Frames}{11.8.1}{About Dummy Frames}{57} @numsubsecentry{Functions Creating Dummy Frames}{11.8.2}{Functions Creating Dummy Frames}{57} @numsecentry{Adding support for debugging core files}{11.9}{Adding support for debugging core files}{58} @numsecentry{Defining Other Architecture Features}{11.10}{Defining Other Architecture Features}{58} @numsecentry{Adding a New Target}{11.11}{Adding a New Target}{67} @numchapentry{Target Descriptions}{12}{Target Descriptions}{68} @numsecentry{Target Descriptions Implementation}{12.1}{Target Descriptions Implementation}{68} @numsecentry{Adding Target Described Register Support}{12.2}{Adding Target Described Register Support}{69} @numchapentry{Target Vector Definition}{13}{Target Vector Definition}{70} @numsecentry{Managing Execution State}{13.1}{Managing Execution State}{70} @numsecentry{Existing Targets}{13.2}{Existing Targets}{70} @numsubsecentry{File Targets}{13.2.1}{}{70} @numsubsecentry{Standard Protocol and Remote Stubs}{13.2.2}{}{70} @numsubsecentry{ROM Monitor Interface}{13.2.3}{}{71} @numsubsecentry{Custom Protocols}{13.2.4}{}{71} @numsubsecentry{Transport Layer}{13.2.5}{}{71} @numsubsecentry{Builtin Simulator}{13.2.6}{}{71} @numchapentry{Native Debugging}{14}{Native Debugging}{71} @numsecentry{ptrace}{14.1}{}{72} @numsecentry{/proc}{14.2}{}{72} @numsecentry{win32}{14.3}{}{72} @numsecentry{shared libraries}{14.4}{}{72} @numsecentry{Native Conditionals}{14.5}{}{72} @numchapentry{Support Libraries}{15}{Support Libraries}{73} @numsecentry{BFD}{15.1}{}{73} @numsecentry{opcodes}{15.2}{}{73} @numsecentry{readline}{15.3}{}{73} @numsecentry{libiberty}{15.4}{}{74} @numsubsecentry{@code {obstacks} in @sc {gdb}}{15.4.1}{}{74} @numsecentry{gnu-regex}{15.5}{}{74} @numsecentry{Array Containers}{15.6}{}{75} @numsecentry{include}{15.7}{}{77} @numchapentry{Coding}{16}{Coding}{77} @numsecentry{Cleanups}{16.1}{}{78} @numsecentry{Per-architecture module data}{16.2}{}{79} @numsecentry{Wrapping Output Lines}{16.3}{}{80} @numsecentry{@sc {gdb} Coding Standards}{16.4}{}{81} @numsubsecentry{ISO C}{16.4.1}{}{81} @numsubsecentry{Memory Management}{16.4.2}{}{81} @numsubsecentry{Compiler Warnings}{16.4.3}{}{81} @numsubsecentry{Formatting}{16.4.4}{}{82} @numsubsecentry{Comments}{16.4.5}{}{83} @numsubsecentry{C Usage}{16.4.6}{}{83} @numsubsecentry{Function Prototypes}{16.4.7}{}{83} @numsubsecentry{Internal Error Recovery}{16.4.8}{}{84} @numsubsecentry{Command Names}{16.4.9}{}{84} @numsubsecentry{File Names}{16.4.10}{}{84} @numsubsecentry{Include Files}{16.4.11}{}{84} @numsubsecentry{Clean Design and Portable Implementation}{16.4.12}{}{85} @numchapentry{Porting @sc {gdb}}{17}{Porting GDB}{87} @numchapentry{Versions and Branches}{18}{Versions and Branches}{87} @numsecentry{Versions}{18.1}{}{87} @numsecentry{Release Branches}{18.2}{}{89} @numsecentry{Vendor Branches}{18.3}{}{89} @numsecentry{Experimental Branches}{18.4}{}{89} @numsubsecentry{Guidelines}{18.4.1}{}{89} @numsubsecentry{Tags}{18.4.2}{}{90} @numchapentry{Start of New Year Procedure}{19}{Start of New Year Procedure}{90} @numchapentry{Releasing @sc {gdb}}{20}{Releasing GDB}{91} @numsecentry{Branch Commit Policy}{20.1}{}{91} @numsecentry{Obsoleting code}{20.2}{}{92} @numsecentry{Before the Branch}{20.3}{}{92} @numsubsecentry{Review the bug data base}{20.3.1}{}{93} @numsubsecentry{Check all cross targets build}{20.3.2}{}{93} @numsecentry{Cut the Branch}{20.4}{}{93} @numsecentry{Stabilize the branch}{20.5}{}{94} @numsecentry{Create a Release}{20.6}{}{95} @numsubsecentry{Create a release candidate}{20.6.1}{}{95} @numsubsecentry{Sanity check the tar ball}{20.6.2}{}{97} @numsubsecentry{Make a release candidate available}{20.6.3}{}{97} @numsubsecentry{Make a formal release available}{20.6.4}{}{98} @numsubsecentry{Cleanup}{20.6.5}{}{99} @numsecentry{Post release}{20.7}{}{100} @numchapentry{Testsuite}{21}{Testsuite}{100} @numsecentry{Using the Testsuite}{21.1}{}{100} @numsecentry{Testsuite Parameters}{21.2}{}{101} @numsecentry{Testsuite Configuration}{21.3}{}{102} @numsecentry{Testsuite Organization}{21.4}{}{103} @numsecentry{Writing Tests}{21.5}{}{104} @numchapentry{Hints}{22}{Hints}{104} @numsecentry{Getting Started}{22.1}{Getting Started}{104} @numsecentry{Debugging @sc {gdb} with itself}{22.2}{Debugging GDB}{105} @numsecentry{Submitting Patches}{22.3}{}{106} @numsecentry{Build Script}{22.4}{}{107} @appentry{@sc {gdb} Currently available observers}{A}{GDB Observers}{107} @appsecentry{Implementation rationale}{A.1}{}{107} @appsecentry{Debugging}{A.2}{}{107} @appsecentry{@code {normal_stop} Notifications}{A.3}{}{108} @appentry{GNU Free Documentation License}{B}{GNU Free Documentation License}{110} @unnchapentry{Index}{10002}{Index}{118}