add directory Ref-docs

This commit is contained in:
gohigh
2024-02-19 00:21:47 -05:00
parent 5a46ddb732
commit ef50495c9d
2492 changed files with 1609142 additions and 0 deletions

View File

@@ -0,0 +1,95 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: GDB Internals</TITLE>
<META NAME="description" CONTENT="GDB Internals: GDB Internals">
<META NAME="keywords" CONTENT="GDB Internals: GDB Internals">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC_Top"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>GDB Internals</H1></P><P>
This document documents the internals of the GNU debugger, GDB. It
includes description of GDB's key algorithms and operations, as well
as the mechanisms that adapt GDB to specific hosts and targets.
</P><P>
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_1.html#SEC1">1. Requirements</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_2.html#SEC2">2. Overall Structure</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_3.html#SEC6">3. Algorithms</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_4.html#SEC16">4. User Interface</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_5.html#SEC27">5. libgdb</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_6.html#SEC37">6. Symbol Handling</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_7.html#SEC61">7. Language Support</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_8.html#SEC63">8. Host Definition</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_9.html#SEC67">9. Target Architecture Definition</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_10.html#SEC88">10. Target Vector Definition</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_11.html#SEC95">11. Native Debugging</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_12.html#SEC102">12. Support Libraries</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_13.html#SEC110">13. Coding</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_14.html#SEC126">14. Porting GDB</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_15.html#SEC129">15. Releasing GDB</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_16.html#SEC175">16. Testsuite</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_17.html#SEC179">17. Hints</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
</TABLE>
<br>
<TABLE BORDER=0 CELLSPACING=0>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_18.html#SEC184">A. GNU Free Documentation License</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The license for this documentation</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_19.html#SEC186">Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
</TABLE></BLOCKQUOTE>
<P>
<HR SIZE=1>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,123 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Requirements</TITLE>
<META NAME="description" CONTENT="GDB Internals: Requirements">
<META NAME="keywords" CONTENT="GDB Internals: Requirements">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC1"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<A NAME="Requirements"></A>
</P><P>
<H1> 1. Requirements </H1>
<!--docid::SEC1::-->
<P>
Before diving into the internals, you should understand the formal
requirements and other expectations for GDB. Although some
of these may seem obvious, there have been proposals for GDB
that have run counter to these requirements.
</P><P>
First of all, GDB is a debugger. It's not designed to be a
front panel for embedded systems. It's not a text editor. It's not a
shell. It's not a programming environment.
</P><P>
GDB is an interactive tool. Although a batch mode is
available, GDB's primary role is to interact with a human
programmer.
</P><P>
GDB should be responsive to the user. A programmer hot on
the trail of a nasty bug, and operating under a looming deadline, is
going to be very impatient of everything, including the response time
to debugger commands.
</P><P>
GDB should be relatively permissive, such as for expressions.
While the compiler should be picky (or have the option to be made
picky), since source code lives for a long time usually, the
programmer doing debugging shouldn't be spending time figuring out to
mollify the debugger.
</P><P>
GDB will be called upon to deal with really large programs.
Executable sizes of 50 to 100 megabytes occur regularly, and we've
heard reports of programs approaching 1 gigabyte in size.
</P><P>
GDB should be able to run everywhere. No other debugger is
available for even half as many configurations as GDB
supports.
</P><P>
<A NAME="Overall Structure"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,245 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Target Vector Definition</TITLE>
<META NAME="description" CONTENT="GDB Internals: Target Vector Definition">
<META NAME="keywords" CONTENT="GDB Internals: Target Vector Definition">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC88"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_9.html#SEC87"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC89"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 10. Target Vector Definition </H1>
<!--docid::SEC88::-->
<P>
The target vector defines the interface between GDB's
abstract handling of target systems, and the nitty-gritty code that
actually exercises control over a process or a serial port.
GDB includes some 30-40 different target vectors; however,
each configuration of GDB includes only a few of them.
</P><P>
<HR SIZE="6">
<A NAME="SEC89"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC88"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC90"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC88"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC88"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 10.1 File Targets </H2>
<!--docid::SEC89::-->
<P>
Both executables and core files have target vectors.
</P><P>
<HR SIZE="6">
<A NAME="SEC90"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC89"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC91"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC91"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC88"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 10.2 Standard Protocol and Remote Stubs </H2>
<!--docid::SEC90::-->
<P>
GDB's file <TT>`remote.c'</TT> talks a serial protocol to code
that runs in the target system. GDB provides several sample
<EM>stubs</EM> that can be integrated into target programs or operating
systems for this purpose; they are named <TT>`*-stub.c'</TT>.
</P><P>
The GDB user's manual describes how to put such a stub into
your target code. What follows is a discussion of integrating the
SPARC stub into a complicated operating system (rather than a simple
program), by Stu Grossman, the author of this stub.
</P><P>
The trap handling code in the stub assumes the following upon entry to
<CODE>trap_low</CODE>:
</P><P>
<OL>
<LI>
%l1 and %l2 contain pc and npc respectively at the time of the trap;
<P>
<LI>
traps are disabled;
<P>
<LI>
you are in the correct trap window.
</OL>
<P>
As long as your trap handler can guarantee those conditions, then there
is no reason why you shouldn't be able to "share" traps with the stub.
The stub has no requirement that it be jumped to directly from the
hardware trap vector. That is why it calls <CODE>exceptionHandler()</CODE>,
which is provided by the external environment. For instance, this could
set up the hardware traps to actually execute code which calls the stub
first, and then transfers to its own trap handler.
</P><P>
For the most point, there probably won't be much of an issue with
"sharing" traps, as the traps we use are usually not used by the kernel,
and often indicate unrecoverable error conditions. Anyway, this is all
controlled by a table, and is trivial to modify. The most important
trap for us is for <CODE>ta 1</CODE>. Without that, we can't single step or
do breakpoints. Everything else is unnecessary for the proper operation
of the debugger/stub.
</P><P>
From reading the stub, it's probably not obvious how breakpoints work.
They are simply done by deposit/examine operations from GDB.
</P><P>
<HR SIZE="6">
<A NAME="SEC91"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC90"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC92"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC92"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC88"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 10.3 ROM Monitor Interface </H2>
<!--docid::SEC91::-->
<P>
<HR SIZE="6">
<A NAME="SEC92"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC91"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC93"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC93"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC88"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 10.4 Custom Protocols </H2>
<!--docid::SEC92::-->
<P>
<HR SIZE="6">
<A NAME="SEC93"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC92"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC94"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC94"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC88"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 10.5 Transport Layer </H2>
<!--docid::SEC93::-->
<P>
<HR SIZE="6">
<A NAME="SEC94"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC93"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC88"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC88"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 10.6 Builtin Simulator </H2>
<!--docid::SEC94::-->
<P>
<A NAME="Native Debugging"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC88"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,521 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 26 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Native Debugging</TITLE>
<META NAME="description" CONTENT="GDB Internals: Native Debugging">
<META NAME="keywords" CONTENT="GDB Internals: Native Debugging">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC95"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_10.html#SEC94"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC96"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 11. Native Debugging </H1>
<!--docid::SEC95::-->
<P>
Several files control GDB's configuration for native support:
</P><P>
<DL COMPACT>
<A NAME="IDX469"></A>
<DT><TT>`gdb/config/<VAR>arch</VAR>/<VAR>xyz</VAR>.mh'</TT>
<DD>Specifies Makefile fragments needed by a <EM>native</EM> configuration on
machine <VAR>xyz</VAR>. In particular, this lists the required
native-dependent object files, by defining <SAMP>`NATDEPFILES=<small>...</small>'</SAMP>.
Also specifies the header file which describes native support on
<VAR>xyz</VAR>, by defining <SAMP>`NAT_FILE= nm-<VAR>xyz</VAR>.h'</SAMP>. You can also
define <SAMP>`NAT_CFLAGS'</SAMP>, <SAMP>`NAT_ADD_FILES'</SAMP>, <SAMP>`NAT_CLIBS'</SAMP>,
<SAMP>`NAT_CDEPS'</SAMP>, etc.; see <TT>`Makefile.in'</TT>.
<P>
<EM>Maintainer's note: The <TT>`.mh'</TT> suffix is because this file
originally contained <TT>`Makefile'</TT> fragments for hosting GDB
on machine <VAR>xyz</VAR>. While the file is no longer used for this
purpose, the <TT>`.mh'</TT> suffix remains. Perhaps someone will
eventually rename these fragments so that they have a <TT>`.mn'</TT>
suffix.</EM>
</P><P>
<DT><TT>`gdb/config/<VAR>arch</VAR>/nm-<VAR>xyz</VAR>.h'</TT>
<DD>(<TT>`nm.h'</TT> is a link to this file, created by <CODE>configure</CODE>). Contains C
macro definitions describing the native system environment, such as
child process control and core file support.
<P>
<DT><TT>`gdb/<VAR>xyz</VAR>-nat.c'</TT>
<DD>Contains any miscellaneous C code required for this native support of
this machine. On some machines it doesn't exist at all.
</DL>
<P>
There are some "generic" versions of routines that can be used by
various systems. These can be customized in various ways by macros
defined in your <TT>`nm-<VAR>xyz</VAR>.h'</TT> file. If these routines work for
the <VAR>xyz</VAR> host, you can just include the generic file's name (with
<SAMP>`.o'</SAMP>, not <SAMP>`.c'</SAMP>) in <CODE>NATDEPFILES</CODE>.
</P><P>
Otherwise, if your machine needs custom support routines, you will need
to write routines that perform the same functions as the generic file.
Put them into <TT>`<VAR>xyz</VAR>-nat.c'</TT>, and put <TT>`<VAR>xyz</VAR>-nat.o'</TT>
into <CODE>NATDEPFILES</CODE>.
</P><P>
<DL COMPACT>
<DT><TT>`inftarg.c'</TT>
<DD>This contains the <EM>target_ops vector</EM> that supports Unix child
processes on systems which use ptrace and wait to control the child.
<P>
<DT><TT>`procfs.c'</TT>
<DD>This contains the <EM>target_ops vector</EM> that supports Unix child
processes on systems which use /proc to control the child.
<P>
<DT><TT>`fork-child.c'</TT>
<DD>This does the low-level grunge that uses Unix system calls to do a "fork
and exec" to start up a child process.
<P>
<DT><TT>`infptrace.c'</TT>
<DD>This is the low level interface to inferior processes for systems using
the Unix <CODE>ptrace</CODE> call in a vanilla way.
</DL>
<P>
<HR SIZE="6">
<A NAME="SEC96"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC97"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 11.1 Native core file Support </H2>
<!--docid::SEC96::-->
<P>
<DL COMPACT>
<A NAME="IDX470"></A>
<DT><TT>`core-aout.c::fetch_core_registers()'</TT>
<DD>Support for reading registers out of a core file. This routine calls
<CODE>register_addr()</CODE>, see below. Now that BFD is used to read core
files, virtually all machines should use <CODE>core-aout.c</CODE>, and should
just provide <CODE>fetch_core_registers</CODE> in <CODE><VAR>xyz</VAR>-nat.c</CODE> (or
<CODE>REGISTER_U_ADDR</CODE> in <CODE>nm-<VAR>xyz</VAR>.h</CODE>).
<P>
<DT><TT>`core-aout.c::register_addr()'</TT>
<DD>If your <CODE>nm-<VAR>xyz</VAR>.h</CODE> file defines the macro
<CODE>REGISTER_U_ADDR(addr, blockend, regno)</CODE>, it should be defined to
set <CODE>addr</CODE> to the offset within the <SAMP>`user'</SAMP> struct of GDB
register number <CODE>regno</CODE>. <CODE>blockend</CODE> is the offset within the
"upage" of <CODE>u.u_ar0</CODE>. If <CODE>REGISTER_U_ADDR</CODE> is defined,
<TT>`core-aout.c'</TT> will define the <CODE>register_addr()</CODE> function and
use the macro in it. If you do not define <CODE>REGISTER_U_ADDR</CODE>, but
you are using the standard <CODE>fetch_core_registers()</CODE>, you will need
to define your own version of <CODE>register_addr()</CODE>, put it into your
<CODE><VAR>xyz</VAR>-nat.c</CODE> file, and be sure <CODE><VAR>xyz</VAR>-nat.o</CODE> is in
the <CODE>NATDEPFILES</CODE> list. If you have your own
<CODE>fetch_core_registers()</CODE>, you may not need a separate
<CODE>register_addr()</CODE>. Many custom <CODE>fetch_core_registers()</CODE>
implementations simply locate the registers themselves.</DL>
<P>
When making GDB run native on a new operating system, to make it
possible to debug core files, you will need to either write specific
code for parsing your OS's core files, or customize
<TT>`bfd/trad-core.c'</TT>. First, use whatever <CODE>#include</CODE> files your
machine uses to define the struct of registers that is accessible
(possibly in the u-area) in a core file (rather than
<TT>`machine/reg.h'</TT>), and an include file that defines whatever header
exists on a core file (e.g. the u-area or a <CODE>struct core</CODE>). Then
modify <CODE>trad_unix_core_file_p</CODE> to use these values to set up the
section information for the data segment, stack segment, any other
segments in the core file (perhaps shared library contents or control
information), "registers" segment, and if there are two discontiguous
sets of registers (e.g. integer and float), the "reg2" segment. This
section information basically delimits areas in the core file in a
standard way, which the section-reading routines in BFD know how to seek
around in.
</P><P>
Then back in GDB, you need a matching routine called
<CODE>fetch_core_registers</CODE>. If you can use the generic one, it's in
<TT>`core-aout.c'</TT>; if not, it's in your <TT>`<VAR>xyz</VAR>-nat.c'</TT> file.
It will be passed a char pointer to the entire "registers" segment,
its length, and a zero; or a char pointer to the entire "regs2"
segment, its length, and a 2. The routine should suck out the supplied
register values and install them into GDB's "registers" array.
</P><P>
If your system uses <TT>`/proc'</TT> to control processes, and uses ELF
format core files, then you may be able to use the same routines for
reading the registers out of processes and out of core files.
</P><P>
<HR SIZE="6">
<A NAME="SEC97"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC96"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC98"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC98"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 11.2 ptrace </H2>
<!--docid::SEC97::-->
<P>
<HR SIZE="6">
<A NAME="SEC98"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC97"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC99"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC99"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 11.3 /proc </H2>
<!--docid::SEC98::-->
<P>
<HR SIZE="6">
<A NAME="SEC99"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC98"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC100"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC100"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 11.4 win32 </H2>
<!--docid::SEC99::-->
<P>
<HR SIZE="6">
<A NAME="SEC100"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC99"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC101"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC101"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 11.5 shared libraries </H2>
<!--docid::SEC100::-->
<P>
<HR SIZE="6">
<A NAME="SEC101"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC100"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 11.6 Native Conditionals </H2>
<!--docid::SEC101::-->
<P>
When GDB is configured and compiled, various macros are
defined or left undefined, to control compilation when the host and
target systems are the same. These macros should be defined (or left
undefined) in <TT>`nm-<VAR>system</VAR>.h'</TT>.
</P><P>
<DL COMPACT>
<DT><CODE>ATTACH_DETACH</CODE>
<DD><A NAME="IDX471"></A>
If defined, then GDB will include support for the <CODE>attach</CODE> and
<CODE>detach</CODE> commands.
<P>
<DT><CODE>CHILD_PREPARE_TO_STORE</CODE>
<DD><A NAME="IDX472"></A>
If the machine stores all registers at once in the child process, then
define this to ensure that all values are correct. This usually entails
a read from the child.
<P>
[Note that this is incorrectly defined in <TT>`xm-<VAR>system</VAR>.h'</TT> files
currently.]
</P><P>
<DT><CODE>FETCH_INFERIOR_REGISTERS</CODE>
<DD><A NAME="IDX473"></A>
Define this if the native-dependent code will provide its own routines
<CODE>fetch_inferior_registers</CODE> and <CODE>store_inferior_registers</CODE> in
<TT>`<VAR>host</VAR>-nat.c'</TT>. If this symbol is <EM>not</EM> defined, and
<TT>`infptrace.c'</TT> is included in this configuration, the default
routines in <TT>`infptrace.c'</TT> are used for these functions.
<P>
<DT><CODE>FILES_INFO_HOOK</CODE>
<DD><A NAME="IDX474"></A>
(Only defined for Convex.)
<P>
<DT><CODE>FP0_REGNUM</CODE>
<DD><A NAME="IDX475"></A>
This macro is normally defined to be the number of the first floating
point register, if the machine has such registers. As such, it would
appear only in target-specific code. However, <TT>`/proc'</TT> support uses this
to decide whether floats are in use on this target.
<P>
<DT><CODE>GET_LONGJMP_TARGET</CODE>
<DD><A NAME="IDX476"></A>
For most machines, this is a target-dependent parameter. On the
DECstation and the Iris, this is a native-dependent parameter, since
<TT>`setjmp.h'</TT> is needed to define it.
<P>
This macro determines the target PC address that <CODE>longjmp</CODE> will jump to,
assuming that we have just stopped at a longjmp breakpoint. It takes a
<CODE>CORE_ADDR *</CODE> as argument, and stores the target PC value through this
pointer. It examines the current state of the machine as needed.
</P><P>
<DT><CODE>I386_USE_GENERIC_WATCHPOINTS</CODE>
<DD>An x86-based machine can define this to use the generic x86 watchpoint
support; see <A HREF="gdbint_3.html#SEC6">I386_USE_GENERIC_WATCHPOINTS</A>.
<P>
<DT><CODE>KERNEL_U_ADDR</CODE>
<DD><A NAME="IDX477"></A>
Define this to the address of the <CODE>u</CODE> structure (the "user
struct", also known as the "u-page") in kernel virtual memory. GDB
needs to know this so that it can subtract this address from absolute
addresses in the upage, that are obtained via ptrace or from core files.
On systems that don't need this value, set it to zero.
<P>
<DT><CODE>KERNEL_U_ADDR_BSD</CODE>
<DD><A NAME="IDX478"></A>
Define this to cause GDB to determine the address of <CODE>u</CODE> at
runtime, by using Berkeley-style <CODE>nlist</CODE> on the kernel's image in
the root directory.
<P>
<DT><CODE>KERNEL_U_ADDR_HPUX</CODE>
<DD><A NAME="IDX479"></A>
Define this to cause GDB to determine the address of <CODE>u</CODE> at
runtime, by using HP-style <CODE>nlist</CODE> on the kernel's image in the
root directory.
<P>
<DT><CODE>ONE_PROCESS_WRITETEXT</CODE>
<DD><A NAME="IDX480"></A>
Define this to be able to, when a breakpoint insertion fails, warn the
user that another process may be running with the same executable.
<P>
<DT><CODE>PREPARE_TO_PROCEED (<VAR>select_it</VAR>)</CODE>
<DD><A NAME="IDX481"></A>
This (ugly) macro allows a native configuration to customize the way the
<CODE>proceed</CODE> function in <TT>`infrun.c'</TT> deals with switching between
threads.
<P>
In a multi-threaded task we may select another thread and then continue
or step. But if the old thread was stopped at a breakpoint, it will
immediately cause another breakpoint stop without any execution (i.e. it
will report a breakpoint hit incorrectly). So GDB must step over it
first.
</P><P>
If defined, <CODE>PREPARE_TO_PROCEED</CODE> should check the current thread
against the thread that reported the most recent event. If a step-over
is required, it returns TRUE. If <VAR>select_it</VAR> is non-zero, it should
reselect the old thread.
</P><P>
<DT><CODE>PROC_NAME_FMT</CODE>
<DD><A NAME="IDX482"></A>
Defines the format for the name of a <TT>`/proc'</TT> device. Should be
defined in <TT>`nm.h'</TT> <EM>only</EM> in order to override the default
definition in <TT>`procfs.c'</TT>.
<P>
<DT><CODE>PTRACE_FP_BUG</CODE>
<DD><A NAME="IDX483"></A>
See <TT>`mach386-xdep.c'</TT>.
<P>
<DT><CODE>PTRACE_ARG3_TYPE</CODE>
<DD><A NAME="IDX484"></A>
The type of the third argument to the <CODE>ptrace</CODE> system call, if it
exists and is different from <CODE>int</CODE>.
<P>
<DT><CODE>REGISTER_U_ADDR</CODE>
<DD><A NAME="IDX485"></A>
Defines the offset of the registers in the "u area".
<P>
<DT><CODE>SHELL_COMMAND_CONCAT</CODE>
<DD><A NAME="IDX486"></A>
If defined, is a string to prefix on the shell command used to start the
inferior.
<P>
<DT><CODE>SHELL_FILE</CODE>
<DD><A NAME="IDX487"></A>
If defined, this is the name of the shell to use to run the inferior.
Defaults to <CODE>"/bin/sh"</CODE>.
<P>
<DT><CODE>SOLIB_ADD (<VAR>filename</VAR>, <VAR>from_tty</VAR>, <VAR>targ</VAR>, <VAR>readsyms</VAR>)</CODE>
<DD><A NAME="IDX488"></A>
Define this to expand into an expression that will cause the symbols in
<VAR>filename</VAR> to be added to GDB's symbol table. If
<VAR>readsyms</VAR> is zero symbols are not read but any necessary low level
processing for <VAR>filename</VAR> is still done.
<P>
<DT><CODE>SOLIB_CREATE_INFERIOR_HOOK</CODE>
<DD><A NAME="IDX489"></A>
Define this to expand into any shared-library-relocation code that you
want to be run just after the child process has been forked.
<P>
<DT><CODE>START_INFERIOR_TRAPS_EXPECTED</CODE>
<DD><A NAME="IDX490"></A>
When starting an inferior, GDB normally expects to trap
twice; once when
the shell execs, and once when the program itself execs. If the actual
number of traps is something other than 2, then define this macro to
expand into the number expected.
<P>
<DT><CODE>SVR4_SHARED_LIBS</CODE>
<DD><A NAME="IDX491"></A>
Define this to indicate that SVR4-style shared libraries are in use.
<P>
<DT><CODE>USE_PROC_FS</CODE>
<DD><A NAME="IDX492"></A>
This determines whether small routines in <TT>`*-tdep.c'</TT>, which
translate register values between GDB's internal
representation and the <TT>`/proc'</TT> representation, are compiled.
<P>
<DT><CODE>U_REGS_OFFSET</CODE>
<DD><A NAME="IDX493"></A>
This is the offset of the registers in the upage. It need only be
defined if the generic ptrace register access routines in
<TT>`infptrace.c'</TT> are being used (that is, <TT>`infptrace.c'</TT> is
configured in, and <CODE>FETCH_INFERIOR_REGISTERS</CODE> is not defined). If
the default value from <TT>`infptrace.c'</TT> is good enough, leave it
undefined.
<P>
The default value means that u.u_ar0 <EM>points to</EM> the location of
the registers. I'm guessing that <CODE>#define U_REGS_OFFSET 0</CODE> means
that <CODE>u.u_ar0</CODE> <EM>is</EM> the location of the registers.
</P><P>
<DT><CODE>CLEAR_SOLIB</CODE>
<DD><A NAME="IDX494"></A>
See <TT>`objfiles.c'</TT>.
<P>
<DT><CODE>DEBUG_PTRACE</CODE>
<DD><A NAME="IDX495"></A>
Define this to debug <CODE>ptrace</CODE> calls.
</DL>
<P>
<A NAME="Support Libraries"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC95"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 26 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,266 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Support Libraries</TITLE>
<META NAME="description" CONTENT="GDB Internals: Support Libraries">
<META NAME="keywords" CONTENT="GDB Internals: Support Libraries">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC102"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_11.html#SEC101"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC103"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC110"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 12. Support Libraries </H1>
<!--docid::SEC102::-->
<P>
<HR SIZE="6">
<A NAME="SEC103"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC104"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC110"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 12.1 BFD </H2>
<!--docid::SEC103::-->
<P>
BFD provides support for GDB in several ways:
</P><P>
<DL COMPACT>
<DT><EM>identifying executable and core files</EM>
<DD>BFD will identify a variety of file types, including a.out, coff, and
several variants thereof, as well as several kinds of core files.
<P>
<DT><EM>access to sections of files</EM>
<DD>BFD parses the file headers to determine the names, virtual addresses,
sizes, and file locations of all the various named sections in files
(such as the text section or the data section). GDB simply
calls BFD to read or write section <VAR>x</VAR> at byte offset <VAR>y</VAR> for
length <VAR>z</VAR>.
<P>
<DT><EM>specialized core file support</EM>
<DD>BFD provides routines to determine the failing command name stored in a
core file, the signal with which the program failed, and whether a core
file matches (i.e. could be a core dump of) a particular executable
file.
<P>
<DT><EM>locating the symbol information</EM>
<DD>GDB uses an internal interface of BFD to determine where to find the
symbol information in an executable file or symbol-file. GDB itself
handles the reading of symbols, since BFD does not "understand" debug
symbols, but GDB uses BFD's cached information to find the symbols,
string table, etc.
</DL>
<P>
<HR SIZE="6">
<A NAME="SEC104"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC103"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC105"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC105"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC110"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 12.2 opcodes </H2>
<!--docid::SEC104::-->
<P>
The opcodes library provides GDB's disassembler. (It's a separate
library because it's also used in binutils, for <TT>`objdump'</TT>).
</P><P>
<HR SIZE="6">
<A NAME="SEC105"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC104"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC106"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC106"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC110"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 12.3 readline </H2>
<!--docid::SEC105::-->
<P>
<HR SIZE="6">
<A NAME="SEC106"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC105"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC107"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC107"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC110"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 12.4 mmalloc </H2>
<!--docid::SEC106::-->
<P>
<HR SIZE="6">
<A NAME="SEC107"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC106"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC108"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC108"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC110"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 12.5 libiberty </H2>
<!--docid::SEC107::-->
<P>
<HR SIZE="6">
<A NAME="SEC108"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC107"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC109"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC109"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC110"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 12.6 gnu-regex </H2>
<!--docid::SEC108::-->
<P>
Regex conditionals.
</P><P>
<DL COMPACT>
<DT><CODE>C_ALLOCA</CODE>
<DD><P>
<DT><CODE>NFAILURES</CODE>
<DD><P>
<DT><CODE>RE_NREGS</CODE>
<DD><P>
<DT><CODE>SIGN_EXTEND_CHAR</CODE>
<DD><P>
<DT><CODE>SWITCH_ENUM_BUG</CODE>
<DD><P>
<DT><CODE>SYNTAX_TABLE</CODE>
<DD><P>
<DT><CODE>Sword</CODE>
<DD><P>
<DT><CODE>sparc</CODE>
<DD></DL>
<P>
<HR SIZE="6">
<A NAME="SEC109"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC108"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC110"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC110"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 12.7 include </H2>
<!--docid::SEC109::-->
<P>
<A NAME="Coding"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_12.html#SEC102"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC110"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,222 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 26 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Porting GDB</TITLE>
<META NAME="description" CONTENT="GDB Internals: Porting GDB">
<META NAME="keywords" CONTENT="GDB Internals: Porting GDB">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC126"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_13.html#SEC125"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_14.html#SEC127"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 14. Porting GDB </H1>
<!--docid::SEC126::-->
<P>
Most of the work in making GDB compile on a new machine is in
specifying the configuration of the machine. This is done in a
dizzying variety of header files and configuration scripts, which we
hope to make more sensible soon. Let's say your new host is called an
<VAR>xyz</VAR> (e.g., <SAMP>`sun4'</SAMP>), and its full three-part configuration
name is <CODE><VAR>arch</VAR>-<VAR>xvend</VAR>-<VAR>xos</VAR></CODE> (e.g.,
<SAMP>`sparc-sun-sunos4'</SAMP>). In particular:
</P><P>
<UL>
<LI>
In the top level directory, edit <TT>`config.sub'</TT> and add <VAR>arch</VAR>,
<VAR>xvend</VAR>, and <VAR>xos</VAR> to the lists of supported architectures,
vendors, and operating systems near the bottom of the file. Also, add
<VAR>xyz</VAR> as an alias that maps to
<CODE><VAR>arch</VAR>-<VAR>xvend</VAR>-<VAR>xos</VAR></CODE>. You can test your changes by
running
<P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>./config.sub <VAR>xyz</VAR>
</FONT></pre></td></tr></table></P><P>
and
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>./config.sub <CODE><VAR>arch</VAR>-<VAR>xvend</VAR>-<VAR>xos</VAR></CODE>
</FONT></pre></td></tr></table></P><P>
which should both respond with <CODE><VAR>arch</VAR>-<VAR>xvend</VAR>-<VAR>xos</VAR></CODE>
and no error messages.
</P><P>
You need to port BFD, if that hasn't been done already. Porting BFD is
beyond the scope of this manual.
</P><P>
<LI>
To configure GDB itself, edit <TT>`gdb/configure.host'</TT> to recognize
your system and set <CODE>gdb_host</CODE> to <VAR>xyz</VAR>, and (unless your
desired target is already available) also edit <TT>`gdb/configure.tgt'</TT>,
setting <CODE>gdb_target</CODE> to something appropriate (for instance,
<VAR>xyz</VAR>).
<P>
<EM>Maintainer's note: Work in progress. The file
<TT>`gdb/configure.host'</TT> originally needed to be modified when either a
new native target or a new host machine was being added to GDB.
Recent changes have removed this requirement. The file now only needs
to be modified when adding a new native configuration. This will likely
changed again in the future.</EM>
</P><P>
<LI>
Finally, you'll need to specify and define GDB's host-, native-, and
target-dependent <TT>`.h'</TT> and <TT>`.c'</TT> files used for your
configuration.
</UL>
<P>
<HR SIZE="6">
<A NAME="SEC127"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_14.html#SEC126"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_14.html#SEC126"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_14.html#SEC126"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 14.1 Configuring GDB for Release </H2>
<!--docid::SEC127::-->
<P>
<A NAME="IDX520"></A>
<A NAME="IDX521"></A>
From the top level directory (containing <TT>`gdb'</TT>, <TT>`bfd'</TT>,
<TT>`libiberty'</TT>, and so on):
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>make -f Makefile.in gdb.tar.gz
</FONT></pre></td></tr></table></P><P>
This will properly configure, clean, rebuild any files that are
distributed pre-built (e.g. <TT>`c-exp.tab.c'</TT> or <TT>`refcard.ps'</TT>),
and will then make a tarfile. (If the top level directory has already
been configured, you can just do <CODE>make gdb.tar.gz</CODE> instead.)
</P><P>
This procedure requires:
</P><P>
<UL>
<LI>
symbolic links;
<P>
<LI>
<CODE>makeinfo</CODE> (texinfo2 level);
<P>
<LI>
TeX;
<P>
<LI>
<CODE>dvips</CODE>;
<P>
<LI>
<CODE>yacc</CODE> or <CODE>bison</CODE>.
</UL>
<P>
<small>...</small> and the usual slew of utilities (<CODE>sed</CODE>, <CODE>tar</CODE>, etc.).
</P><P>
<A NAME="SEC128"></A>
<H3> TEMPORARY RELEASE PROCEDURE FOR DOCUMENTATION </H3>
<!--docid::SEC128::-->
<P>
<TT>`gdb.texinfo'</TT> is currently marked up using the texinfo-2 macros,
which are not yet a default for anything (but we have to start using
them sometime).
</P><P>
For making paper, the only thing this implies is the right generation of
<TT>`texinfo.tex'</TT> needs to be included in the distribution.
</P><P>
For making info files, however, rather than duplicating the texinfo2
distribution, generate <TT>`gdb-all.texinfo'</TT> locally, and include the
files <TT>`gdb.info*'</TT> in the distribution. Note the plural;
<CODE>makeinfo</CODE> will split the document into one overall file and five
or so included files.
</P><P>
<A NAME="Releasing GDB"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_14.html#SEC126"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 26 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,282 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 26 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Testsuite</TITLE>
<META NAME="description" CONTENT="GDB Internals: Testsuite">
<META NAME="keywords" CONTENT="GDB Internals: Testsuite">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC175"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC176"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 16. Testsuite </H1>
<!--docid::SEC175::-->
<P>
The testsuite is an important component of the GDB package.
While it is always worthwhile to encourage user testing, in practice
this is rarely sufficient; users typically use only a small subset of
the available commands, and it has proven all too common for a change
to cause a significant regression that went unnoticed for some time.
</P><P>
The GDB testsuite uses the DejaGNU testing framework.
DejaGNU is built using <CODE>Tcl</CODE> and <CODE>expect</CODE>. The tests
themselves are calls to various <CODE>Tcl</CODE> procs; the framework runs all the
procs and summarizes the passes and fails.
</P><P>
<HR SIZE="6">
<A NAME="SEC176"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC177"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 16.1 Using the Testsuite </H2>
<!--docid::SEC176::-->
<P>
<A NAME="IDX522"></A>
To run the testsuite, simply go to the GDB object directory (or to the
testsuite's objdir) and type <CODE>make check</CODE>. This just sets up some
environment variables and invokes DejaGNU's <CODE>runtest</CODE> script. While
the testsuite is running, you'll get mentions of which test file is in use,
and a mention of any unexpected passes or fails. When the testsuite is
finished, you'll get a summary that looks like this:
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> === gdb Summary ===
# of expected passes 6016
# of unexpected failures 58
# of unexpected successes 5
# of expected failures 183
# of unresolved testcases 3
# of untested testcases 5
</FONT></pre></td></tr></table></P><P>
The ideal test run consists of expected passes only; however, reality
conspires to keep us from this ideal. Unexpected failures indicate
real problems, whether in GDB or in the testsuite. Expected
failures are still failures, but ones which have been decided are too
hard to deal with at the time; for instance, a test case might work
everywhere except on AIX, and there is no prospect of the AIX case
being fixed in the near future. Expected failures should not be added
lightly, since you may be masking serious bugs in GDB.
Unexpected successes are expected fails that are passing for some
reason, while unresolved and untested cases often indicate some minor
catastrophe, such as the compiler being unable to deal with a test
program.
</P><P>
When making any significant change to GDB, you should run the
testsuite before and after the change, to confirm that there are no
regressions. Note that truly complete testing would require that you
run the testsuite with all supported configurations and a variety of
compilers; however this is more than really necessary. In many cases
testing with a single configuration is sufficient. Other useful
options are to test one big-endian (Sparc) and one little-endian (x86)
host, a cross config with a builtin simulator (powerpc-eabi,
mips-elf), or a 64-bit host (Alpha).
</P><P>
If you add new functionality to GDB, please consider adding
tests for it as well; this way future GDB hackers can detect
and fix their changes that break the functionality you added.
Similarly, if you fix a bug that was not previously reported as a test
failure, please add a test case for it. Some cases are extremely
difficult to test, such as code that handles host OS failures or bugs
in particular versions of compilers, and it's OK not to try to write
tests for all of those.
</P><P>
<HR SIZE="6">
<A NAME="SEC177"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC176"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC178"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC178"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 16.2 Testsuite Organization </H2>
<!--docid::SEC177::-->
<P>
<A NAME="IDX523"></A>
The testsuite is entirely contained in <TT>`gdb/testsuite'</TT>. While the
testsuite includes some makefiles and configury, these are very minimal,
and used for little besides cleaning up, since the tests themselves
handle the compilation of the programs that GDB will run. The file
<TT>`testsuite/lib/gdb.exp'</TT> contains common utility procs useful for
all GDB tests, while the directory <TT>`testsuite/config'</TT> contains
configuration-specific files, typically used for special-purpose
definitions of procs like <CODE>gdb_load</CODE> and <CODE>gdb_start</CODE>.
</P><P>
The tests themselves are to be found in <TT>`testsuite/gdb.*'</TT> and
subdirectories of those. The names of the test files must always end
with <TT>`.exp'</TT>. DejaGNU collects the test files by wildcarding
in the test directories, so both subdirectories and individual files
get chosen and run in alphabetical order.
</P><P>
The following table lists the main types of subdirectories and what they
are for. Since DejaGNU finds test files no matter where they are
located, and since each test file sets up its own compilation and
execution environment, this organization is simply for convenience and
intelligibility.
</P><P>
<DL COMPACT>
<DT><TT>`gdb.base'</TT>
<DD>This is the base testsuite. The tests in it should apply to all
configurations of GDB (but generic native-only tests may live here).
The test programs should be in the subset of C that is valid K&#38;R,
ANSI/ISO, and C++ (<CODE>#ifdef</CODE>s are allowed if necessary, for instance
for prototypes).
<P>
<DT><TT>`gdb.<VAR>lang</VAR>'</TT>
<DD>Language-specific tests for any language <VAR>lang</VAR> besides C. Examples are
<TT>`gdb.c++'</TT> and <TT>`gdb.java'</TT>.
<P>
<DT><TT>`gdb.<VAR>platform</VAR>'</TT>
<DD>Non-portable tests. The tests are specific to a specific configuration
(host or target), such as HP-UX or eCos. Example is <TT>`gdb.hp'</TT>, for
HP-UX.
<P>
<DT><TT>`gdb.<VAR>compiler</VAR>'</TT>
<DD>Tests specific to a particular compiler. As of this writing (June
1999), there aren't currently any groups of tests in this category that
couldn't just as sensibly be made platform-specific, but one could
imagine a <TT>`gdb.gcc'</TT>, for tests of GDB's handling of GCC
extensions.
<P>
<DT><TT>`gdb.<VAR>subsystem</VAR>'</TT>
<DD>Tests that exercise a specific GDB subsystem in more depth. For
instance, <TT>`gdb.disasm'</TT> exercises various disassemblers, while
<TT>`gdb.stabs'</TT> tests pathways through the stabs symbol reader.
</DL>
<P>
<HR SIZE="6">
<A NAME="SEC178"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC177"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 16.3 Writing Tests </H2>
<!--docid::SEC178::-->
<P>
In many areas, the GDB tests are already quite comprehensive; you
should be able to copy existing tests to handle new cases.
</P><P>
You should try to use <CODE>gdb_test</CODE> whenever possible, since it
includes cases to handle all the unexpected errors that might happen.
However, it doesn't cost anything to add new test procedures; for
instance, <TT>`gdb.base/exprs.exp'</TT> defines a <CODE>test_expr</CODE> that
calls <CODE>gdb_test</CODE> multiple times.
</P><P>
Only use <CODE>send_gdb</CODE> and <CODE>gdb_expect</CODE> when absolutely
necessary, such as when GDB has several valid responses to a command.
</P><P>
The source language programs do <EM>not</EM> need to be in a consistent
style. Since GDB is used to debug programs written in many different
styles, it's worth having a mix of styles in the testsuite; for
instance, some GDB bugs involving the display of source lines would
never manifest themselves if the programs used GNU coding style
uniformly.
</P><P>
<A NAME="Hints"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 26 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,371 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 26 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Hints</TITLE>
<META NAME="description" CONTENT="GDB Internals: Hints">
<META NAME="keywords" CONTENT="GDB Internals: Hints">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC179"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC178"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC180"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_18.html#SEC184"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 17. Hints </H1>
<!--docid::SEC179::-->
<P>
Check the <TT>`README'</TT> file, it often has useful information that does not
appear anywhere else in the directory.
</P><P>
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_17.html#SEC180">17.1 Getting Started</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting started working on GDB</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdbint_17.html#SEC181">17.2 Debugging GDB with itself</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
</TABLE></BLOCKQUOTE>
<P>
<A NAME="Getting Started"></A>
</P><P>
<HR SIZE="6">
<A NAME="SEC180"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC181"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_18.html#SEC184"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 17.1 Getting Started </H2>
<!--docid::SEC180::-->
<P>
GDB is a large and complicated program, and if you first starting to
work on it, it can be hard to know where to start. Fortunately, if you
know how to go about it, there are ways to figure out what is going on.
</P><P>
This manual, the GDB Internals manual, has information which applies
generally to many parts of GDB.
</P><P>
Information about particular functions or data structures are located in
comments with those functions or data structures. If you run across a
function or a global variable which does not have a comment correctly
explaining what is does, this can be thought of as a bug in GDB; feel
free to submit a bug report, with a suggested comment if you can figure
out what the comment should say. If you find a comment which is
actually wrong, be especially sure to report that.
</P><P>
Comments explaining the function of macros defined in host, target, or
native dependent files can be in several places. Sometimes they are
repeated every place the macro is defined. Sometimes they are where the
macro is used. Sometimes there is a header file which supplies a
default definition of the macro, and the comment is there. This manual
also documents all the available macros.
</P><P>
Start with the header files. Once you have some idea of how
GDB's internal symbol tables are stored (see <TT>`symtab.h'</TT>,
<TT>`gdbtypes.h'</TT>), you will find it much easier to understand the
code which uses and creates those symbol tables.
</P><P>
You may wish to process the information you are getting somehow, to
enhance your understanding of it. Summarize it, translate it to another
language, add some (perhaps trivial or non-useful) feature to GDB, use
the code to predict what a test case would do and write the test case
and verify your prediction, etc. If you are reading code and your eyes
are starting to glaze over, this is a sign you need to use a more active
approach.
</P><P>
Once you have a part of GDB to start with, you can find more
specifically the part you are looking for by stepping through each
function with the <CODE>next</CODE> command. Do not use <CODE>step</CODE> or you
will quickly get distracted; when the function you are stepping through
calls another function try only to get a big-picture understanding
(perhaps using the comment at the beginning of the function being
called) of what it does. This way you can identify which of the
functions being called by the function you are stepping through is the
one which you are interested in. You may need to examine the data
structures generated at each stage, with reference to the comments in
the header files explaining what the data structures are supposed to
look like.
</P><P>
Of course, this same technique can be used if you are just reading the
code, rather than actually stepping through it. The same general
principle applies--when the code you are looking at calls something
else, just try to understand generally what the code being called does,
rather than worrying about all its details.
</P><P>
<A NAME="IDX524"></A>
A good place to start when tracking down some particular area is with
a command which invokes that feature. Suppose you want to know how
single-stepping works. As a GDB user, you know that the
<CODE>step</CODE> command invokes single-stepping. The command is invoked
via command tables (see <TT>`command.h'</TT>); by convention the function
which actually performs the command is formed by taking the name of
the command and adding <SAMP>`_command'</SAMP>, or in the case of an
<CODE>info</CODE> subcommand, <SAMP>`_info'</SAMP>. For example, the <CODE>step</CODE>
command invokes the <CODE>step_command</CODE> function and the <CODE>info
display</CODE> command invokes <CODE>display_info</CODE>. When this convention is
not followed, you might have to use <CODE>grep</CODE> or <KBD>M-x
tags-search</KBD> in emacs, or run GDB on itself and set a
breakpoint in <CODE>execute_command</CODE>.
</P><P>
<A NAME="IDX525"></A>
If all of the above fail, it may be appropriate to ask for information
on <CODE>bug-gdb</CODE>. But <EM>never</EM> post a generic question like "I was
wondering if anyone could give me some tips about understanding
GDB"---if we had some magic secret we would put it in this manual.
Suggestions for improving the manual are always welcome, of course.
</P><P>
<A NAME="Debugging GDB"></A>
</P><P>
<HR SIZE="6">
<A NAME="SEC181"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC180"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC182"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC182"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_18.html#SEC184"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 17.2 Debugging GDB with itself </H2>
<!--docid::SEC181::-->
<P>
If GDB is limping on your machine, this is the preferred way to get it
fully functional. Be warned that in some ancient Unix systems, like
Ultrix 4.2, a program can't be running in one process while it is being
debugged in another. Rather than typing the command <KBD>./gdb
./gdb</KBD>, which works on Suns and such, you can copy <TT>`gdb'</TT> to
<TT>`gdb2'</TT> and then type <KBD>./gdb ./gdb2</KBD>.
</P><P>
When you run GDB in the GDB source directory, it will read a
<TT>`.gdbinit'</TT> file that sets up some simple things to make debugging
gdb easier. The <CODE>info</CODE> command, when executed without a subcommand
in a GDB being debugged by gdb, will pop you back up to the top level
gdb. See <TT>`.gdbinit'</TT> for details.
</P><P>
If you use emacs, you will probably want to do a <CODE>make TAGS</CODE> after
you configure your distribution; this will put the machine dependent
routines for your local machine where they will be accessed first by
<KBD>M-.</KBD>
</P><P>
Also, make sure that you've either compiled GDB with your local cc, or
have run <CODE>fixincludes</CODE> if you are compiling with gcc.
</P><P>
<HR SIZE="6">
<A NAME="SEC182"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC181"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC183"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC183"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_18.html#SEC184"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 17.3 Submitting Patches </H2>
<!--docid::SEC182::-->
<P>
<A NAME="IDX526"></A>
Thanks for thinking of offering your changes back to the community of
GDB users. In general we like to get well designed enhancements.
Thanks also for checking in advance about the best way to transfer the
changes.
</P><P>
The GDB maintainers will only install "cleanly designed" patches.
This manual summarizes what we believe to be clean design for GDB.
</P><P>
If the maintainers don't have time to put the patch in when it arrives,
or if there is any question about a patch, it goes into a large queue
with everyone else's patches and bug reports.
</P><P>
<A NAME="IDX527"></A>
The legal issue is that to incorporate substantial changes requires a
copyright assignment from you and/or your employer, granting ownership
of the changes to the Free Software Foundation. You can get the
standard documents for doing this by sending mail to <CODE>gnu@gnu.org</CODE>
and asking for it. We recommend that people write in "All programs
owned by the Free Software Foundation" as "NAME OF PROGRAM", so that
changes in many programs (not just GDB, but GAS, Emacs, GCC,
etc) can be
contributed with only one piece of legalese pushed through the
bureaucracy and filed with the FSF. We can't start merging changes until
this paperwork is received by the FSF (their rules, which we follow
since we maintain it for them).
</P><P>
Technically, the easiest way to receive changes is to receive each
feature as a small context diff or unidiff, suitable for <CODE>patch</CODE>.
Each message sent to me should include the changes to C code and
header files for a single feature, plus <TT>`ChangeLog'</TT> entries for
each directory where files were modified, and diffs for any changes
needed to the manuals (<TT>`gdb/doc/gdb.texinfo'</TT> or
<TT>`gdb/doc/gdbint.texinfo'</TT>). If there are a lot of changes for a
single feature, they can be split down into multiple messages.
</P><P>
In this way, if we read and like the feature, we can add it to the
sources with a single patch command, do some testing, and check it in.
If you leave out the <TT>`ChangeLog'</TT>, we have to write one. If you leave
out the doc, we have to puzzle out what needs documenting. Etc., etc.
</P><P>
The reason to send each change in a separate message is that we will not
install some of the changes. They'll be returned to you with questions
or comments. If we're doing our job correctly, the message back to you
will say what you have to fix in order to make the change acceptable.
The reason to have separate messages for separate features is so that
the acceptable changes can be installed while one or more changes are
being reworked. If multiple features are sent in a single message, we
tend to not put in the effort to sort out the acceptable changes from
the unacceptable, so none of the features get installed until all are
acceptable.
</P><P>
If this sounds painful or authoritarian, well, it is. But we get a lot
of bug reports and a lot of patches, and many of them don't get
installed because we don't have the time to finish the job that the bug
reporter or the contributor could have done. Patches that arrive
complete, working, and well designed, tend to get installed on the day
they arrive. The others go into a queue and get installed as time
permits, which, since the maintainers have many demands to meet, may not
be for quite some time.
</P><P>
Please send patches directly to
<A HREF="mailto:gdb-patches@sources.redhat.com">the GDB maintainers</A>.
</P><P>
<HR SIZE="6">
<A NAME="SEC183"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC182"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_18.html#SEC184"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_18.html#SEC184"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 17.4 Obsolete Conditionals </H2>
<!--docid::SEC183::-->
<P>
Fragments of old code in GDB sometimes reference or set the following
configuration macros. They should not be used by new code, and old uses
should be removed as those parts of the debugger are otherwise touched.
</P><P>
<DL COMPACT>
<DT><CODE>STACK_END_ADDR</CODE>
<DD>This macro used to define where the end of the stack appeared, for use
in interpreting core file formats that don't record this address in the
core file itself. This information is now configured in BFD, and GDB
gets the info portably from there. The values in GDB's configuration
files should be moved into BFD configuration files (if needed there),
and deleted from all of GDB's config files.
<P>
Any <TT>`<VAR>foo</VAR>-xdep.c'</TT> file that references STACK_END_ADDR
is so old that it has never been converted to use BFD. Now that's old!
</P><P>
</DL>
<P>
<A NAME="GNU Free Documentation License"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_18.html#SEC184"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 26 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,482 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: GNU Free Documentation License</TITLE>
<META NAME="description" CONTENT="GDB Internals: GNU Free Documentation License">
<META NAME="keywords" CONTENT="GDB Internals: GNU Free Documentation License">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC184"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC183"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_18.html#SEC185"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_17.html#SEC179"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> A. GNU Free Documentation License </H1>
<!--docid::SEC184::-->
<center>
Version 1.1, March 2000
</center>
<P>
<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
</pre></td></tr></table><OL>
<LI>
PREAMBLE
<P>
The purpose of this License is to make a manual, textbook, or other
written document "free" in the sense of freedom: to assure everyone
the effective freedom to copy and redistribute it, with or without
modifying it, either commercially or noncommercially. Secondarily,
this License preserves for the author and publisher a way to get
credit for their work, while not being considered responsible for
modifications made by others.
</P><P>
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
</P><P>
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
</P><P>
<LI>
APPLICABILITY AND DEFINITIONS
<P>
This License applies to any manual or other work that contains a
notice placed by the copyright holder saying it can be distributed
under the terms of this License. The "Document", below, refers to any
such manual or work. Any member of the public is a licensee, and is
addressed as "you."
</P><P>
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
</P><P>
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (For example, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
</P><P>
The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License.
</P><P>
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.
</P><P>
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, whose contents can be viewed and edited directly and
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup has been designed to thwart or discourage
subsequent modification by readers is not Transparent. A copy that is
not "Transparent" is called "Opaque."
</P><P>
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML designed for human modification. Opaque formats include
PostScript, PDF, proprietary formats that can be read and edited only
by proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML produced by some word processors for output
purposes only.
</P><P>
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
<LI>
VERBATIM COPYING
<P>
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
</P><P>
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
<LI>
COPYING IN QUANTITY
<P>
If you publish printed copies of the Document numbering more than 100,
and the Document's license notice requires Cover Texts, you must enclose
the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
</P><P>
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
</P><P>
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a publicly-accessible computer-network location containing a complete
Transparent copy of the Document, free of added material, which the
general network-using public has access to download anonymously at no
charge using public-standard network protocols. If you use the latter
option, you must take reasonably prudent steps, when you begin
distribution of Opaque copies in quantity, to ensure that this
Transparent copy will remain thus accessible at the stated location
until at least one year after the last time you distribute an Opaque
copy (directly or through your agents or retailers) of that edition to
the public.
</P><P>
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
<LI>
MODIFICATIONS
<P>
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
</P><P>
A. Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.<BR>
B. List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has less than five).<BR>
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.<BR>
D. Preserve all the copyright notices of the Document.<BR>
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.<BR>
F. Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.<BR>
G. Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.<BR>
H. Include an unaltered copy of this License.<BR>
I. Preserve the section entitled "History", and its title, and add to
it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section entitled "History" in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.<BR>
J. Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the "History" section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.<BR>
K. In any section entitled "Acknowledgements" or "Dedications",
preserve the section's title, and preserve in the section all the
substance and tone of each of the contributor acknowledgements
and/or dedications given therein.<BR>
L. Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.<BR>
M. Delete any section entitled "Endorsements." Such a section
may not be included in the Modified Version.<BR>
N. Do not retitle any existing section as "Endorsements"
or to conflict in title with any Invariant Section.<BR>
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
</P><P>
You may add a section entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
</P><P>
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
</P><P>
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
<LI>
COMBINING DOCUMENTS
<P>
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice.
</P><P>
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
</P><P>
In the combination, you must combine any sections entitled "History"
in the various original documents, forming one section entitled
"History"; likewise combine any sections entitled "Acknowledgements",
and any sections entitled "Dedications." You must delete all sections
entitled "Endorsements."
<LI>
COLLECTIONS OF DOCUMENTS
<P>
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
</P><P>
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
<LI>
AGGREGATION WITH INDEPENDENT WORKS
<P>
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, does not as a whole count as a Modified Version
of the Document, provided no compilation copyright is claimed for the
compilation. Such a compilation is called an "aggregate", and this
License does not apply to the other self-contained works thus compiled
with the Document, on account of their being thus compiled, if they
are not themselves derivative works of the Document.
</P><P>
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one quarter
of the entire aggregate, the Document's Cover Texts may be placed on
covers that surround only the Document within the aggregate.
Otherwise they must appear on covers around the whole aggregate.
<LI>
TRANSLATION
<P>
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License provided that you also include the
original English version of this License. In case of a disagreement
between the translation and the original English version of this
License, the original English version will prevail.
<LI>
TERMINATION
<P>
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
<LI>
FUTURE REVISIONS OF THIS LICENSE
<P>
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.
</P><P>
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
</P><P>
</OL>
<P>
<HR SIZE="6">
<A NAME="SEC185"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_18.html#SEC184"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> ADDENDUM: How to use this License for your documents </H2>
<!--docid::SEC185::-->
<P>
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with the Invariant Sections being <VAR>list their titles</VAR>, with the
Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts being <VAR>list</VAR>.
A copy of the license is included in the section entitled "GNU
Free Documentation License."
</FONT></pre></td></tr></table></P><P>
If you have no Invariant Sections, write "with no Invariant Sections"
instead of saying which ones are invariant. If you have no
Front-Cover Texts, write "no Front-Cover Texts" instead of
"Front-Cover Texts being <VAR>list</VAR>"; likewise for Back-Cover Texts.
</P><P>
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.
</P><P>
<A NAME="Index"></A>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,316 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Index</TITLE>
<META NAME="description" CONTENT="GDB Internals: Index">
<META NAME="keywords" CONTENT="GDB Internals: Index">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC186"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_18.html#SEC185"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_20.html"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> Index </H1>
<!--docid::SEC186::-->
<P>
<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="gdbint_19.html#cp_*" style="text-decoration:none"><b>*</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp__" style="text-decoration:none"><b>_</b></A>
&nbsp;
<BR>
<A HREF="gdbint_19.html#cp_A" style="text-decoration:none"><b>A</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_B" style="text-decoration:none"><b>B</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_C" style="text-decoration:none"><b>C</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_D" style="text-decoration:none"><b>D</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_E" style="text-decoration:none"><b>E</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_F" style="text-decoration:none"><b>F</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_G" style="text-decoration:none"><b>G</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_H" style="text-decoration:none"><b>H</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_I" style="text-decoration:none"><b>I</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_K" style="text-decoration:none"><b>K</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_L" style="text-decoration:none"><b>L</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_M" style="text-decoration:none"><b>M</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_N" style="text-decoration:none"><b>N</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_O" style="text-decoration:none"><b>O</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_P" style="text-decoration:none"><b>P</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_R" style="text-decoration:none"><b>R</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_S" style="text-decoration:none"><b>S</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_T" style="text-decoration:none"><b>T</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_U" style="text-decoration:none"><b>U</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_V" style="text-decoration:none"><b>V</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_W" style="text-decoration:none"><b>W</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_X" style="text-decoration:none"><b>X</b></A>
&nbsp;
</td></tr></table><br><P></P>
<TABLE border=0>
<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_*"></A>*</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX278"><CODE>*ADDRESS_CLASS_TYPE_FLAGS_TO_NAME</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC71">9.4 Address Classes</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX501"><CODE>*gdbarch_data</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC112">13.2 Per-architecture module data</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp__"></A>_</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX136"><CODE>_initialize_language</CODE></A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX112"><CODE>a.out</CODE> format</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC45">6.4.1 a.out</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX51"><CODE>add_cmd</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC17">4.1 Command Interpreter</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX52"><CODE>add_com</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC17">4.1 Command Interpreter</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX53"><CODE>add_setshow_cmd</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC17">4.1 Command Interpreter</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX54"><CODE>add_setshow_cmd_full</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC17">4.1 Command Interpreter</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX95"><CODE>add_symtab_fns</CODE></A></TD><TD valign=top><A HREF="gdbint_6.html#SEC38">6.1 Symbol Reading</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX142">adding a new host</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC64">8.1 Adding a New Host</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX97">adding a symbol-reading module</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC38">6.1 Symbol Reading</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX468">adding a target</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC78">9.11 Adding a New Target</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX126">adding debugging info reader</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC60">6.6 Adding a New Symbol Reader to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX128">adding source language</A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX292"><CODE>ADDITIONAL_OPTION_CASES</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX291"><CODE>ADDITIONAL_OPTION_HANDLER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX290"><CODE>ADDITIONAL_OPTION_HELP</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX293"><CODE>ADDITIONAL_OPTIONS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX294"><CODE>ADDR_BITS_REMOVE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC71">address classes</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC71">9.4 Address Classes</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">address representation</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">address spaces, separate data and code</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX295"><CODE>ADDRESS_CLASS_NAME_TO_TYPE_FLAGS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX279"><CODE>ADDRESS_CLASS_NAME_to_TYPE_FLAGS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC71">9.4 Address Classes</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX296"><CODE>ADDRESS_CLASS_NAME_TO_TYPE_FLAGS_P</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX277"><CODE>ADDRESS_CLASS_TYPE_FLAGS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC71">9.4 Address Classes</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX297"><CODE>ADDRESS_CLASS_TYPE_FLAGS (<VAR>byte_size</VAR>, <VAR>dwarf2_addr_class</VAR>)</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX298"><CODE>ADDRESS_CLASS_TYPE_FLAGS_P</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX299"><CODE>ADDRESS_CLASS_TYPE_FLAGS_TO_NAME</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX300"><CODE>ADDRESS_CLASS_TYPE_FLAGS_TO_NAME_P</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX276"><CODE>ADDRESS_TO_POINTER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX301"><CODE>ADDRESS_TO_POINTER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#SEC6">algorithms</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC6">3. Algorithms</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX158"><CODE>ALIGN_STACK_ON_STARTUP</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX159"><CODE>ALIGN_STACK_ON_STARTUP</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX137"><CODE>allocate_symtab</CODE></A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX510">assumptions about targets</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX472"><CODE>ATTACH_DETACH</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX216"><CODE>ATTR_NORETURN</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX217"><CODE>ATTR_NORETURN</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_B"></A>B</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX302"><CODE>BEFORE_MAIN_LOOP_HOOK</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX303"><CODE>BELIEVE_PCC_PROMOTION</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX304"><CODE>BELIEVE_PCC_PROMOTION_TYPE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_12.html#SEC103">BFD library</A></TD><TD valign=top><A HREF="gdbint_12.html#SEC103">12.1 BFD</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX308"><CODE>BIG_BREAKPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX309"><CODE>BIG_REMOTE_BREAKPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX305"><CODE>BITS_BIG_ENDIAN</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX461"><CODE>BPT_VECTOR</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX462"><CODE>BPT_VECTOR</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX13"><CODE>BREAKPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC8">3.2 Breakpoint Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX306"><CODE>BREAKPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX312"><CODE>BREAKPOINT_FROM_PC</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX9">breakpoints</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC8">3.2 Breakpoint Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_17.html#IDX526"><CODE>bug-gdb</CODE> mailing list</A></TD><TD valign=top><A HREF="gdbint_17.html#SEC180">17.1 Getting Started</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX506">C data types</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC120">13.4.6 C Usage</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX4">call stack frame</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC7">3.1 Frames</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX318"><CODE>CALL_DUMMY</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX319"><CODE>CALL_DUMMY_LOCATION</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX315"><CODE>CALL_DUMMY_P</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX320"><CODE>CALL_DUMMY_STACK_ADJUST</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX321"><CODE>CALL_DUMMY_STACK_ADJUST_P</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX316"><CODE>CALL_DUMMY_WORDS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX413"><CODE>call_function_by_hand</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX322"><CODE>CANNOT_FETCH_REGISTER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX34"><CODE>CANNOT_STEP_HW_WATCHPOINTS</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX323"><CODE>CANNOT_STORE_REGISTER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX195"><CODE>CC_HAS_LONG_LONG</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX196"><CODE>CC_HAS_LONG_LONG</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX264"><CODE>char</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX473"><CODE>CHILD_PREPARE_TO_STORE</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX68"><CODE>cleanup</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX71"><CODE>cleanup</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#SEC111">cleanups</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC111">13.1 Cleanups</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX324"><CODE>CLEAR_DEFERRED_STORES</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX495"><CODE>CLEAR_SOLIB</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX50">CLI</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC17">4.1 Command Interpreter</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">code pointers, word-addressed</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#SEC114">coding standards</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC114">13.4 GDB Coding Standards</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX326"><CODE>COERCE_FLOAT_TO_DOUBLE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX121">COFF debugging info</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC55">6.5.2 COFF</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX113">COFF format</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC46">6.4.2 COFF</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_17.html#IDX525">command implementation</A></TD><TD valign=top><A HREF="gdbint_17.html#SEC180">17.1 Getting Started</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX49">command interpreter</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC17">4.1 Command Interpreter</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX505">comment formatting</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC119">13.4.5 Comments</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#SEC117">compiler warnings</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC117">13.4.3 Compiler Warnings</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX286"><CODE>CONVERT_REGISTER_P</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">9.6 Using Different Register and Memory Data Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX333"><CODE>CONVERT_REGISTER_P</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">converting between pointers and addresses</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX381">converting integers to addresses</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC79">converting targets to multi-arch</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC79">9.12 Converting an existing Target Architecture to Multi-arch</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX5"><CODE>create_new_frame</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC7">3.1 Frames</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX161"><CODE>CRLF_SOURCE_FILES</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX162"><CODE>CRLF_SOURCE_FILES</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX135"><CODE>current_language</CODE></A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_D"></A>D</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">D10V addresses</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX74">data output</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#SEC112">data-pointer, per-architecture/per-module</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC112">13.2 Per-architecture module data</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX334"><CODE>DBX_PARM_SYMBOL_CLASS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX496"><CODE>DEBUG_PTRACE</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_17.html#SEC181">debugging GDB</A></TD><TD valign=top><A HREF="gdbint_17.html#SEC181">17.2 Debugging GDB with itself</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX335"><CODE>DECR_PC_AFTER_BREAK</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX30"><CODE>DECR_PC_AFTER_HW_BREAK</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX336"><CODE>DECR_PC_AFTER_HW_BREAK</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX332"><CODE>default_coerce_float_to_double</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX164"><CODE>DEFAULT_PROMPT</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX165"><CODE>DEFAULT_PROMPT</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX56"><CODE>deprecate_cmd</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC17">4.1 Command Interpreter</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX55">deprecating commands</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC17">4.1 Command Interpreter</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX509">design</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX167"><CODE>DEV_TTY</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX168"><CODE>DEV_TTY</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX519"><CODE>DIRNAME_SEPARATOR</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX337"><CODE>DISABLE_UNSETTABLE_BREAK</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX499"><CODE>discard_cleanups</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC111">13.1 Cleanups</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX498"><CODE>do_cleanups</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC111">13.1 Cleanups</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX325"><CODE>DO_DEFERRED_STORES</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX338"><CODE>DO_REGISTERS_INFO</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX163">DOS text files</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC71">DW_AT_address_class</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC71">9.4 Address Classes</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC71">DW_AT_byte_size</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC71">9.4 Address Classes</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX123">DWARF 1 debugging info</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC57">6.5.4 DWARF 1</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX124">DWARF 2 debugging info</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC58">6.5.5 DWARF 2</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX343"><CODE>DWARF2_REG_TO_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX342"><CODE>DWARF_REG_TO_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="gdbint_19.html#cp_*" style="text-decoration:none"><b>*</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp__" style="text-decoration:none"><b>_</b></A>
&nbsp;
<BR>
<A HREF="gdbint_19.html#cp_A" style="text-decoration:none"><b>A</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_B" style="text-decoration:none"><b>B</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_C" style="text-decoration:none"><b>C</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_D" style="text-decoration:none"><b>D</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_E" style="text-decoration:none"><b>E</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_F" style="text-decoration:none"><b>F</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_G" style="text-decoration:none"><b>G</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_H" style="text-decoration:none"><b>H</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_I" style="text-decoration:none"><b>I</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_K" style="text-decoration:none"><b>K</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_L" style="text-decoration:none"><b>L</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_M" style="text-decoration:none"><b>M</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_N" style="text-decoration:none"><b>N</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_O" style="text-decoration:none"><b>O</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_P" style="text-decoration:none"><b>P</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_R" style="text-decoration:none"><b>R</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_S" style="text-decoration:none"><b>S</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_T" style="text-decoration:none"><b>T</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_U" style="text-decoration:none"><b>U</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_V" style="text-decoration:none"><b>V</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_W" style="text-decoration:none"><b>W</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_X" style="text-decoration:none"><b>X</b></A>
&nbsp;
</td></tr></table><br><HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,214 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Overall Structure</TITLE>
<META NAME="description" CONTENT="GDB Internals: Overall Structure">
<META NAME="keywords" CONTENT="GDB Internals: Overall Structure">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC2"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_1.html#SEC1"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC3"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 2. Overall Structure </H1>
<!--docid::SEC2::-->
<P>
GDB consists of three major subsystems: user interface,
symbol handling (the <EM>symbol side</EM>), and target system handling (the
<EM>target side</EM>).
</P><P>
The user interface consists of several actual interfaces, plus
supporting code.
</P><P>
The symbol side consists of object file readers, debugging info
interpreters, symbol table management, source language expression
parsing, type and value printing.
</P><P>
The target side consists of execution control, stack frame analysis, and
physical target manipulation.
</P><P>
The target side/symbol side division is not formal, and there are a
number of exceptions. For instance, core file support involves symbolic
elements (the basic core file reader is in BFD) and target elements (it
supplies the contents of memory and the values of registers). Instead,
this division is useful for understanding how the minor subsystems
should fit together.
</P><P>
<HR SIZE="6">
<A NAME="SEC3"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC4"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 2.1 The Symbol Side </H2>
<!--docid::SEC3::-->
<P>
The symbolic side of GDB can be thought of as "everything
you can do in GDB without having a live program running".
For instance, you can look at the types of variables, and evaluate
many kinds of expressions.
</P><P>
<HR SIZE="6">
<A NAME="SEC4"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC3"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC5"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC5"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 2.2 The Target Side </H2>
<!--docid::SEC4::-->
<P>
The target side of GDB is the "bits and bytes manipulator".
Although it may make reference to symbolic info here and there, most
of the target side will run with only a stripped executable
available--or even no executable at all, in remote debugging cases.
</P><P>
Operations such as disassembly, stack frame crawls, and register
display, are able to work with no symbolic info at all. In some cases,
such as disassembly, GDB will use symbolic info to present addresses
relative to symbols rather than as raw numbers, but it will work either
way.
</P><P>
<HR SIZE="6">
<A NAME="SEC5"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC4"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 2.3 Configurations </H2>
<!--docid::SEC5::-->
<P>
<A NAME="IDX1"></A>
<A NAME="IDX2"></A>
<EM>Host</EM> refers to attributes of the system where GDB runs.
<EM>Target</EM> refers to the system where the program being debugged
executes. In most cases they are the same machine, in which case a
third type of <EM>Native</EM> attributes come into play.
</P><P>
Defines and include files needed to build on the host are host support.
Examples are tty support, system defined types, host byte order, host
float format.
</P><P>
Defines and information needed to handle the target format are target
dependent. Examples are the stack frame format, instruction set,
breakpoint instruction, registers, and how to set up and tear down the stack
to call a function.
</P><P>
Information that is only needed when the host and target are the same,
is native dependent. One example is Unix child process support; if the
host and target are not the same, doing a fork to start the target
process is a bad idea. The various macros needed for finding the
registers in the <CODE>upage</CODE>, running <CODE>ptrace</CODE>, and such are all
in the native-dependent files.
</P><P>
Another example of native-dependent code is support for features that
are really part of the target environment, but which require
<CODE>#include</CODE> files that are only available on the host system. Core
file handling and <CODE>setjmp</CODE> handling are two common cases.
</P><P>
When you want to make GDB work "native" on a particular machine, you
have to include all three kinds of information.
</P><P>
<A NAME="Algorithms"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,286 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 26 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Index: E -- H</TITLE>
<META NAME="description" CONTENT="GDB Internals: Index: E -- H">
<META NAME="keywords" CONTENT="GDB Internals: Index: E -- H">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="gdbint_20.html"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_21.html"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2 ALIGN="Left">Index: E -- H</H2>
<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="gdbint_19.html#cp_*" style="text-decoration:none"><b>*</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp__" style="text-decoration:none"><b>_</b></A>
&nbsp;
<BR>
<A HREF="gdbint_19.html#cp_A" style="text-decoration:none"><b>A</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_B" style="text-decoration:none"><b>B</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_C" style="text-decoration:none"><b>C</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_D" style="text-decoration:none"><b>D</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_E" style="text-decoration:none"><b>E</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_F" style="text-decoration:none"><b>F</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_G" style="text-decoration:none"><b>G</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_H" style="text-decoration:none"><b>H</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_I" style="text-decoration:none"><b>I</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_K" style="text-decoration:none"><b>K</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_L" style="text-decoration:none"><b>L</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_M" style="text-decoration:none"><b>M</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_N" style="text-decoration:none"><b>N</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_O" style="text-decoration:none"><b>O</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_P" style="text-decoration:none"><b>P</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_R" style="text-decoration:none"><b>R</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_S" style="text-decoration:none"><b>S</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_T" style="text-decoration:none"><b>T</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_U" style="text-decoration:none"><b>U</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_V" style="text-decoration:none"><b>V</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_W" style="text-decoration:none"><b>W</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_X" style="text-decoration:none"><b>X</b></A>
&nbsp;
</td></tr></table><br><P></P>
<TABLE border=0>
<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX122">ECOFF debugging info</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC56">6.5.3 Mips debug (Third Eye)</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX114">ECOFF format</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC47">6.4.3 ECOFF</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX343"><CODE>ECOFF_REG_TO_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX117">ELF format</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC50">6.4.6 ELF</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX344"><CODE>END_OF_TEXT_DEFAULT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX132"><CODE>evaluate_subexp</CODE></A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX131">expression evaluation routines</A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX129">expression parser</A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX273"><CODE>extract_address</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX345"><CODE>EXTRACT_RETURN_VALUE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX346"><CODE>EXTRACT_STRUCT_VALUE_ADDRESS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX347"><CODE>EXTRACT_STRUCT_VALUE_ADDRESS_P</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX269"><CODE>extract_typed_address</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_F"></A>F</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX170"><CODE>FCLOSE_PROVIDED</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX171"><CODE>FCLOSE_PROVIDED</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX470"><CODE>fetch_core_registers</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC96">11.1 Native core file Support</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX473"><CODE>FETCH_INFERIOR_REGISTERS</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX73">field output functions</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX513">file names, portability</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX517"><CODE>FILENAME_CMP</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX474"><CODE>FILES_INFO_HOOK</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX107"><CODE>find_pc_function</CODE></A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX108"><CODE>find_pc_line</CODE></A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX94"><CODE>find_sym_fns</CODE></A></TD><TD valign=top><A HREF="gdbint_6.html#SEC38">6.1 Symbol Reading</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX105">finding a symbol</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX247">fine-tuning <CODE>gdbarch</CODE> structure</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX328"><CODE>float</CODE> arguments</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX348"><CODE>FLOAT_INFO</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX172"><CODE>FOPEN_RB</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX173"><CODE>FOPEN_RB</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX475"><CODE>FP0_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX349"><CODE>FP_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX3">frame</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC7">3.1 Frames</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX8">frame chain</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC7">3.1 Frames</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX7">frame pointer register</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC7">3.1 Frames</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX351"><CODE>frame_align</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX352"><CODE>FRAME_ARGS_ADDRESS_CORRECT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX353"><CODE>FRAME_CHAIN</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX354"><CODE>FRAME_CHAIN_VALID</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX6"><CODE>FRAME_FP</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC7">3.1 Frames</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX355"><CODE>FRAME_INIT_SAVED_REGS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX356"><CODE>FRAME_NUM_ARGS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX357"><CODE>FRAME_SAVED_PC</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX350"><CODE>FRAMELESS_FUNCTION_INVOCATION</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX99">full symbol table</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#SEC121">function prototypes</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC121">13.4.7 Function Prototypes</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX506">function usage</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC120">13.4.6 C Usage</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX358"><CODE>FUNCTION_EPILOGUE_SIZE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX359"><CODE>FUNCTION_START_OFFSET</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX110">fundamental types</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC41">Fundamental Types (e.g., <CODE>FT_VOID</CODE>, <CODE>FT_BOOLEAN</CODE>).</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_G"></A>G</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX360"><CODE>GCC2_COMPILED_FLAG_SYMBOL</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX361"><CODE>GCC_COMPILED_FLAG_SYMBOL</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX362"><CODE>GDB_MULTI_ARCH</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX267"><CODE>gdb_osabi</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX263"><CODE>GDB_OSABI_ARM_APCS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX261"><CODE>GDB_OSABI_ARM_EABI_V1</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX262"><CODE>GDB_OSABI_ARM_EABI_V2</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX254"><CODE>GDB_OSABI_FREEBSD_AOUT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX255"><CODE>GDB_OSABI_FREEBSD_ELF</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX259"><CODE>GDB_OSABI_GO32</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX250"><CODE>GDB_OSABI_HURD</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX253"><CODE>GDB_OSABI_LINUX</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX256"><CODE>GDB_OSABI_NETBSD_AOUT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX257"><CODE>GDB_OSABI_NETBSD_ELF</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX260"><CODE>GDB_OSABI_NETWARE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX252"><CODE>GDB_OSABI_OSF1</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX251"><CODE>GDB_OSABI_SOLARIS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX249"><CODE>GDB_OSABI_SVR4</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX248"><CODE>GDB_OSABI_UNKNOWN</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX258"><CODE>GDB_OSABI_WINCE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX363"><CODE>GDB_TARGET_IS_HPPA</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX499"><CODE>gdbarch_data</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC112">13.2 Per-architecture module data</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX372"><CODE>gdbarch_in_function_epilogue_p</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX268"><CODE>gdbarch_init_osabi</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX265"><CODE>gdbarch_register_osabi</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX266"><CODE>gdbarch_register_osabi_sniffer</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX148"><CODE>GDBINIT_FILENAME</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX149"><CODE>GDBINIT_FILENAME</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX220">generic dummy frames</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX144">generic host support</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC65">Generic Host Support Files</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX15"><CODE>GET_LONGJMP_TARGET</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC13">3.7 Longjmp Support</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX364"><CODE>GET_LONGJMP_TARGET</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX476"><CODE>GET_LONGJMP_TARGET</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX365"><CODE>GET_SAVED_REGISTER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX366"><CODE>get_saved_register</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX174"><CODE>GETENV_PROVIDED</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX175"><CODE>GETENV_PROVIDED</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_H"></A>H</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX10">hardware breakpoints</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC8">3.2 Breakpoint Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX16">hardware watchpoints</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX33"><CODE>HAVE_CONTINUABLE_WATCHPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX514"><CODE>HAVE_DOS_BASED_FILE_SYSTEM</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX200"><CODE>HAVE_LONG_DOUBLE</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX201"><CODE>HAVE_LONG_DOUBLE</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX176"><CODE>HAVE_MMAP</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX177"><CODE>HAVE_MMAP</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX32"><CODE>HAVE_NONSTEPPABLE_WATCHPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX31"><CODE>HAVE_STEPPABLE_WATCHPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX179"><CODE>HAVE_TERMIO</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX180"><CODE>HAVE_TERMIO</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_2.html#IDX1">host</A></TD><TD valign=top><A HREF="gdbint_2.html#SEC5">2.3 Configurations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX143">host, adding</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC64">8.1 Adding a New Host</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="gdbint_19.html#cp_*" style="text-decoration:none"><b>*</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp__" style="text-decoration:none"><b>_</b></A>
&nbsp;
<BR>
<A HREF="gdbint_19.html#cp_A" style="text-decoration:none"><b>A</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_B" style="text-decoration:none"><b>B</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_C" style="text-decoration:none"><b>C</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_D" style="text-decoration:none"><b>D</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_E" style="text-decoration:none"><b>E</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_F" style="text-decoration:none"><b>F</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_G" style="text-decoration:none"><b>G</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_H" style="text-decoration:none"><b>H</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_I" style="text-decoration:none"><b>I</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_K" style="text-decoration:none"><b>K</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_L" style="text-decoration:none"><b>L</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_M" style="text-decoration:none"><b>M</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_N" style="text-decoration:none"><b>N</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_O" style="text-decoration:none"><b>O</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_P" style="text-decoration:none"><b>P</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_R" style="text-decoration:none"><b>R</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_S" style="text-decoration:none"><b>S</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_T" style="text-decoration:none"><b>T</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_U" style="text-decoration:none"><b>U</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_V" style="text-decoration:none"><b>V</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_W" style="text-decoration:none"><b>W</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_X" style="text-decoration:none"><b>X</b></A>
&nbsp;
</td></tr></table><br><HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 26 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,294 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 26 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Index: I -- O</TITLE>
<META NAME="description" CONTENT="GDB Internals: Index: I -- O">
<META NAME="keywords" CONTENT="GDB Internals: Index: I -- O">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="gdbint_21.html"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_20.html"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_22.html"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2 ALIGN="Left">Index: I -- O</H2>
<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="gdbint_19.html#cp_*" style="text-decoration:none"><b>*</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp__" style="text-decoration:none"><b>_</b></A>
&nbsp;
<BR>
<A HREF="gdbint_19.html#cp_A" style="text-decoration:none"><b>A</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_B" style="text-decoration:none"><b>B</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_C" style="text-decoration:none"><b>C</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_D" style="text-decoration:none"><b>D</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_E" style="text-decoration:none"><b>E</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_F" style="text-decoration:none"><b>F</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_G" style="text-decoration:none"><b>G</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_H" style="text-decoration:none"><b>H</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_I" style="text-decoration:none"><b>I</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_K" style="text-decoration:none"><b>K</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_L" style="text-decoration:none"><b>L</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_M" style="text-decoration:none"><b>M</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_N" style="text-decoration:none"><b>N</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_O" style="text-decoration:none"><b>O</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_P" style="text-decoration:none"><b>P</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_R" style="text-decoration:none"><b>R</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_S" style="text-decoration:none"><b>S</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_T" style="text-decoration:none"><b>T</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_U" style="text-decoration:none"><b>U</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_V" style="text-decoration:none"><b>V</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_W" style="text-decoration:none"><b>W</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_X" style="text-decoration:none"><b>X</b></A>
&nbsp;
</td></tr></table><br><P></P>
<TABLE border=0>
<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX48"><CODE>i386_cleanup_dregs</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX40"><CODE>I386_DR_LOW_GET_STATUS</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX39"><CODE>I386_DR_LOW_RESET_ADDR</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX38"><CODE>I386_DR_LOW_SET_ADDR</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX37"><CODE>I386_DR_LOW_SET_CONTROL</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX45"><CODE>i386_insert_hw_breakpoint</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX43"><CODE>i386_insert_watchpoint</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX41"><CODE>i386_region_ok_for_watchpoint</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX46"><CODE>i386_remove_hw_breakpoint</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX44"><CODE>i386_remove_watchpoint</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX47"><CODE>i386_stopped_by_hwbp</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX42"><CODE>i386_stopped_data_address</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX36"><CODE>I386_USE_GENERIC_WATCHPOINTS</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX367"><CODE>IBM6000_TARGET</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX375"><CODE>IN_SOLIB_CALL_TRAMPOLINE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX377"><CODE>IN_SOLIB_DYNSYM_RESOLVE_CODE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX376"><CODE>IN_SOLIB_RETURN_TRAMPOLINE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX369"><CODE>INIT_EXTRA_FRAME_INFO</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX370"><CODE>INIT_FRAME_PC</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX371"><CODE>INNER_THAN</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX26">insert or remove hardware breakpoint</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX181"><CODE>INT_MAX</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX182"><CODE>INT_MAX</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX183"><CODE>INT_MIN</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX184"><CODE>INT_MIN</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX379"><CODE>INTEGER_TO_ADDRESS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX516"><CODE>IS_ABSOLUTE_PATH</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX515"><CODE>IS_DIR_SEPARATOR</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX381"><CODE>IS_TRAPPED_INTERNALVAR</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX191"><CODE>ISATTY</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX192"><CODE>ISATTY</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX72">item output functions</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_K"></A>K</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX477"><CODE>KERNEL_U_ADDR</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX478"><CODE>KERNEL_U_ADDR_BSD</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX479"><CODE>KERNEL_U_ADDR_HPUX</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_L"></A>L</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX208"><CODE>L_SET</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX209"><CODE>L_SET</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX130">language parser</A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX127">language support</A></TD><TD valign=top><A HREF="gdbint_7.html#SEC61">7. Language Support</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_17.html#IDX527">legal papers for code contributions</A></TD><TD valign=top><A HREF="gdbint_17.html#SEC182">17.3 Submitting Patches</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX134"><CODE>length_of_subexp</CODE></A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_5.html#SEC28"><CODE>libgdb</CODE></A></TD><TD valign=top><A HREF="gdbint_5.html#SEC28">5.1 libgdb 1.0</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_5.html#SEC29"><CODE>libgdb</CODE></A></TD><TD valign=top><A HREF="gdbint_5.html#SEC29">5.2 libgdb 2.0</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#SEC113">line wrap in output</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC113">13.3 Wrapping Output Lines</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX242"><CODE>lint</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX243"><CODE>lint</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX58">list output functions</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX307"><CODE>LITTLE_BREAKPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX310"><CODE>LITTLE_REMOTE_BREAKPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX197"><CODE>long long</CODE> data type</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX185"><CODE>LONG_MAX</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX186"><CODE>LONG_MAX</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX193"><CODE>LONGEST</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX194"><CODE>LONGEST</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX14"><CODE>longjmp</CODE> debugging</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC13">3.7 Longjmp Support</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX109">lookup_symbol</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX206"><CODE>LSEEK_NOT_LINEAR</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX207"><CODE>LSEEK_NOT_LINEAR</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_M"></A>M</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX496"><CODE>make_cleanup</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC111">13.1 Cleanups</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_14.html#IDX521">making a distribution tarball</A></TD><TD valign=top><A HREF="gdbint_14.html#SEC127">14.1 Configuring GDB for Release</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_15.html#SEC129">making a new release of gdb</A></TD><TD valign=top><A HREF="gdbint_15.html#SEC129">15. Releasing GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">memory representation</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">9.6 Using Different Register and Memory Data Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX314"><CODE>MEMORY_INSERT_BREAKPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX313"><CODE>MEMORY_REMOVE_BREAKPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX102">minimal symbol table</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX103">minsymtabs</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX223"><CODE>mmalloc</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX178"><CODE>mmap</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX210"><CODE>MMAP_BASE_ADDRESS</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX211"><CODE>MMAP_BASE_ADDRESS</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX212"><CODE>MMAP_INCREMENT</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX213"><CODE>MMAP_INCREMENT</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX226"><CODE>mmcheck</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX227"><CODE>MMCHECK_FORCE</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX228"><CODE>MMCHECK_FORCE</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#SEC112">multi-arch data</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC112">13.2 Per-architecture module data</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX464"><CODE>NAME_OF_MALLOC</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX465"><CODE>NAME_OF_MALLOC</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX466"><CODE>NAME_OF_MALLOC</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX469"><CODE>NATDEPFILES</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC95">11. Native Debugging</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">native conditionals</A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#SEC96">native core files</A></TD><TD valign=top><A HREF="gdbint_11.html#SEC96">11.1 Native core file Support</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#SEC95">native debugging</A></TD><TD valign=top><A HREF="gdbint_11.html#SEC95">11. Native Debugging</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX382"><CODE>NEED_TEXT_START_END</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX61">nesting level in <CODE>ui_out</CODE> functions</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX119">Netware Loadable Module format</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC52">6.4.8 Other File Formats</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX383"><CODE>NO_HIF_SUPPORT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX224"><CODE>NO_MMCHECK</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX225"><CODE>NO_MMCHECK</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX229"><CODE>NO_SIGINTERRUPT</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX230"><CODE>NO_SIGINTERRUPT</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX150"><CODE>NO_STD_REGS</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX151"><CODE>NO_STD_REGS</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX152"><CODE>NO_SYS_FILE</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX153"><CODE>NO_SYS_FILE</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX214"><CODE>NORETURN</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX215"><CODE>NORETURN</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX404"><CODE>NPC_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_O"></A>O</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#SEC44">object file formats</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC44">6.4 Object File Formats</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_17.html#SEC183">obsolete code</A></TD><TD valign=top><A HREF="gdbint_17.html#SEC183">17.4 Obsolete Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX480"><CODE>ONE_PROCESS_WRITETEXT</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX139"><CODE>op_print_tab</CODE></A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_12.html#SEC104">opcodes library</A></TD><TD valign=top><A HREF="gdbint_12.html#SEC104">12.2 opcodes</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">OS ABI variants</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX459"><CODE>OS9K_VARIABLES_INSIDE_BLOCK</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="gdbint_19.html#cp_*" style="text-decoration:none"><b>*</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp__" style="text-decoration:none"><b>_</b></A>
&nbsp;
<BR>
<A HREF="gdbint_19.html#cp_A" style="text-decoration:none"><b>A</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_B" style="text-decoration:none"><b>B</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_C" style="text-decoration:none"><b>C</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_D" style="text-decoration:none"><b>D</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_E" style="text-decoration:none"><b>E</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_F" style="text-decoration:none"><b>F</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_G" style="text-decoration:none"><b>G</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_H" style="text-decoration:none"><b>H</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_I" style="text-decoration:none"><b>I</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_K" style="text-decoration:none"><b>K</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_L" style="text-decoration:none"><b>L</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_M" style="text-decoration:none"><b>M</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_N" style="text-decoration:none"><b>N</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_O" style="text-decoration:none"><b>O</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_P" style="text-decoration:none"><b>P</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_R" style="text-decoration:none"><b>R</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_S" style="text-decoration:none"><b>S</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_T" style="text-decoration:none"><b>T</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_U" style="text-decoration:none"><b>U</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_V" style="text-decoration:none"><b>V</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_W" style="text-decoration:none"><b>W</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_X" style="text-decoration:none"><b>X</b></A>
&nbsp;
</td></tr></table><br><HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 26 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,331 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 26 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Index: P -- S</TITLE>
<META NAME="description" CONTENT="GDB Internals: Index: P -- S">
<META NAME="keywords" CONTENT="GDB Internals: Index: P -- S">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="gdbint_22.html"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_21.html"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_23.html"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2 ALIGN="Left">Index: P -- S</H2>
<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="gdbint_19.html#cp_*" style="text-decoration:none"><b>*</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp__" style="text-decoration:none"><b>_</b></A>
&nbsp;
<BR>
<A HREF="gdbint_19.html#cp_A" style="text-decoration:none"><b>A</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_B" style="text-decoration:none"><b>B</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_C" style="text-decoration:none"><b>C</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_D" style="text-decoration:none"><b>D</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_E" style="text-decoration:none"><b>E</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_F" style="text-decoration:none"><b>F</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_G" style="text-decoration:none"><b>G</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_H" style="text-decoration:none"><b>H</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_I" style="text-decoration:none"><b>I</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_K" style="text-decoration:none"><b>K</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_L" style="text-decoration:none"><b>L</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_M" style="text-decoration:none"><b>M</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_N" style="text-decoration:none"><b>N</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_O" style="text-decoration:none"><b>O</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_P" style="text-decoration:none"><b>P</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_R" style="text-decoration:none"><b>R</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_S" style="text-decoration:none"><b>S</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_T" style="text-decoration:none"><b>T</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_U" style="text-decoration:none"><b>U</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_V" style="text-decoration:none"><b>V</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_W" style="text-decoration:none"><b>W</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_X" style="text-decoration:none"><b>X</b></A>
&nbsp;
</td></tr></table><br><P></P>
<TABLE border=0>
<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_P"></A>P</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX405"><CODE>PARM_BOUNDARY</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX140"><CODE>parse_exp_1</CODE></A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX104">partial symbol table</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX330">passing arguments to prototyped functions</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX399"><CODE>PC_IN_CALL_DUMMY</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX400"><CODE>PC_IN_SIGTRAMP</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX402"><CODE>PC_LOAD_SEGMENT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX403"><CODE>PC_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX398"><CODE>PCC_SOL_BROKEN</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX116">PE-COFF format</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC49">6.4.5 PE</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#SEC112">per-architecture module data</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC112">13.2 Per-architecture module data</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">pointer representation</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX275"><CODE>POINTER_TO_ADDRESS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX384"><CODE>POINTER_TO_ADDRESS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX411"><CODE>POP_FRAME</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX510">portability</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX512">portable file name handling</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_14.html#SEC126">porting to new machines</A></TD><TD valign=top><A HREF="gdbint_14.html#SEC126">14. Porting GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX133"><CODE>prefixify_subexp</CODE></A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX481"><CODE>PREPARE_TO_PROCEED</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_14.html#IDX520">preparing a release</A></TD><TD valign=top><A HREF="gdbint_14.html#SEC127">14.1 Configuring GDB for Release</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX338"><CODE>PRINT_FLOAT_INFO</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX406"><CODE>PRINT_REGISTER_HOOK</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX339"><CODE>print_registers_info</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX138"><CODE>print_subexp</CODE></A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX407"><CODE>PRINT_TYPELESS_INTEGER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX340"><CODE>PRINT_VECTOR_INFO</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX202"><CODE>PRINTF_HAS_LONG_DOUBLE</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX203"><CODE>PRINTF_HAS_LONG_DOUBLE</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX198"><CODE>PRINTF_HAS_LONG_LONG</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX199"><CODE>PRINTF_HAS_LONG_LONG</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX482"><CODE>PROC_NAME_FMT</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX408"><CODE>PROCESS_LINENUMBER_HOOK</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX11">program counter</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC8">3.2 Breakpoint Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX409"><CODE>PROLOGUE_FIRSTLINE_OVERLAP</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX327">promotion to <CODE>double</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX166">prompt</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX329">prototyped functions, passing arguments to</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX410"><CODE>PS_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX101">psymtabs</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX484"><CODE>PTRACE_ARG3_TYPE</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX483"><CODE>PTRACE_FP_BUG</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX414"><CODE>PUSH_ARGUMENTS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX415"><CODE>PUSH_DUMMY_FRAME</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">raw register representation</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">9.5 Raw and Virtual Register Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX453"><CODE>read_fp</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX449"><CODE>read_pc</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX451"><CODE>read_sp</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX92">reading of symbols</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC38">6.1 Symbol Reading</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX419"><CODE>REG_STRUCT_HAS_ADDR</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">register data formats, converting</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">9.6 Using Different Register and Memory Data Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">register representation</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">9.6 Using Different Register and Memory Data Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX416"><CODE>REGISTER_BYTES</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX285"><CODE>REGISTER_CONVERT_TO_RAW</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">9.5 Raw and Virtual Register Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX391"><CODE>REGISTER_CONVERT_TO_RAW</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX289"><CODE>REGISTER_CONVERT_TO_TYPE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">9.6 Using Different Register and Memory Data Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX284"><CODE>REGISTER_CONVERT_TO_VIRTUAL</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">9.5 Raw and Virtual Register Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX390"><CODE>REGISTER_CONVERT_TO_VIRTUAL</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX280"><CODE>REGISTER_CONVERTIBLE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">9.5 Raw and Virtual Register Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX385"><CODE>REGISTER_CONVERTIBLE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX417"><CODE>REGISTER_NAME</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX418"><CODE>REGISTER_NAMES</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX281"><CODE>REGISTER_RAW_SIZE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">9.5 Raw and Virtual Register Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX387"><CODE>REGISTER_RAW_SIZE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX287"><CODE>REGISTER_TO_VALUE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">9.6 Using Different Register and Memory Data Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX386"><CODE>REGISTER_TO_VALUE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX485"><CODE>REGISTER_U_ADDR</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX282"><CODE>REGISTER_VIRTUAL_SIZE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">9.5 Raw and Virtual Register Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX388"><CODE>REGISTER_VIRTUAL_SIZE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX389"><CODE>REGISTER_VIRTUAL_TYPE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_12.html#SEC108">regular expressions library</A></TD><TD valign=top><A HREF="gdbint_12.html#SEC108">12.6 gnu-regex</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX145">remote debugging support</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC65">Generic Host Support Files</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX462"><CODE>REMOTE_BPT_VECTOR</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX463"><CODE>REMOTE_BPT_VECTOR</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX311"><CODE>REMOTE_BREAKPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">representations, raw and virtual registers</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">9.5 Raw and Virtual Register Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">representations, register and memory</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">9.6 Using Different Register and Memory Data Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_1.html#SEC1">requirements for GDB</A></TD><TD valign=top><A HREF="gdbint_1.html#SEC1">1. Requirements</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX413"><CODE>return_command</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX392"><CODE>RETURN_VALUE_ON_STACK</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX393">returning structures by value</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_16.html#IDX522">running the test suite</A></TD><TD valign=top><A HREF="gdbint_16.html#SEC176">16.1 Using the Testsuite</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_S"></A>S</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX420"><CODE>SAVE_DUMMY_FRAME_TOS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX204"><CODE>SCANF_HAS_LONG_DOUBLE</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX205"><CODE>SCANF_HAS_LONG_DOUBLE</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX421"><CODE>SDB_REG_TO_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX98">secondary symbol file</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC38">6.1 Symbol Reading</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX232"><CODE>SEEK_CUR</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX233"><CODE>SEEK_CUR</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX234"><CODE>SEEK_SET</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX235"><CODE>SEEK_SET</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">separate data and code address spaces</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX146">serial line support</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC65">Generic Host Support Files</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX501"><CODE>set_gdbarch_data</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC112">13.2 Per-architecture module data</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX486"><CODE>SHELL_COMMAND_CONCAT</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX487"><CODE>SHELL_FILE</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX231"><CODE>siginterrupt</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX401">sigtramp</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX374"><CODE>SIGTRAMP_END</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX373"><CODE>SIGTRAMP_START</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX154"><CODE>SIGWINCH_HANDLER</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX155"><CODE>SIGWINCH_HANDLER</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX156"><CODE>SIGWINCH_HANDLER_BODY</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX157"><CODE>SIGWINCH_HANDLER_BODY</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX317"><CODE>SIZEOF_CALL_DUMMY_WORDS</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX422"><CODE>SKIP_PERMANENT_BREAKPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX423"><CODE>SKIP_PROLOGUE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX378"><CODE>SKIP_SOLIB_RESOLVER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX424"><CODE>SKIP_TRAMPOLINE_CODE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX519"><CODE>SLASH_STRING</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX12">software breakpoints</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC8">3.2 Breakpoint Handling</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX17">software watchpoints</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX396"><CODE>SOFTWARE_SINGLE_STEP</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX395"><CODE>SOFTWARE_SINGLE_STEP_P</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX397"><CODE>SOFUN_ADDRESS_MAYBE_MISSING</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX488"><CODE>SOLIB_ADD</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX489"><CODE>SOLIB_CREATE_INFERIOR_HOOK</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX125">SOM debugging info</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC59">6.5.6 SOM</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX118">SOM format</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC51">6.4.7 SOM</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX503">source code formatting</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC118">13.4.4 Formatting</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX425"><CODE>SP_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">spaces, separate data and code address</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX426"><CODE>STAB_REG_TO_REGNUM</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX120">stabs debugging info</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC54">6.5.1 stabs</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX160">stack alignment</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX427"><CODE>STACK_ALIGN</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX331"><CODE>standard_coerce_float_to_double</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX490"><CODE>START_INFERIOR_TRAPS_EXPECTED</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX428"><CODE>STEP_SKIPS_DELAY</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX236"><CODE>STOP_SIGNAL</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX237"><CODE>STOP_SIGNAL</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX35"><CODE>STOPPED_BY_WATCHPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX274"><CODE>store_address</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX429"><CODE>STORE_RETURN_VALUE</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX270"><CODE>store_typed_address</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC73"><CODE>struct value</CODE>, converting register contents to</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">9.6 Using Different Register and Memory Data Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX394">structures, returning by value</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_17.html#IDX526">submitting patches</A></TD><TD valign=top><A HREF="gdbint_17.html#SEC182">17.3 Submitting Patches</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX430"><CODE>SUN_FIXED_LBRAC_BUG</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX491"><CODE>SVR4_SHARED_LIBS</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX96"><CODE>sym_fns</CODE> structure</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC38">6.1 Symbol Reading</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX93">symbol files</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC38">6.1 Symbol Reading</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX106">symbol lookup</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX91">symbol reading</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC38">6.1 Symbol Reading</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX431"><CODE>SYMBOL_RELOADING_DEFAULT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX368"><CODE>SYMBOLS_CAN_START_WITH_DOLLAR</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX100">symtabs</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX511">system dependencies</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="gdbint_19.html#cp_*" style="text-decoration:none"><b>*</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp__" style="text-decoration:none"><b>_</b></A>
&nbsp;
<BR>
<A HREF="gdbint_19.html#cp_A" style="text-decoration:none"><b>A</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_B" style="text-decoration:none"><b>B</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_C" style="text-decoration:none"><b>C</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_D" style="text-decoration:none"><b>D</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_E" style="text-decoration:none"><b>E</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_F" style="text-decoration:none"><b>F</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_G" style="text-decoration:none"><b>G</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_H" style="text-decoration:none"><b>H</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_I" style="text-decoration:none"><b>I</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_K" style="text-decoration:none"><b>K</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_L" style="text-decoration:none"><b>L</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_M" style="text-decoration:none"><b>M</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_N" style="text-decoration:none"><b>N</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_O" style="text-decoration:none"><b>O</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_P" style="text-decoration:none"><b>P</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_R" style="text-decoration:none"><b>R</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_S" style="text-decoration:none"><b>S</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_T" style="text-decoration:none"><b>T</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_U" style="text-decoration:none"><b>U</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_V" style="text-decoration:none"><b>V</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_W" style="text-decoration:none"><b>W</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_X" style="text-decoration:none"><b>X</b></A>
&nbsp;
</td></tr></table><br><HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 26 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,290 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 26 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Index: T -- X</TITLE>
<META NAME="description" CONTENT="GDB Internals: Index: T -- X">
<META NAME="keywords" CONTENT="GDB Internals: Index: T -- X">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="gdbint_23.html"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_22.html"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2 ALIGN="Left">Index: T -- X</H2>
<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="gdbint_19.html#cp_*" style="text-decoration:none"><b>*</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp__" style="text-decoration:none"><b>_</b></A>
&nbsp;
<BR>
<A HREF="gdbint_19.html#cp_A" style="text-decoration:none"><b>A</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_B" style="text-decoration:none"><b>B</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_C" style="text-decoration:none"><b>C</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_D" style="text-decoration:none"><b>D</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_E" style="text-decoration:none"><b>E</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_F" style="text-decoration:none"><b>F</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_G" style="text-decoration:none"><b>G</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_H" style="text-decoration:none"><b>H</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_I" style="text-decoration:none"><b>I</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_K" style="text-decoration:none"><b>K</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_L" style="text-decoration:none"><b>L</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_M" style="text-decoration:none"><b>M</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_N" style="text-decoration:none"><b>N</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_O" style="text-decoration:none"><b>O</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_P" style="text-decoration:none"><b>P</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_R" style="text-decoration:none"><b>R</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_S" style="text-decoration:none"><b>S</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_T" style="text-decoration:none"><b>T</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_U" style="text-decoration:none"><b>U</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_V" style="text-decoration:none"><b>V</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_W" style="text-decoration:none"><b>W</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_X" style="text-decoration:none"><b>X</b></A>
&nbsp;
</td></tr></table><br><P></P>
<TABLE border=0>
<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_T"></A>T</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX59">table output functions</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_2.html#IDX2">target</A></TD><TD valign=top><A HREF="gdbint_2.html#SEC5">2.3 Configurations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX246">target architecture definition</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC67">9. Target Architecture Definition</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_10.html#SEC88">target vector</A></TD><TD valign=top><A HREF="gdbint_10.html#SEC88">10. Target Vector Definition</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX19"><CODE>TARGET_CAN_USE_HARDWARE_WATCHPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX432"><CODE>TARGET_CHAR_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX433"><CODE>TARGET_CHAR_SIGNED</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX434"><CODE>TARGET_COMPLEX_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX22"><CODE>TARGET_DISABLE_HW_WATCHPOINTS</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX435"><CODE>TARGET_DOUBLE_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX436"><CODE>TARGET_DOUBLE_COMPLEX_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX23"><CODE>TARGET_ENABLE_HW_WATCHPOINTS</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX437"><CODE>TARGET_FLOAT_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX18"><CODE>TARGET_HAS_HARDWARE_WATCHPOINTS</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX28"><CODE>target_insert_hw_breakpoint</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX24"><CODE>target_insert_watchpoint</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX438"><CODE>TARGET_INT_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX439"><CODE>TARGET_LONG_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX440"><CODE>TARGET_LONG_DOUBLE_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX441"><CODE>TARGET_LONG_LONG_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX455"><CODE>TARGET_PRINT_INSN</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX442"><CODE>TARGET_PTR_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX448"><CODE>TARGET_READ_FP</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX444"><CODE>TARGET_READ_PC</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX446"><CODE>TARGET_READ_SP</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX20"><CODE>TARGET_REGION_OK_FOR_HW_WATCHPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX21"><CODE>TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX27"><CODE>target_remove_hw_breakpoint</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX25"><CODE>target_remove_watchpoint</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX443"><CODE>TARGET_SHORT_BIT</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#IDX29"><CODE>target_stopped_data_address</CODE></A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX454"><CODE>TARGET_VIRTUAL_FRAME_POINTER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX445"><CODE>TARGET_WRITE_PC</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX447"><CODE>TARGET_WRITE_SP</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX147">TCP remote support</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC65">Generic Host Support Files</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX468"><CODE>TDEPFILES</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC78">9.11 Adding a New Target</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX169">terminal device</A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_16.html#SEC175">test suite</A></TD><TD valign=top><A HREF="gdbint_16.html#SEC175">16. Testsuite</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_16.html#IDX523">test suite organization</A></TD><TD valign=top><A HREF="gdbint_16.html#SEC177">16.2 Testsuite Organization</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_7.html#IDX141">trimming language-dependent code</A></TD><TD valign=top><A HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX60">tuple output functions</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX283"><CODE>type</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">9.5 Raw and Virtual Register Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX111">type codes</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC42">Type Codes (e.g., <CODE>TYPE_CODE_PTR</CODE>, <CODE>TYPE_CODE_ARRAY</CODE>).</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX507">types</A></TD><TD valign=top><A HREF="gdbint_13.html#SEC120">13.4.6 C Usage</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_U"></A>U</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX493"><CODE>U_REGS_OFFSET</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX57"><CODE>ui_out</CODE> functions</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC18">4.2 UI-Independent Output--the <CODE>ui_out</CODE> Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX90"><CODE>ui_out</CODE> functions, usage examples</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC24">4.2.6 Examples of Use of <CODE>ui_out</CODE> functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX78"><CODE>ui_out_field_core_addr</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX75"><CODE>ui_out_field_fmt</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX77"><CODE>ui_out_field_fmt_int</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX76"><CODE>ui_out_field_int</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX83"><CODE>ui_out_field_skip</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC23">4.2.5 Utility Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX82"><CODE>ui_out_field_stream</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX79"><CODE>ui_out_field_string</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX88"><CODE>ui_out_flush</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC23">4.2.5 Utility Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX69"><CODE>ui_out_list_begin</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX70"><CODE>ui_out_list_end</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX86"><CODE>ui_out_message</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC23">4.2.5 Utility Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX85"><CODE>ui_out_spaces</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC23">4.2.5 Utility Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX81"><CODE>ui_out_stream_delete</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX62"><CODE>ui_out_table_begin</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX64"><CODE>ui_out_table_body</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX65"><CODE>ui_out_table_end</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX63"><CODE>ui_out_table_header</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX84"><CODE>ui_out_text</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC23">4.2.5 Utility Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX66"><CODE>ui_out_tuple_begin</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX67"><CODE>ui_out_tuple_end</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX87"><CODE>ui_out_wrap_hint</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC23">4.2.5 Utility Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX80"><CODE>ui_stream</CODE></A></TD><TD valign=top><A HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX187"><CODE>UINT_MAX</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX188"><CODE>UINT_MAX</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX189"><CODE>ULONG_MAX</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX190"><CODE>ULONG_MAX</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX218"><CODE>USE_GENERIC_DUMMY_FRAMES</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX219"><CODE>USE_GENERIC_DUMMY_FRAMES</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX221"><CODE>USE_MMALLOC</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX222"><CODE>USE_MMALLOC</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX238"><CODE>USE_O_NOCTTY</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX239"><CODE>USE_O_NOCTTY</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_11.html#IDX492"><CODE>USE_PROC_FS</CODE></A></TD><TD valign=top><A HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX456"><CODE>USE_STRUCT_CONVENTION</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX240"><CODE>USG</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX241"><CODE>USG</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_4.html#IDX89">using <CODE>ui_out</CODE> functions</A></TD><TD valign=top><A HREF="gdbint_4.html#SEC24">4.2.6 Examples of Use of <CODE>ui_out</CODE> functions</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX271"><CODE>value_as_address</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX272"><CODE>value_from_pointer</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX288"><CODE>VALUE_TO_REGISTER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC73">9.6 Using Different Register and Memory Data Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX457"><CODE>VALUE_TO_REGISTER</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX458"><CODE>VARIABLES_INSIDE_BLOCK</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">virtual register representation</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC72">9.5 Raw and Virtual Register Representations</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX244"><CODE>volatile</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_8.html#IDX245"><CODE>volatile</CODE></A></TD><TD valign=top><A HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_W"></A>W</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">watchpoints</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">watchpoints, on x86</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">word-addressed machines</A></TD><TD valign=top><A HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_13.html#IDX502"><CODE>wrap_here</CODE></A></TD><TD valign=top><A HREF="gdbint_13.html#SEC113">13.3 Wrapping Output Lines</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX450"><CODE>write_pc</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_9.html#IDX452"><CODE>write_sp</CODE></A></TD><TD valign=top><A HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_16.html#SEC178">writing tests</A></TD><TD valign=top><A HREF="gdbint_16.html#SEC178">16.3 Writing Tests</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
<TR><TH><A NAME="cp_X"></A>X</TH><TD></TD><TD></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">x86 debug registers</A></TD><TD valign=top><A HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="gdbint_6.html#IDX115">XCOFF format</A></TD><TD valign=top><A HREF="gdbint_6.html#SEC48">6.4.4 XCOFF</A></TD></TR>
<TR><TD COLSPAN=3> <HR></TD></TR>
</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="gdbint_19.html#cp_*" style="text-decoration:none"><b>*</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp__" style="text-decoration:none"><b>_</b></A>
&nbsp;
<BR>
<A HREF="gdbint_19.html#cp_A" style="text-decoration:none"><b>A</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_B" style="text-decoration:none"><b>B</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_C" style="text-decoration:none"><b>C</b></A>
&nbsp;
<A HREF="gdbint_19.html#cp_D" style="text-decoration:none"><b>D</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_E" style="text-decoration:none"><b>E</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_F" style="text-decoration:none"><b>F</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_G" style="text-decoration:none"><b>G</b></A>
&nbsp;
<A HREF="gdbint_20.html#cp_H" style="text-decoration:none"><b>H</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_I" style="text-decoration:none"><b>I</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_K" style="text-decoration:none"><b>K</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_L" style="text-decoration:none"><b>L</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_M" style="text-decoration:none"><b>M</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_N" style="text-decoration:none"><b>N</b></A>
&nbsp;
<A HREF="gdbint_21.html#cp_O" style="text-decoration:none"><b>O</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_P" style="text-decoration:none"><b>P</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_R" style="text-decoration:none"><b>R</b></A>
&nbsp;
<A HREF="gdbint_22.html#cp_S" style="text-decoration:none"><b>S</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_T" style="text-decoration:none"><b>T</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_U" style="text-decoration:none"><b>U</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_V" style="text-decoration:none"><b>V</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_W" style="text-decoration:none"><b>W</b></A>
&nbsp;
<A HREF="gdbint_23.html#cp_X" style="text-decoration:none"><b>X</b></A>
&nbsp;
</td></tr></table><br></P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 26 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,748 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Algorithms</TITLE>
<META NAME="description" CONTENT="GDB Internals: Algorithms">
<META NAME="keywords" CONTENT="GDB Internals: Algorithms">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC6"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC5"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC7"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 3. Algorithms </H1>
<!--docid::SEC6::-->
<P>
GDB uses a number of debugging-specific algorithms. They are
often not very complicated, but get lost in the thicket of special
cases and real-world issues. This chapter describes the basic
algorithms and mentions some of the specific target definitions that
they use.
</P><P>
<HR SIZE="6">
<A NAME="SEC7"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC8"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 3.1 Frames </H2>
<!--docid::SEC7::-->
<P>
<A NAME="IDX3"></A>
<A NAME="IDX4"></A>
A frame is a construct that GDB uses to keep track of calling
and called functions.
</P><P>
<A NAME="IDX5"></A>
<A NAME="IDX6"></A>
<CODE>FRAME_FP</CODE> in the machine description has no meaning to the
machine-independent part of GDB, except that it is used when
setting up a new frame from scratch, as follows:
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>create_new_frame (read_register (FP_REGNUM), read_pc ()));
</FONT></pre></td></tr></table></P><P>
<A NAME="IDX7"></A>
Other than that, all the meaning imparted to <CODE>FP_REGNUM</CODE> is
imparted by the machine-dependent code. So, <CODE>FP_REGNUM</CODE> can have
any value that is convenient for the code that creates new frames.
(<CODE>create_new_frame</CODE> calls <CODE>INIT_EXTRA_FRAME_INFO</CODE> if it is
defined; that is where you should use the <CODE>FP_REGNUM</CODE> value, if
your frames are nonstandard.)
</P><P>
<A NAME="IDX8"></A>
Given a GDB frame, define <CODE>FRAME_CHAIN</CODE> to determine the
address of the calling function's frame. This will be used to create
a new GDB frame struct, and then <CODE>INIT_EXTRA_FRAME_INFO</CODE>
and <CODE>INIT_FRAME_PC</CODE> will be called for the new frame.
</P><P>
<HR SIZE="6">
<A NAME="SEC8"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC7"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC9"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC9"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 3.2 Breakpoint Handling </H2>
<!--docid::SEC8::-->
<P>
<A NAME="IDX9"></A>
In general, a breakpoint is a user-designated location in the program
where the user wants to regain control if program execution ever reaches
that location.
</P><P>
There are two main ways to implement breakpoints; either as "hardware"
breakpoints or as "software" breakpoints.
</P><P>
<A NAME="IDX10"></A>
<A NAME="IDX11"></A>
Hardware breakpoints are sometimes available as a builtin debugging
features with some chips. Typically these work by having dedicated
register into which the breakpoint address may be stored. If the PC
(shorthand for <EM>program counter</EM>)
ever matches a value in a breakpoint registers, the CPU raises an
exception and reports it to GDB.
</P><P>
Another possibility is when an emulator is in use; many emulators
include circuitry that watches the address lines coming out from the
processor, and force it to stop if the address matches a breakpoint's
address.
</P><P>
A third possibility is that the target already has the ability to do
breakpoints somehow; for instance, a ROM monitor may do its own
software breakpoints. So although these are not literally "hardware
breakpoints", from GDB's point of view they work the same;
GDB need not do nothing more than set the breakpoint and wait
for something to happen.
</P><P>
Since they depend on hardware resources, hardware breakpoints may be
limited in number; when the user asks for more, GDB will
start trying to set software breakpoints. (On some architectures,
notably the 32-bit x86 platforms, GDB cannot always know
whether there's enough hardware resources to insert all the hardware
breakpoints and watchpoints. On those platforms, GDB prints
an error message only when the program being debugged is continued.)
</P><P>
<A NAME="IDX12"></A>
Software breakpoints require GDB to do somewhat more work.
The basic theory is that GDB will replace a program
instruction with a trap, illegal divide, or some other instruction
that will cause an exception, and then when it's encountered,
GDB will take the exception and stop the program. When the
user says to continue, GDB will restore the original
instruction, single-step, re-insert the trap, and continue on.
</P><P>
Since it literally overwrites the program being tested, the program area
must be writable, so this technique won't work on programs in ROM. It
can also distort the behavior of programs that examine themselves,
although such a situation would be highly unusual.
</P><P>
Also, the software breakpoint instruction should be the smallest size of
instruction, so it doesn't overwrite an instruction that might be a jump
target, and cause disaster when the program jumps into the middle of the
breakpoint instruction. (Strictly speaking, the breakpoint must be no
larger than the smallest interval between instructions that may be jump
targets; perhaps there is an architecture where only even-numbered
instructions may jumped to.) Note that it's possible for an instruction
set not to have any instructions usable for a software breakpoint,
although in practice only the ARC has failed to define such an
instruction.
</P><P>
<A NAME="IDX13"></A>
The basic definition of the software breakpoint is the macro
<CODE>BREAKPOINT</CODE>.
</P><P>
Basic breakpoint object handling is in <TT>`breakpoint.c'</TT>. However,
much of the interesting breakpoint action is in <TT>`infrun.c'</TT>.
</P><P>
<HR SIZE="6">
<A NAME="SEC9"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC8"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC10"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC10"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 3.3 Single Stepping </H2>
<!--docid::SEC9::-->
<P>
<HR SIZE="6">
<A NAME="SEC10"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC9"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC11"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC11"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 3.4 Signal Handling </H2>
<!--docid::SEC10::-->
<P>
<HR SIZE="6">
<A NAME="SEC11"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC10"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC12"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC12"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 3.5 Thread Handling </H2>
<!--docid::SEC11::-->
<P>
<HR SIZE="6">
<A NAME="SEC12"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC11"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC13"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC13"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 3.6 Inferior Function Calls </H2>
<!--docid::SEC12::-->
<P>
<HR SIZE="6">
<A NAME="SEC13"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC12"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC14"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC14"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 3.7 Longjmp Support </H2>
<!--docid::SEC13::-->
<P>
<A NAME="IDX14"></A>
GDB has support for figuring out that the target is doing a
<CODE>longjmp</CODE> and for stopping at the target of the jump, if we are
stepping. This is done with a few specialized internal breakpoints,
which are visible in the output of the <SAMP>`maint info breakpoint'</SAMP>
command.
</P><P>
<A NAME="IDX15"></A>
To make this work, you need to define a macro called
<CODE>GET_LONGJMP_TARGET</CODE>, which will examine the <CODE>jmp_buf</CODE>
structure and extract the longjmp target address. Since <CODE>jmp_buf</CODE>
is target specific, you will need to define it in the appropriate
<TT>`tm-<VAR>target</VAR>.h'</TT> file. Look in <TT>`tm-sun4os4.h'</TT> and
<TT>`sparc-tdep.c'</TT> for examples of how to do this.
</P><P>
<HR SIZE="6">
<A NAME="SEC14"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC13"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC15"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 3.8 Watchpoints </H2>
<!--docid::SEC14::-->
<P>
Watchpoints are a special kind of breakpoints (see section <A HREF="gdbint_3.html#SEC6">breakpoints</A>) which break when data is accessed rather than when some
instruction is executed. When you have data which changes without
your knowing what code does that, watchpoints are the silver bullet to
hunt down and kill such bugs.
</P><P>
<A NAME="IDX16"></A>
<A NAME="IDX17"></A>
Watchpoints can be either hardware-assisted or not; the latter type is
known as "software watchpoints." GDB always uses
hardware-assisted watchpoints if they are available, and falls back on
software watchpoints otherwise. Typical situations where GDB
will use software watchpoints are:
</P><P>
<UL>
<LI>
The watched memory region is too large for the underlying hardware
watchpoint support. For example, each x86 debug register can watch up
to 4 bytes of memory, so trying to watch data structures whose size is
more than 16 bytes will cause GDB to use software
watchpoints.
<P>
<LI>
The value of the expression to be watched depends on data held in
registers (as opposed to memory).
<P>
<LI>
Too many different watchpoints requested. (On some architectures,
this situation is impossible to detect until the debugged program is
resumed.) Note that x86 debug registers are used both for hardware
breakpoints and for watchpoints, so setting too many hardware
breakpoints might cause watchpoint insertion to fail.
<P>
<LI>
No hardware-assisted watchpoints provided by the target
implementation.
</UL>
<P>
Software watchpoints are very slow, since GDB needs to
single-step the program being debugged and test the value of the
watched expression(s) after each instruction. The rest of this
section is mostly irrelevant for software watchpoints.
</P><P>
GDB uses several macros and primitives to support hardware
watchpoints:
</P><P>
<DL COMPACT>
<A NAME="IDX18"></A>
<DT><CODE>TARGET_HAS_HARDWARE_WATCHPOINTS</CODE>
<DD>If defined, the target supports hardware watchpoints.
<P>
<A NAME="IDX19"></A>
<DT><CODE>TARGET_CAN_USE_HARDWARE_WATCHPOINT (<VAR>type</VAR>, <VAR>count</VAR>, <VAR>other</VAR>)</CODE>
<DD>Return the number of hardware watchpoints of type <VAR>type</VAR> that are
possible to be set. The value is positive if <VAR>count</VAR> watchpoints
of this type can be set, zero if setting watchpoints of this type is
not supported, and negative if <VAR>count</VAR> is more than the maximum
number of watchpoints of type <VAR>type</VAR> that can be set. <VAR>other</VAR>
is non-zero if other types of watchpoints are currently enabled (there
are architectures which cannot set watchpoints of different types at
the same time).
<P>
<A NAME="IDX20"></A>
<DT><CODE>TARGET_REGION_OK_FOR_HW_WATCHPOINT (<VAR>addr</VAR>, <VAR>len</VAR>)</CODE>
<DD>Return non-zero if hardware watchpoints can be used to watch a region
whose address is <VAR>addr</VAR> and whose length in bytes is <VAR>len</VAR>.
<P>
<A NAME="IDX21"></A>
<DT><CODE>TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT (<VAR>size</VAR>)</CODE>
<DD>Return non-zero if hardware watchpoints can be used to watch a region
whose size is <VAR>size</VAR>. GDB only uses this macro as a
fall-back, in case <CODE>TARGET_REGION_OK_FOR_HW_WATCHPOINT</CODE> is not
defined.
<P>
<A NAME="IDX22"></A>
<DT><CODE>TARGET_DISABLE_HW_WATCHPOINTS (<VAR>pid</VAR>)</CODE>
<DD>Disables watchpoints in the process identified by <VAR>pid</VAR>. This is
used, e.g., on HP-UX which provides operations to disable and enable
the page-level memory protection that implements hardware watchpoints
on that platform.
<P>
<A NAME="IDX23"></A>
<DT><CODE>TARGET_ENABLE_HW_WATCHPOINTS (<VAR>pid</VAR>)</CODE>
<DD>Enables watchpoints in the process identified by <VAR>pid</VAR>. This is
used, e.g., on HP-UX which provides operations to disable and enable
the page-level memory protection that implements hardware watchpoints
on that platform.
<P>
<A NAME="IDX24"></A>
<A NAME="IDX25"></A>
<DT><CODE>target_insert_watchpoint (<VAR>addr</VAR>, <VAR>len</VAR>, <VAR>type</VAR>)</CODE>
<DD><DT><CODE>target_remove_watchpoint (<VAR>addr</VAR>, <VAR>len</VAR>, <VAR>type</VAR>)</CODE>
<DD>Insert or remove a hardware watchpoint starting at <VAR>addr</VAR>, for
<VAR>len</VAR> bytes. <VAR>type</VAR> is the watchpoint type, one of the
possible values of the enumerated data type <CODE>target_hw_bp_type</CODE>,
defined by <TT>`breakpoint.h'</TT> as follows:
<P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> enum target_hw_bp_type
{
hw_write = 0, /* Common (write) HW watchpoint */
hw_read = 1, /* Read HW watchpoint */
hw_access = 2, /* Access (read or write) HW watchpoint */
hw_execute = 3 /* Execute HW breakpoint */
};
</FONT></pre></td></tr></table></P><P>
These two macros should return 0 for success, non-zero for failure.
</P><P>
<A NAME="IDX26"></A>
<A NAME="IDX27"></A>
<A NAME="IDX28"></A>
<DT><CODE>target_remove_hw_breakpoint (<VAR>addr</VAR>, <VAR>shadow</VAR>)</CODE>
<DD><DT><CODE>target_insert_hw_breakpoint (<VAR>addr</VAR>, <VAR>shadow</VAR>)</CODE>
<DD>Insert or remove a hardware-assisted breakpoint at address <VAR>addr</VAR>.
Returns zero for success, non-zero for failure. <VAR>shadow</VAR> is the
real contents of the byte where the breakpoint has been inserted; it
is generally not valid when hardware breakpoints are used, but since
no other code touches these values, the implementations of the above
two macros can use them for their internal purposes.
<P>
<A NAME="IDX29"></A>
<DT><CODE>target_stopped_data_address ()</CODE>
<DD>If the inferior has some watchpoint that triggered, return the address
associated with that watchpoint. Otherwise, return zero.
<P>
<A NAME="IDX30"></A>
<DT><CODE>DECR_PC_AFTER_HW_BREAK</CODE>
<DD>If defined, GDB decrements the program counter by the value
of <CODE>DECR_PC_AFTER_HW_BREAK</CODE> after a hardware break-point. This
overrides the value of <CODE>DECR_PC_AFTER_BREAK</CODE> when a breakpoint
that breaks is a hardware-assisted breakpoint.
<P>
<A NAME="IDX31"></A>
<DT><CODE>HAVE_STEPPABLE_WATCHPOINT</CODE>
<DD>If defined to a non-zero value, it is not necessary to disable a
watchpoint to step over it.
<P>
<A NAME="IDX32"></A>
<DT><CODE>HAVE_NONSTEPPABLE_WATCHPOINT</CODE>
<DD>If defined to a non-zero value, GDB should disable a
watchpoint to step the inferior over it.
<P>
<A NAME="IDX33"></A>
<DT><CODE>HAVE_CONTINUABLE_WATCHPOINT</CODE>
<DD>If defined to a non-zero value, it is possible to continue the
inferior after a watchpoint has been hit.
<P>
<A NAME="IDX34"></A>
<DT><CODE>CANNOT_STEP_HW_WATCHPOINTS</CODE>
<DD>If this is defined to a non-zero value, GDB will remove all
watchpoints before stepping the inferior.
<P>
<A NAME="IDX35"></A>
<DT><CODE>STOPPED_BY_WATCHPOINT (<VAR>wait_status</VAR>)</CODE>
<DD>Return non-zero if stopped by a watchpoint. <VAR>wait_status</VAR> is of
the type <CODE>struct target_waitstatus</CODE>, defined by <TT>`target.h'</TT>.
</DL>
<P>
<HR SIZE="6">
<A NAME="SEC15"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC14"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC14"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 3.8.1 x86 Watchpoints </H3>
<!--docid::SEC15::-->
<P>
The 32-bit Intel x86 (a.k.a. ia32) processors feature special debug
registers designed to facilitate debugging. GDB provides a
generic library of functions that x86-based ports can use to implement
support for watchpoints and hardware-assisted breakpoints. This
subsection documents the x86 watchpoint facilities in GDB.
</P><P>
To use the generic x86 watchpoint support, a port should do the
following:
</P><P>
<UL>
<A NAME="IDX36"></A>
<LI>
Define the macro <CODE>I386_USE_GENERIC_WATCHPOINTS</CODE> somewhere in the
target-dependent headers.
<P>
<LI>
Include the <TT>`config/i386/nm-i386.h'</TT> header file <EM>after</EM>
defining <CODE>I386_USE_GENERIC_WATCHPOINTS</CODE>.
<P>
<LI>
Add <TT>`i386-nat.o'</TT> to the value of the Make variable
<CODE>NATDEPFILES</CODE> (see section <A HREF="gdbint_11.html#SEC95">NATDEPFILES</A>) or
<CODE>TDEPFILES</CODE> (see section <A HREF="gdbint_9.html#SEC67">TDEPFILES</A>).
<P>
<LI>
Provide implementations for the <CODE>I386_DR_LOW_*</CODE> macros described
below. Typically, each macro should call a target-specific function
which does the real work.
</UL>
<P>
The x86 watchpoint support works by maintaining mirror images of the
debug registers. Values are copied between the mirror images and the
real debug registers via a set of macros which each target needs to
provide:
</P><P>
<DL COMPACT>
<A NAME="IDX37"></A>
<DT><CODE>I386_DR_LOW_SET_CONTROL (<VAR>val</VAR>)</CODE>
<DD>Set the Debug Control (DR7) register to the value <VAR>val</VAR>.
<P>
<A NAME="IDX38"></A>
<DT><CODE>I386_DR_LOW_SET_ADDR (<VAR>idx</VAR>, <VAR>addr</VAR>)</CODE>
<DD>Put the address <VAR>addr</VAR> into the debug register number <VAR>idx</VAR>.
<P>
<A NAME="IDX39"></A>
<DT><CODE>I386_DR_LOW_RESET_ADDR (<VAR>idx</VAR>)</CODE>
<DD>Reset (i.e. zero out) the address stored in the debug register
number <VAR>idx</VAR>.
<P>
<A NAME="IDX40"></A>
<DT><CODE>I386_DR_LOW_GET_STATUS</CODE>
<DD>Return the value of the Debug Status (DR6) register. This value is
used immediately after it is returned by
<CODE>I386_DR_LOW_GET_STATUS</CODE>, so as to support per-thread status
register values.
</DL>
<P>
For each one of the 4 debug registers (whose indices are from 0 to 3)
that store addresses, a reference count is maintained by GDB,
to allow sharing of debug registers by several watchpoints. This
allows users to define several watchpoints that watch the same
expression, but with different conditions and/or commands, without
wasting debug registers which are in short supply. GDB
maintains the reference counts internally, targets don't have to do
anything to use this feature.
</P><P>
The x86 debug registers can each watch a region that is 1, 2, or 4
bytes long. The ia32 architecture requires that each watched region
be appropriately aligned: 2-byte region on 2-byte boundary, 4-byte
region on 4-byte boundary. However, the x86 watchpoint support in
GDB can watch unaligned regions and regions larger than 4
bytes (up to 16 bytes) by allocating several debug registers to watch
a single region. This allocation of several registers per a watched
region is also done automatically without target code intervention.
</P><P>
The generic x86 watchpoint support provides the following API for the
GDB's application code:
</P><P>
<DL COMPACT>
<A NAME="IDX41"></A>
<DT><CODE>i386_region_ok_for_watchpoint (<VAR>addr</VAR>, <VAR>len</VAR>)</CODE>
<DD>The macro <CODE>TARGET_REGION_OK_FOR_HW_WATCHPOINT</CODE> is set to call
this function. It counts the number of debug registers required to
watch a given region, and returns a non-zero value if that number is
less than 4, the number of debug registers available to x86
processors.
<P>
<A NAME="IDX42"></A>
<DT><CODE>i386_stopped_data_address (void)</CODE>
<DD>The macros <CODE>STOPPED_BY_WATCHPOINT</CODE> and
<CODE>target_stopped_data_address</CODE> are set to call this function. The
argument passed to <CODE>STOPPED_BY_WATCHPOINT</CODE> is ignored. This
function examines the breakpoint condition bits in the DR6 Debug
Status register, as returned by the <CODE>I386_DR_LOW_GET_STATUS</CODE>
macro, and returns the address associated with the first bit that is
set in DR6.
<P>
<A NAME="IDX43"></A>
<A NAME="IDX44"></A>
<DT><CODE>i386_insert_watchpoint (<VAR>addr</VAR>, <VAR>len</VAR>, <VAR>type</VAR>)</CODE>
<DD><DT><CODE>i386_remove_watchpoint (<VAR>addr</VAR>, <VAR>len</VAR>, <VAR>type</VAR>)</CODE>
<DD>Insert or remove a watchpoint. The macros
<CODE>target_insert_watchpoint</CODE> and <CODE>target_remove_watchpoint</CODE>
are set to call these functions. <CODE>i386_insert_watchpoint</CODE> first
looks for a debug register which is already set to watch the same
region for the same access types; if found, it just increments the
reference count of that debug register, thus implementing debug
register sharing between watchpoints. If no such register is found,
the function looks for a vacant debug register, sets its mirrored
value to <VAR>addr</VAR>, sets the mirrored value of DR7 Debug Control
register as appropriate for the <VAR>len</VAR> and <VAR>type</VAR> parameters,
and then passes the new values of the debug register and DR7 to the
inferior by calling <CODE>I386_DR_LOW_SET_ADDR</CODE> and
<CODE>I386_DR_LOW_SET_CONTROL</CODE>. If more than one debug register is
required to cover the given region, the above process is repeated for
each debug register.
<P>
<CODE>i386_remove_watchpoint</CODE> does the opposite: it resets the address
in the mirrored value of the debug register and its read/write and
length bits in the mirrored value of DR7, then passes these new
values to the inferior via <CODE>I386_DR_LOW_RESET_ADDR</CODE> and
<CODE>I386_DR_LOW_SET_CONTROL</CODE>. If a register is shared by several
watchpoints, each time a <CODE>i386_remove_watchpoint</CODE> is called, it
decrements the reference count, and only calls
<CODE>I386_DR_LOW_RESET_ADDR</CODE> and <CODE>I386_DR_LOW_SET_CONTROL</CODE> when
the count goes to zero.
</P><P>
<A NAME="IDX45"></A>
<A NAME="IDX46"></A>
<DT><CODE>i386_insert_hw_breakpoint (<VAR>addr</VAR>, <VAR>shadow</VAR></CODE>
<DD><DT><CODE>i386_remove_hw_breakpoint (<VAR>addr</VAR>, <VAR>shadow</VAR>)</CODE>
<DD>These functions insert and remove hardware-assisted breakpoints. The
macros <CODE>target_insert_hw_breakpoint</CODE> and
<CODE>target_remove_hw_breakpoint</CODE> are set to call these functions.
These functions work like <CODE>i386_insert_watchpoint</CODE> and
<CODE>i386_remove_watchpoint</CODE>, respectively, except that they set up
the debug registers to watch instruction execution, and each
hardware-assisted breakpoint always requires exactly one debug
register.
<P>
<A NAME="IDX47"></A>
<DT><CODE>i386_stopped_by_hwbp (void)</CODE>
<DD>This function returns non-zero if the inferior has some watchpoint or
hardware breakpoint that triggered. It works like
<CODE>i386_stopped_data_address</CODE>, except that it doesn't return the
address whose watchpoint triggered.
<P>
<A NAME="IDX48"></A>
<DT><CODE>i386_cleanup_dregs (void)</CODE>
<DD>This function clears all the reference counts, addresses, and control
bits in the mirror images of the debug registers. It doesn't affect
the actual debug registers in the inferior process.
</DL>
<P>
<STRONG>Notes:</STRONG>
<OL>
<LI>
x86 processors support setting watchpoints on I/O reads or writes.
However, since no target supports this (as of March 2001), and since
<CODE>enum target_hw_bp_type</CODE> doesn't even have an enumeration for I/O
watchpoints, this feature is not yet available to GDB running
on x86.
<P>
<LI>
x86 processors can enable watchpoints locally, for the current task
only, or globally, for all the tasks. For each debug register,
there's a bit in the DR7 Debug Control register that determines
whether the associated address is watched locally or globally. The
current implementation of x86 watchpoint support in GDB
always sets watchpoints to be locally enabled, since global
watchpoints might interfere with the underlying OS and are probably
unavailable in many platforms.
</OL>
<P>
<A NAME="User Interface"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_3.html#SEC6"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC16"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,287 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: libgdb</TITLE>
<META NAME="description" CONTENT="GDB Internals: libgdb">
<META NAME="keywords" CONTENT="GDB Internals: libgdb">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC27"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_4.html#SEC26"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC28"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 5. libgdb </H1>
<!--docid::SEC27::-->
<P>
<HR SIZE="6">
<A NAME="SEC28"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC27"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC29"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC27"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC27"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 5.1 libgdb 1.0 </H2>
<!--docid::SEC28::-->
<CODE>libgdb</CODE> 1.0 was an abortive project of years ago. The theory was
to provide an API to GDB's functionality.
<P>
<HR SIZE="6">
<A NAME="SEC29"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC28"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC30"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC30"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC27"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 5.2 libgdb 2.0 </H2>
<!--docid::SEC29::-->
<CODE>libgdb</CODE> 2.0 is an ongoing effort to update GDB so that is
better able to support graphical and other environments.
<P>
Since <CODE>libgdb</CODE> development is on-going, its architecture is still
evolving. The following components have so far been identified:
</P><P>
<UL>
<LI>
Observer - <TT>`gdb-events.h'</TT>.
<LI>
Builder - <TT>`ui-out.h'</TT>
<LI>
Event Loop - <TT>`event-loop.h'</TT>
<LI>
Library - <TT>`gdb.h'</TT>
</UL>
<P>
The model that ties these components together is described below.
</P><P>
<HR SIZE="6">
<A NAME="SEC30"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC29"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC31"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC31"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC27"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 5.3 The <CODE>libgdb</CODE> Model </H2>
<!--docid::SEC30::-->
<P>
A client of <CODE>libgdb</CODE> interacts with the library in two ways.
</P><P>
<UL>
<LI>
As an observer (using <TT>`gdb-events'</TT>) receiving notifications from
<CODE>libgdb</CODE> of any internal state changes (break point changes, run
state, etc).
<LI>
As a client querying <CODE>libgdb</CODE> (using the <TT>`ui-out'</TT> builder) to
obtain various status values from GDB.
</UL>
<P>
Since <CODE>libgdb</CODE> could have multiple clients (e.g. a GUI supporting
the existing GDB CLI), those clients must co-operate when
controlling <CODE>libgdb</CODE>. In particular, a client must ensure that
<CODE>libgdb</CODE> is idle (i.e. no other client is using <CODE>libgdb</CODE>)
before responding to a <TT>`gdb-event'</TT> by making a query.
</P><P>
<HR SIZE="6">
<A NAME="SEC31"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC30"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC32"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC32"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC27"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 5.4 CLI support </H2>
<!--docid::SEC31::-->
<P>
At present GDB's CLI is very much entangled in with the core of
<CODE>libgdb</CODE>. Consequently, a client wishing to include the CLI in
their interface needs to carefully co-ordinate its own and the CLI's
requirements.
</P><P>
It is suggested that the client set <CODE>libgdb</CODE> up to be bi-modal
(alternate between CLI and client query modes). The notes below sketch
out the theory:
</P><P>
<UL>
<LI>
The client registers itself as an observer of <CODE>libgdb</CODE>.
<LI>
The client create and install <CODE>cli-out</CODE> builder using its own
versions of the <CODE>ui-file</CODE> <CODE>gdb_stderr</CODE>, <CODE>gdb_stdtarg</CODE> and
<CODE>gdb_stdout</CODE> streams.
<LI>
The client creates a separate custom <CODE>ui-out</CODE> builder that is only
used while making direct queries to <CODE>libgdb</CODE>.
</UL>
<P>
When the client receives input intended for the CLI, it simply passes it
along. Since the <CODE>cli-out</CODE> builder is installed by default, all
the CLI output in response to that command is routed (pronounced rooted)
through to the client controlled <CODE>gdb_stdout</CODE> et. al. streams.
At the same time, the client is kept abreast of internal changes by
virtue of being a <CODE>libgdb</CODE> observer.
</P><P>
The only restriction on the client is that it must wait until
<CODE>libgdb</CODE> becomes idle before initiating any queries (using the
client's custom builder).
</P><P>
<HR SIZE="6">
<A NAME="SEC32"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC31"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC27"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC27"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 5.5 <CODE>libgdb</CODE> components </H2>
<!--docid::SEC32::-->
<P>
<A NAME="SEC33"></A>
<H3> Observer - <TT>`gdb-events.h'</TT> </H3>
<!--docid::SEC33::-->
<TT>`gdb-events'</TT> provides the client with a very raw mechanism that can
be used to implement an observer. At present it only allows for one
observer and that observer must, internally, handle the need to delay
the processing of any event notifications until after <CODE>libgdb</CODE> has
finished the current command.
<P>
<A NAME="SEC34"></A>
<H3> Builder - <TT>`ui-out.h'</TT> </H3>
<!--docid::SEC34::-->
<TT>`ui-out'</TT> provides the infrastructure necessary for a client to
create a builder. That builder is then passed down to <CODE>libgdb</CODE>
when doing any queries.
<P>
<A NAME="SEC35"></A>
<H3> Event Loop - <TT>`event-loop.h'</TT> </H3>
<!--docid::SEC35::-->
<TT>`event-loop'</TT>, currently non-re-entrant, provides a simple event
loop. A client would need to either plug its self into this loop or,
implement a new event-loop that GDB would use.
<P>
The event-loop will eventually be made re-entrant. This is so that
can better handle the problem of some commands blocking
instead of returning.
</P><P>
<A NAME="SEC36"></A>
<H3> Library - <TT>`gdb.h'</TT> </H3>
<!--docid::SEC36::-->
<TT>`libgdb'</TT> is the most obvious component of this system. It provides
the query interface. Each function is parameterized by a <CODE>ui-out</CODE>
builder. The result of the query is constructed using that builder
before the query function returns.
<P>
<A NAME="Symbol Handling"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC27"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,874 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Symbol Handling</TITLE>
<META NAME="description" CONTENT="GDB Internals: Symbol Handling">
<META NAME="keywords" CONTENT="GDB Internals: Symbol Handling">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC37"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_5.html#SEC32"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC38"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 6. Symbol Handling </H1>
<!--docid::SEC37::-->
<P>
Symbols are a key part of GDB's operation. Symbols include variables,
functions, and types.
</P><P>
<HR SIZE="6">
<A NAME="SEC38"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC39"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 6.1 Symbol Reading </H2>
<!--docid::SEC38::-->
<P>
<A NAME="IDX91"></A>
<A NAME="IDX92"></A>
<A NAME="IDX93"></A>
GDB reads symbols from <EM>symbol files</EM>. The usual symbol
file is the file containing the program which GDB is
debugging. GDB can be directed to use a different file for
symbols (with the <SAMP>`symbol-file'</SAMP> command), and it can also read
more symbols via the <SAMP>`add-file'</SAMP> and <SAMP>`load'</SAMP> commands, or while
reading symbols from shared libraries.
</P><P>
<A NAME="IDX94"></A>
Symbol files are initially opened by code in <TT>`symfile.c'</TT> using
the BFD library (see section <A HREF="gdbint_12.html#SEC102">12. Support Libraries</A>). BFD identifies the type
of the file by examining its header. <CODE>find_sym_fns</CODE> then uses
this identification to locate a set of symbol-reading functions.
</P><P>
<A NAME="IDX95"></A>
<A NAME="IDX96"></A>
<A NAME="IDX97"></A>
Symbol-reading modules identify themselves to GDB by calling
<CODE>add_symtab_fns</CODE> during their module initialization. The argument
to <CODE>add_symtab_fns</CODE> is a <CODE>struct sym_fns</CODE> which contains the
name (or name prefix) of the symbol format, the length of the prefix,
and pointers to four functions. These functions are called at various
times to process symbol files whose identification matches the specified
prefix.
</P><P>
The functions supplied by each module are:
</P><P>
<DL COMPACT>
<DT><CODE><VAR>xyz</VAR>_symfile_init(struct sym_fns *sf)</CODE>
<DD><P>
<A NAME="IDX98"></A>
Called from <CODE>symbol_file_add</CODE> when we are about to read a new
symbol file. This function should clean up any internal state (possibly
resulting from half-read previous files, for example) and prepare to
read a new symbol file. Note that the symbol file which we are reading
might be a new "main" symbol file, or might be a secondary symbol file
whose symbols are being added to the existing symbol table.
</P><P>
The argument to <CODE><VAR>xyz</VAR>_symfile_init</CODE> is a newly allocated
<CODE>struct sym_fns</CODE> whose <CODE>bfd</CODE> field contains the BFD for the
new symbol file being read. Its <CODE>private</CODE> field has been zeroed,
and can be modified as desired. Typically, a struct of private
information will be <CODE>malloc</CODE>'d, and a pointer to it will be placed
in the <CODE>private</CODE> field.
</P><P>
There is no result from <CODE><VAR>xyz</VAR>_symfile_init</CODE>, but it can call
<CODE>error</CODE> if it detects an unavoidable problem.
</P><P>
<DT><CODE><VAR>xyz</VAR>_new_init()</CODE>
<DD><P>
Called from <CODE>symbol_file_add</CODE> when discarding existing symbols.
This function needs only handle the symbol-reading module's internal
state; the symbol table data structures visible to the rest of
GDB will be discarded by <CODE>symbol_file_add</CODE>. It has no
arguments and no result. It may be called after
<CODE><VAR>xyz</VAR>_symfile_init</CODE>, if a new symbol table is being read, or
may be called alone if all symbols are simply being discarded.
</P><P>
<DT><CODE><VAR>xyz</VAR>_symfile_read(struct sym_fns *sf, CORE_ADDR addr, int mainline)</CODE>
<DD><P>
Called from <CODE>symbol_file_add</CODE> to actually read the symbols from a
symbol-file into a set of psymtabs or symtabs.
</P><P>
<CODE>sf</CODE> points to the <CODE>struct sym_fns</CODE> originally passed to
<CODE><VAR>xyz</VAR>_sym_init</CODE> for possible initialization. <CODE>addr</CODE> is
the offset between the file's specified start address and its true
address in memory. <CODE>mainline</CODE> is 1 if this is the main symbol
table being read, and 0 if a secondary symbol file (e.g. shared library
or dynamically loaded file) is being read.</DL>
<P>
In addition, if a symbol-reading module creates psymtabs when
<VAR>xyz</VAR>_symfile_read is called, these psymtabs will contain a pointer
to a function <CODE><VAR>xyz</VAR>_psymtab_to_symtab</CODE>, which can be called
from any point in the GDB symbol-handling code.
</P><P>
<DL COMPACT>
<DT><CODE><VAR>xyz</VAR>_psymtab_to_symtab (struct partial_symtab *pst)</CODE>
<DD><P>
Called from <CODE>psymtab_to_symtab</CODE> (or the <CODE>PSYMTAB_TO_SYMTAB</CODE> macro) if
the psymtab has not already been read in and had its <CODE>pst-&#62;symtab</CODE>
pointer set. The argument is the psymtab to be fleshed-out into a
symtab. Upon return, <CODE>pst-&#62;readin</CODE> should have been set to 1, and
<CODE>pst-&#62;symtab</CODE> should contain a pointer to the new corresponding symtab, or
zero if there were no symbols in that part of the symbol file.
</DL>
<P>
<HR SIZE="6">
<A NAME="SEC39"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC38"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC40"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC40"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 6.2 Partial Symbol Tables </H2>
<!--docid::SEC39::-->
<P>
GDB has three types of symbol tables:
</P><P>
<UL>
<A NAME="IDX99"></A>
<A NAME="IDX100"></A>
<LI>
Full symbol tables (<EM>symtabs</EM>). These contain the main
information about symbols and addresses.
<P>
<A NAME="IDX101"></A>
<LI>
Partial symbol tables (<EM>psymtabs</EM>). These contain enough
information to know when to read the corresponding part of the full
symbol table.
<P>
<A NAME="IDX102"></A>
<A NAME="IDX103"></A>
<LI>
Minimal symbol tables (<EM>msymtabs</EM>). These contain information
gleaned from non-debugging symbols.
</UL>
<P>
<A NAME="IDX104"></A>
This section describes partial symbol tables.
</P><P>
A psymtab is constructed by doing a very quick pass over an executable
file's debugging information. Small amounts of information are
extracted--enough to identify which parts of the symbol table will
need to be re-read and fully digested later, when the user needs the
information. The speed of this pass causes GDB to start up very
quickly. Later, as the detailed rereading occurs, it occurs in small
pieces, at various times, and the delay therefrom is mostly invisible to
the user.
</P><P>
The symbols that show up in a file's psymtab should be, roughly, those
visible to the debugger's user when the program is not running code from
that file. These include external symbols and types, static symbols and
types, and <CODE>enum</CODE> values declared at file scope.
</P><P>
The psymtab also contains the range of instruction addresses that the
full symbol table would represent.
</P><P>
<A NAME="IDX105"></A>
<A NAME="IDX106"></A>
The idea is that there are only two ways for the user (or much of the
code in the debugger) to reference a symbol:
</P><P>
<UL>
<A NAME="IDX107"></A>
<A NAME="IDX108"></A>
<LI>
By its address (e.g. execution stops at some address which is inside a
function in this file). The address will be noticed to be in the
range of this psymtab, and the full symtab will be read in.
<CODE>find_pc_function</CODE>, <CODE>find_pc_line</CODE>, and other
<CODE>find_pc_<small>...</small></CODE> functions handle this.
<P>
<A NAME="IDX109"></A>
<LI>
By its name
(e.g. the user asks to print a variable, or set a breakpoint on a
function). Global names and file-scope names will be found in the
psymtab, which will cause the symtab to be pulled in. Local names will
have to be qualified by a global name, or a file-scope name, in which
case we will have already read in the symtab as we evaluated the
qualifier. Or, a local symbol can be referenced when we are "in" a
local scope, in which case the first case applies. <CODE>lookup_symbol</CODE>
does most of the work here.
</UL>
<P>
The only reason that psymtabs exist is to cause a symtab to be read in
at the right moment. Any symbol that can be elided from a psymtab,
while still causing that to happen, should not appear in it. Since
psymtabs don't have the idea of scope, you can't put local symbols in
them anyway. Psymtabs don't have the idea of the type of a symbol,
either, so types need not appear, unless they will be referenced by
name.
</P><P>
It is a bug for GDB to behave one way when only a psymtab has
been read, and another way if the corresponding symtab has been read
in. Such bugs are typically caused by a psymtab that does not contain
all the visible symbols, or which has the wrong instruction address
ranges.
</P><P>
The psymtab for a particular section of a symbol file (objfile) could be
thrown away after the symtab has been read in. The symtab should always
be searched before the psymtab, so the psymtab will never be used (in a
bug-free environment). Currently, psymtabs are allocated on an obstack,
and all the psymbols themselves are allocated in a pair of large arrays
on an obstack, so there is little to be gained by trying to free them
unless you want to do a lot more work.
</P><P>
<HR SIZE="6">
<A NAME="SEC40"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC39"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC41"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 6.3 Types </H2>
<!--docid::SEC40::-->
<P>
<HR SIZE="6">
<A NAME="SEC41"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC40"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC42"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> Fundamental Types (e.g., <CODE>FT_VOID</CODE>, <CODE>FT_BOOLEAN</CODE>). </H3>
<!--docid::SEC41::-->
<P>
<A NAME="IDX110"></A>
These are the fundamental types that GDB uses internally. Fundamental
types from the various debugging formats (stabs, ELF, etc) are mapped
into one of these. They are basically a union of all fundamental types
that GDB knows about for all the languages that GDB
knows about.
</P><P>
<HR SIZE="6">
<A NAME="SEC42"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC41"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC43"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> Type Codes (e.g., <CODE>TYPE_CODE_PTR</CODE>, <CODE>TYPE_CODE_ARRAY</CODE>). </H3>
<!--docid::SEC42::-->
<P>
<A NAME="IDX111"></A>
Each time GDB builds an internal type, it marks it with one
of these types. The type may be a fundamental type, such as
<CODE>TYPE_CODE_INT</CODE>, or a derived type, such as <CODE>TYPE_CODE_PTR</CODE>
which is a pointer to another type. Typically, several <CODE>FT_*</CODE>
types map to one <CODE>TYPE_CODE_*</CODE> type, and are distinguished by
other members of the type struct, such as whether the type is signed
or unsigned, and how many bits it uses.
</P><P>
<HR SIZE="6">
<A NAME="SEC43"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC42"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> Builtin Types (e.g., <CODE>builtin_type_void</CODE>, <CODE>builtin_type_char</CODE>). </H3>
<!--docid::SEC43::-->
<P>
These are instances of type structs that roughly correspond to
fundamental types and are created as global types for GDB to
use for various ugly historical reasons. We eventually want to
eliminate these. Note for example that <CODE>builtin_type_int</CODE>
initialized in <TT>`gdbtypes.c'</TT> is basically the same as a
<CODE>TYPE_CODE_INT</CODE> type that is initialized in <TT>`c-lang.c'</TT> for
an <CODE>FT_INTEGER</CODE> fundamental type. The difference is that the
<CODE>builtin_type</CODE> is not associated with any particular objfile, and
only one instance exists, while <TT>`c-lang.c'</TT> builds as many
<CODE>TYPE_CODE_INT</CODE> types as needed, with each one associated with
some particular objfile.
</P><P>
<HR SIZE="6">
<A NAME="SEC44"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC43"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC45"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 6.4 Object File Formats </H2>
<!--docid::SEC44::-->
<P>
<HR SIZE="6">
<A NAME="SEC45"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC46"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.4.1 a.out </H3>
<!--docid::SEC45::-->
<P>
<A NAME="IDX112"></A>
The <CODE>a.out</CODE> format is the original file format for Unix. It
consists of three sections: <CODE>text</CODE>, <CODE>data</CODE>, and <CODE>bss</CODE>,
which are for program code, initialized data, and uninitialized data,
respectively.
</P><P>
The <CODE>a.out</CODE> format is so simple that it doesn't have any reserved
place for debugging information. (Hey, the original Unix hackers used
<SAMP>`adb'</SAMP>, which is a machine-language debugger!) The only debugging
format for <CODE>a.out</CODE> is stabs, which is encoded as a set of normal
symbols with distinctive attributes.
</P><P>
The basic <CODE>a.out</CODE> reader is in <TT>`dbxread.c'</TT>.
</P><P>
<HR SIZE="6">
<A NAME="SEC46"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC45"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC47"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC47"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.4.2 COFF </H3>
<!--docid::SEC46::-->
<P>
<A NAME="IDX113"></A>
The COFF format was introduced with System V Release 3 (SVR3) Unix.
COFF files may have multiple sections, each prefixed by a header. The
number of sections is limited.
</P><P>
The COFF specification includes support for debugging. Although this
was a step forward, the debugging information was woefully limited. For
instance, it was not possible to represent code that came from an
included file.
</P><P>
The COFF reader is in <TT>`coffread.c'</TT>.
</P><P>
<HR SIZE="6">
<A NAME="SEC47"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC46"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC48"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC48"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.4.3 ECOFF </H3>
<!--docid::SEC47::-->
<P>
<A NAME="IDX114"></A>
ECOFF is an extended COFF originally introduced for Mips and Alpha
workstations.
</P><P>
The basic ECOFF reader is in <TT>`mipsread.c'</TT>.
</P><P>
<HR SIZE="6">
<A NAME="SEC48"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC47"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC49"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC49"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.4.4 XCOFF </H3>
<!--docid::SEC48::-->
<P>
<A NAME="IDX115"></A>
The IBM RS/6000 running AIX uses an object file format called XCOFF.
The COFF sections, symbols, and line numbers are used, but debugging
symbols are <CODE>dbx</CODE>-style stabs whose strings are located in the
<CODE>.debug</CODE> section (rather than the string table). For more
information, see section `Top' in <CITE>The Stabs Debugging Format</CITE>.
</P><P>
The shared library scheme has a clean interface for figuring out what
shared libraries are in use, but the catch is that everything which
refers to addresses (symbol tables and breakpoints at least) needs to be
relocated for both shared libraries and the main executable. At least
using the standard mechanism this can only be done once the program has
been run (or the core file has been read).
</P><P>
<HR SIZE="6">
<A NAME="SEC49"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC48"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC50"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC50"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.4.5 PE </H3>
<!--docid::SEC49::-->
<P>
<A NAME="IDX116"></A>
Windows 95 and NT use the PE (<EM>Portable Executable</EM>) format for their
executables. PE is basically COFF with additional headers.
</P><P>
While BFD includes special PE support, GDB needs only the basic
COFF reader.
</P><P>
<HR SIZE="6">
<A NAME="SEC50"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC49"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC51"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC51"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.4.6 ELF </H3>
<!--docid::SEC50::-->
<P>
<A NAME="IDX117"></A>
The ELF format came with System V Release 4 (SVR4) Unix. ELF is similar
to COFF in being organized into a number of sections, but it removes
many of COFF's limitations.
</P><P>
The basic ELF reader is in <TT>`elfread.c'</TT>.
</P><P>
<HR SIZE="6">
<A NAME="SEC51"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC50"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC52"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC52"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.4.7 SOM </H3>
<!--docid::SEC51::-->
<P>
<A NAME="IDX118"></A>
SOM is HP's object file and debug format (not to be confused with IBM's
SOM, which is a cross-language ABI).
</P><P>
The SOM reader is in <TT>`hpread.c'</TT>.
</P><P>
<HR SIZE="6">
<A NAME="SEC52"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC51"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC44"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.4.8 Other File Formats </H3>
<!--docid::SEC52::-->
<P>
<A NAME="IDX119"></A>
Other file formats that have been supported by GDB include Netware
Loadable Modules (<TT>`nlmread.c'</TT>).
</P><P>
<HR SIZE="6">
<A NAME="SEC53"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC52"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC54"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 6.5 Debugging File Formats </H2>
<!--docid::SEC53::-->
<P>
This section describes characteristics of debugging information that
are independent of the object file format.
</P><P>
<HR SIZE="6">
<A NAME="SEC54"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC55"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.5.1 stabs </H3>
<!--docid::SEC54::-->
<P>
<A NAME="IDX120"></A>
<CODE>stabs</CODE> started out as special symbols within the <CODE>a.out</CODE>
format. Since then, it has been encapsulated into other file
formats, such as COFF and ELF.
</P><P>
While <TT>`dbxread.c'</TT> does some of the basic stab processing,
including for encapsulated versions, <TT>`stabsread.c'</TT> does
the real work.
</P><P>
<HR SIZE="6">
<A NAME="SEC55"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC54"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC56"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC56"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.5.2 COFF </H3>
<!--docid::SEC55::-->
<P>
<A NAME="IDX121"></A>
The basic COFF definition includes debugging information. The level
of support is minimal and non-extensible, and is not often used.
</P><P>
<HR SIZE="6">
<A NAME="SEC56"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC55"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC57"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC57"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.5.3 Mips debug (Third Eye) </H3>
<!--docid::SEC56::-->
<P>
<A NAME="IDX122"></A>
ECOFF includes a definition of a special debug format.
</P><P>
The file <TT>`mdebugread.c'</TT> implements reading for this format.
</P><P>
<HR SIZE="6">
<A NAME="SEC57"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC56"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC58"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC58"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.5.4 DWARF 1 </H3>
<!--docid::SEC57::-->
<P>
<A NAME="IDX123"></A>
DWARF 1 is a debugging format that was originally designed to be
used with ELF in SVR4 systems.
</P><P>
The DWARF 1 reader is in <TT>`dwarfread.c'</TT>.
</P><P>
<HR SIZE="6">
<A NAME="SEC58"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC57"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC59"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC59"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.5.5 DWARF 2 </H3>
<!--docid::SEC58::-->
<P>
<A NAME="IDX124"></A>
DWARF 2 is an improved but incompatible version of DWARF 1.
</P><P>
The DWARF 2 reader is in <TT>`dwarf2read.c'</TT>.
</P><P>
<HR SIZE="6">
<A NAME="SEC59"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC58"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC53"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 6.5.6 SOM </H3>
<!--docid::SEC59::-->
<P>
<A NAME="IDX125"></A>
Like COFF, the SOM definition includes debugging information.
</P><P>
<HR SIZE="6">
<A NAME="SEC60"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC59"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 6.6 Adding a New Symbol Reader to GDB </H2>
<!--docid::SEC60::-->
<P>
<A NAME="IDX126"></A>
If you are using an existing object file format (<CODE>a.out</CODE>, COFF, ELF, etc),
there is probably little to be done.
</P><P>
If you need to add a new object file format, you must first add it to
BFD. This is beyond the scope of this document.
</P><P>
You must then arrange for the BFD code to provide access to the
debugging symbols. Generally GDB will have to call swapping routines
from BFD and a few other BFD internal routines to locate the debugging
information. As much as possible, GDB should not depend on the BFD
internal data structures.
</P><P>
For some targets (e.g., COFF), there is a special transfer vector used
to call swapping routines, since the external data structures on various
platforms have different sizes and layouts. Specialized routines that
will only ever be implemented by one object file format may be called
directly. This interface should be described in a file
<TT>`bfd/lib<VAR>xyz</VAR>.h'</TT>, which is included by GDB.
</P><P>
<A NAME="Language Support"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC37"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,259 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Language Support</TITLE>
<META NAME="description" CONTENT="GDB Internals: Language Support">
<META NAME="keywords" CONTENT="GDB Internals: Language Support">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC61"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_6.html#SEC60"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC62"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 7. Language Support </H1>
<!--docid::SEC61::-->
<P>
<A NAME="IDX127"></A>
GDB's language support is mainly driven by the symbol reader,
although it is possible for the user to set the source language
manually.
</P><P>
GDB chooses the source language by looking at the extension
of the file recorded in the debug info; <TT>`.c'</TT> means C, <TT>`.f'</TT>
means Fortran, etc. It may also use a special-purpose language
identifier if the debug format supports it, like with DWARF.
</P><P>
<HR SIZE="6">
<A NAME="SEC62"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 7.1 Adding a Source Language to GDB </H2>
<!--docid::SEC62::-->
<P>
<A NAME="IDX128"></A>
To add other languages to GDB's expression parser, follow the
following steps:
</P><P>
<DL COMPACT>
<DT><EM>Create the expression parser.</EM>
<DD><P>
<A NAME="IDX129"></A>
This should reside in a file <TT>`<VAR>lang</VAR>-exp.y'</TT>. Routines for
building parsed expressions into a <CODE>union exp_element</CODE> list are in
<TT>`parse.c'</TT>.
</P><P>
<A NAME="IDX130"></A>
Since we can't depend upon everyone having Bison, and YACC produces
parsers that define a bunch of global names, the following lines
<STRONG>must</STRONG> be included at the top of the YACC parser, to prevent the
various parsers from defining the same global names:
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>#define yyparse <VAR>lang</VAR>_parse
#define yylex <VAR>lang</VAR>_lex
#define yyerror <VAR>lang</VAR>_error
#define yylval <VAR>lang</VAR>_lval
#define yychar <VAR>lang</VAR>_char
#define yydebug <VAR>lang</VAR>_debug
#define yypact <VAR>lang</VAR>_pact
#define yyr1 <VAR>lang</VAR>_r1
#define yyr2 <VAR>lang</VAR>_r2
#define yydef <VAR>lang</VAR>_def
#define yychk <VAR>lang</VAR>_chk
#define yypgo <VAR>lang</VAR>_pgo
#define yyact <VAR>lang</VAR>_act
#define yyexca <VAR>lang</VAR>_exca
#define yyerrflag <VAR>lang</VAR>_errflag
#define yynerrs <VAR>lang</VAR>_nerrs
</FONT></pre></td></tr></table></P><P>
At the bottom of your parser, define a <CODE>struct language_defn</CODE> and
initialize it with the right values for your language. Define an
<CODE>initialize_<VAR>lang</VAR></CODE> routine and have it call
<SAMP>`add_language(<VAR>lang</VAR>_language_defn)'</SAMP> to tell the rest of GDB
that your language exists. You'll need some other supporting variables
and functions, which will be used via pointers from your
<CODE><VAR>lang</VAR>_language_defn</CODE>. See the declaration of <CODE>struct
language_defn</CODE> in <TT>`language.h'</TT>, and the other <TT>`*-exp.y'</TT> files,
for more information.
</P><P>
<DT><EM>Add any evaluation routines, if necessary</EM>
<DD><P>
<A NAME="IDX131"></A>
<A NAME="IDX132"></A>
<A NAME="IDX133"></A>
<A NAME="IDX134"></A>
If you need new opcodes (that represent the operations of the language),
add them to the enumerated type in <TT>`expression.h'</TT>. Add support
code for these operations in the <CODE>evaluate_subexp</CODE> function
defined in the file <TT>`eval.c'</TT>. Add cases
for new opcodes in two functions from <TT>`parse.c'</TT>:
<CODE>prefixify_subexp</CODE> and <CODE>length_of_subexp</CODE>. These compute
the number of <CODE>exp_element</CODE>s that a given operation takes up.
</P><P>
<DT><EM>Update some existing code</EM>
<DD><P>
Add an enumerated identifier for your language to the enumerated type
<CODE>enum language</CODE> in <TT>`defs.h'</TT>.
</P><P>
Update the routines in <TT>`language.c'</TT> so your language is included.
These routines include type predicates and such, which (in some cases)
are language dependent. If your language does not appear in the switch
statement, an error is reported.
</P><P>
<A NAME="IDX135"></A>
Also included in <TT>`language.c'</TT> is the code that updates the variable
<CODE>current_language</CODE>, and the routines that translate the
<CODE>language_<VAR>lang</VAR></CODE> enumerated identifier into a printable
string.
</P><P>
<A NAME="IDX136"></A>
Update the function <CODE>_initialize_language</CODE> to include your
language. This function picks the default language upon startup, so is
dependent upon which languages that GDB is built for.
</P><P>
<A NAME="IDX137"></A>
Update <CODE>allocate_symtab</CODE> in <TT>`symfile.c'</TT> and/or symbol-reading
code so that the language of each symtab (source file) is set properly.
This is used to determine the language to use at each stack frame level.
Currently, the language is set based upon the extension of the source
file. If the language can be better inferred from the symbol
information, please set the language of the symtab in the symbol-reading
code.
</P><P>
<A NAME="IDX138"></A>
<A NAME="IDX139"></A>
Add helper code to <CODE>print_subexp</CODE> (in <TT>`expprint.c'</TT>) to handle any new
expression opcodes you have added to <TT>`expression.h'</TT>. Also, add the
printed representations of your operators to <CODE>op_print_tab</CODE>.
</P><P>
<DT><EM>Add a place of call</EM>
<DD><P>
<A NAME="IDX140"></A>
Add a call to <CODE><VAR>lang</VAR>_parse()</CODE> and <CODE><VAR>lang</VAR>_error</CODE> in
<CODE>parse_exp_1</CODE> (defined in <TT>`parse.c'</TT>).
</P><P>
<DT><EM>Use macros to trim code</EM>
<DD><P>
<A NAME="IDX141"></A>
The user has the option of building GDB for some or all of the
languages. If the user decides to build GDB for the language
<VAR>lang</VAR>, then every file dependent on <TT>`language.h'</TT> will have the
macro <CODE>_LANG_<VAR>lang</VAR></CODE> defined in it. Use <CODE>#ifdef</CODE>s to
leave out large routines that the user won't need if he or she is not
using your language.
</P><P>
Note that you do not need to do this in your YACC parser, since if GDB
is not build for <VAR>lang</VAR>, then <TT>`<VAR>lang</VAR>-exp.tab.o'</TT> (the
compiled form of your parser) is not linked into GDB at all.
</P><P>
See the file <TT>`configure.in'</TT> for how GDB is configured
for different languages.
</P><P>
<DT><EM>Edit <TT>`Makefile.in'</TT></EM>
<DD><P>
Add dependencies in <TT>`Makefile.in'</TT>. Make sure you update the macro
variables such as <CODE>HFILES</CODE> and <CODE>OBJS</CODE>, otherwise your code may
not get linked in, or, worse yet, it may not get <CODE>tar</CODE>red into the
distribution!
</DL>
<P>
<A NAME="Host Definition"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC61"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,535 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Host Definition</TITLE>
<META NAME="description" CONTENT="GDB Internals: Host Definition">
<META NAME="keywords" CONTENT="GDB Internals: Host Definition">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC63"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_7.html#SEC62"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC64"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_9.html#SEC67"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_9.html#SEC67"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 8. Host Definition </H1>
<!--docid::SEC63::-->
<P>
With the advent of Autoconf, it's rarely necessary to have host
definition machinery anymore. The following information is provided,
mainly, as an historical reference.
</P><P>
<HR SIZE="6">
<A NAME="SEC64"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC66"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_9.html#SEC67"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 8.1 Adding a New Host </H2>
<!--docid::SEC64::-->
<P>
<A NAME="IDX142"></A>
<A NAME="IDX143"></A>
GDB's host configuration support normally happens via Autoconf.
New host-specific definitions should not be needed. Older hosts
GDB still use the host-specific definitions and files listed
below, but these mostly exist for historical reasons, and will
eventually disappear.
</P><P>
<DL COMPACT>
<DT><TT>`gdb/config/<VAR>arch</VAR>/<VAR>xyz</VAR>.mh'</TT>
<DD>This file once contained both host and native configuration information
(see section <A HREF="gdbint_11.html#SEC95">11. Native Debugging</A>) for the machine <VAR>xyz</VAR>. The host
configuration information is now handed by Autoconf.
<P>
Host configuration information included a definition of
<CODE>XM_FILE=xm-<VAR>xyz</VAR>.h</CODE> and possibly definitions for <CODE>CC</CODE>,
<CODE>SYSV_DEFINE</CODE>, <CODE>XM_CFLAGS</CODE>, <CODE>XM_ADD_FILES</CODE>,
<CODE>XM_CLIBS</CODE>, <CODE>XM_CDEPS</CODE>, etc.; see <TT>`Makefile.in'</TT>.
</P><P>
New host only configurations do not need this file.
</P><P>
<DT><TT>`gdb/config/<VAR>arch</VAR>/xm-<VAR>xyz</VAR>.h'</TT>
<DD>This file once contained definitions and includes required when hosting
gdb on machine <VAR>xyz</VAR>. Those definitions and includes are now
handled by Autoconf.
<P>
New host and native configurations do not need this file.
</P><P>
<EM>Maintainer's note: Some hosts continue to use the <TT>`xm-xyz.h'</TT>
file to define the macros <VAR>HOST_FLOAT_FORMAT</VAR>,
<VAR>HOST_DOUBLE_FORMAT</VAR> and <VAR>HOST_LONG_DOUBLE_FORMAT</VAR>. That code
also needs to be replaced with either an Autoconf or run-time test.</EM>
</P><P>
</DL>
<P>
<A NAME="SEC65"></A>
<H3> Generic Host Support Files </H3>
<!--docid::SEC65::-->
<P>
<A NAME="IDX144"></A>
There are some "generic" versions of routines that can be used by
various systems. These can be customized in various ways by macros
defined in your <TT>`xm-<VAR>xyz</VAR>.h'</TT> file. If these routines work for
the <VAR>xyz</VAR> host, you can just include the generic file's name (with
<SAMP>`.o'</SAMP>, not <SAMP>`.c'</SAMP>) in <CODE>XDEPFILES</CODE>.
</P><P>
Otherwise, if your machine needs custom support routines, you will need
to write routines that perform the same functions as the generic file.
Put them into <CODE><VAR>xyz</VAR>-xdep.c</CODE>, and put <CODE><VAR>xyz</VAR>-xdep.o</CODE>
into <CODE>XDEPFILES</CODE>.
</P><P>
<DL COMPACT>
<A NAME="IDX145"></A>
<A NAME="IDX146"></A>
<DT><TT>`ser-unix.c'</TT>
<DD>This contains serial line support for Unix systems. This is always
included, via the makefile variable <CODE>SER_HARDWIRE</CODE>; override this
variable in the <TT>`.mh'</TT> file to avoid it.
<P>
<DT><TT>`ser-go32.c'</TT>
<DD>This contains serial line support for 32-bit programs running under DOS,
using the DJGPP (a.k.a. GO32) execution environment.
<P>
<A NAME="IDX147"></A>
<DT><TT>`ser-tcp.c'</TT>
<DD>This contains generic TCP support using sockets.
</DL>
<P>
<HR SIZE="6">
<A NAME="SEC66"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC64"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_9.html#SEC67"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_9.html#SEC67"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 8.2 Host Conditionals </H2>
<!--docid::SEC66::-->
<P>
When GDB is configured and compiled, various macros are
defined or left undefined, to control compilation based on the
attributes of the host system. These macros and their meanings (or if
the meaning is not documented here, then one of the source files where
they are used is indicated) are:
</P><P>
<DL COMPACT>
<A NAME="IDX148"></A>
<DT><CODE>GDBINIT_FILENAME</CODE>
<DD><A NAME="IDX149"></A>
The default name of GDB's initialization file (normally
<TT>`.gdbinit'</TT>).
<P>
<A NAME="IDX150"></A>
<DT><CODE>NO_STD_REGS</CODE>
<DD><A NAME="IDX151"></A>
This macro is deprecated.
<P>
<A NAME="IDX152"></A>
<DT><CODE>NO_SYS_FILE</CODE>
<DD><A NAME="IDX153"></A>
Define this if your system does not have a <CODE>&#60;sys/file.h&#62;</CODE>.
<P>
<A NAME="IDX154"></A>
<DT><CODE>SIGWINCH_HANDLER</CODE>
<DD><A NAME="IDX155"></A>
If your host defines <CODE>SIGWINCH</CODE>, you can define this to be the name
of a function to be called if <CODE>SIGWINCH</CODE> is received.
<P>
<A NAME="IDX156"></A>
<DT><CODE>SIGWINCH_HANDLER_BODY</CODE>
<DD><A NAME="IDX157"></A>
Define this to expand into code that will define the function named by
the expansion of <CODE>SIGWINCH_HANDLER</CODE>.
<P>
<A NAME="IDX158"></A>
<DT><CODE>ALIGN_STACK_ON_STARTUP</CODE>
<DD><A NAME="IDX159"></A>
<A NAME="IDX160"></A>
Define this if your system is of a sort that will crash in
<CODE>tgetent</CODE> if the stack happens not to be longword-aligned when
<CODE>main</CODE> is called. This is a rare situation, but is known to occur
on several different types of systems.
<P>
<A NAME="IDX161"></A>
<DT><CODE>CRLF_SOURCE_FILES</CODE>
<DD><A NAME="IDX162"></A>
<A NAME="IDX163"></A>
Define this if host files use <CODE>\r\n</CODE> rather than <CODE>\n</CODE> as a
line terminator. This will cause source file listings to omit <CODE>\r</CODE>
characters when printing and it will allow <CODE>\r\n</CODE> line endings of files
which are "sourced" by gdb. It must be possible to open files in binary
mode using <CODE>O_BINARY</CODE> or, for fopen, <CODE>"rb"</CODE>.
<P>
<A NAME="IDX164"></A>
<DT><CODE>DEFAULT_PROMPT</CODE>
<DD><A NAME="IDX165"></A>
<A NAME="IDX166"></A>
The default value of the prompt string (normally <CODE>"(gdb) "</CODE>).
<P>
<A NAME="IDX167"></A>
<DT><CODE>DEV_TTY</CODE>
<DD><A NAME="IDX168"></A>
<A NAME="IDX169"></A>
The name of the generic TTY device, defaults to <CODE>"/dev/tty"</CODE>.
<P>
<A NAME="IDX170"></A>
<DT><CODE>FCLOSE_PROVIDED</CODE>
<DD><A NAME="IDX171"></A>
Define this if the system declares <CODE>fclose</CODE> in the headers included
in <CODE>defs.h</CODE>. This isn't needed unless your compiler is unusually
anal.
<P>
<A NAME="IDX172"></A>
<DT><CODE>FOPEN_RB</CODE>
<DD><A NAME="IDX173"></A>
Define this if binary files are opened the same way as text files.
<P>
<A NAME="IDX174"></A>
<DT><CODE>GETENV_PROVIDED</CODE>
<DD><A NAME="IDX175"></A>
Define this if the system declares <CODE>getenv</CODE> in its headers included
in <CODE>defs.h</CODE>. This isn't needed unless your compiler is unusually
anal.
<P>
<A NAME="IDX176"></A>
<DT><CODE>HAVE_MMAP</CODE>
<DD><A NAME="IDX177"></A>
<A NAME="IDX178"></A>
In some cases, use the system call <CODE>mmap</CODE> for reading symbol
tables. For some machines this allows for sharing and quick updates.
<P>
<A NAME="IDX179"></A>
<DT><CODE>HAVE_TERMIO</CODE>
<DD><A NAME="IDX180"></A>
Define this if the host system has <CODE>termio.h</CODE>.
<P>
<A NAME="IDX181"></A>
<DT><CODE>INT_MAX</CODE>
<DD><A NAME="IDX182"></A>
<A NAME="IDX183"></A>
<DT><CODE>INT_MIN</CODE>
<DD><A NAME="IDX184"></A>
<A NAME="IDX185"></A>
<DT><CODE>LONG_MAX</CODE>
<DD><A NAME="IDX186"></A>
<A NAME="IDX187"></A>
<DT><CODE>UINT_MAX</CODE>
<DD><A NAME="IDX188"></A>
<A NAME="IDX189"></A>
<DT><CODE>ULONG_MAX</CODE>
<DD><A NAME="IDX190"></A>
Values for host-side constants.
<P>
<A NAME="IDX191"></A>
<DT><CODE>ISATTY</CODE>
<DD><A NAME="IDX192"></A>
Substitute for isatty, if not available.
<P>
<A NAME="IDX193"></A>
<DT><CODE>LONGEST</CODE>
<DD><A NAME="IDX194"></A>
This is the longest integer type available on the host. If not defined,
it will default to <CODE>long long</CODE> or <CODE>long</CODE>, depending on
<CODE>CC_HAS_LONG_LONG</CODE>.
<P>
<A NAME="IDX195"></A>
<DT><CODE>CC_HAS_LONG_LONG</CODE>
<DD><A NAME="IDX196"></A>
<A NAME="IDX197"></A>
Define this if the host C compiler supports <CODE>long long</CODE>. This is set
by the <CODE>configure</CODE> script.
<P>
<A NAME="IDX198"></A>
<DT><CODE>PRINTF_HAS_LONG_LONG</CODE>
<DD><A NAME="IDX199"></A>
Define this if the host can handle printing of long long integers via
the printf format conversion specifier <CODE>ll</CODE>. This is set by the
<CODE>configure</CODE> script.
<P>
<A NAME="IDX200"></A>
<DT><CODE>HAVE_LONG_DOUBLE</CODE>
<DD><A NAME="IDX201"></A>
Define this if the host C compiler supports <CODE>long double</CODE>. This is
set by the <CODE>configure</CODE> script.
<P>
<A NAME="IDX202"></A>
<DT><CODE>PRINTF_HAS_LONG_DOUBLE</CODE>
<DD><A NAME="IDX203"></A>
Define this if the host can handle printing of long double float-point
numbers via the printf format conversion specifier <CODE>Lg</CODE>. This is
set by the <CODE>configure</CODE> script.
<P>
<A NAME="IDX204"></A>
<DT><CODE>SCANF_HAS_LONG_DOUBLE</CODE>
<DD><A NAME="IDX205"></A>
Define this if the host can handle the parsing of long double
float-point numbers via the scanf format conversion specifier
<CODE>Lg</CODE>. This is set by the <CODE>configure</CODE> script.
<P>
<A NAME="IDX206"></A>
<DT><CODE>LSEEK_NOT_LINEAR</CODE>
<DD><A NAME="IDX207"></A>
Define this if <CODE>lseek (n)</CODE> does not necessarily move to byte number
<CODE>n</CODE> in the file. This is only used when reading source files. It
is normally faster to define <CODE>CRLF_SOURCE_FILES</CODE> when possible.
<P>
<A NAME="IDX208"></A>
<DT><CODE>L_SET</CODE>
<DD><A NAME="IDX209"></A>
This macro is used as the argument to <CODE>lseek</CODE> (or, most commonly,
<CODE>bfd_seek</CODE>). FIXME, should be replaced by SEEK_SET instead,
which is the POSIX equivalent.
<P>
<A NAME="IDX210"></A>
<DT><CODE>MMAP_BASE_ADDRESS</CODE>
<DD><A NAME="IDX211"></A>
When using HAVE_MMAP, the first mapping should go at this address.
<P>
<A NAME="IDX212"></A>
<DT><CODE>MMAP_INCREMENT</CODE>
<DD><A NAME="IDX213"></A>
when using HAVE_MMAP, this is the increment between mappings.
<P>
<A NAME="IDX214"></A>
<DT><CODE>NORETURN</CODE>
<DD><A NAME="IDX215"></A>
If defined, this should be one or more tokens, such as <CODE>volatile</CODE>,
that can be used in both the declaration and definition of functions to
indicate that they never return. The default is already set correctly
if compiling with GCC. This will almost never need to be defined.
<P>
<A NAME="IDX216"></A>
<DT><CODE>ATTR_NORETURN</CODE>
<DD><A NAME="IDX217"></A>
If defined, this should be one or more tokens, such as
<CODE>__attribute__ ((noreturn))</CODE>, that can be used in the declarations
of functions to indicate that they never return. The default is already
set correctly if compiling with GCC. This will almost never need to be
defined.
<P>
<A NAME="IDX218"></A>
<DT><CODE>USE_GENERIC_DUMMY_FRAMES</CODE>
<DD><A NAME="IDX219"></A>
<A NAME="IDX220"></A>
Define this to 1 if the target is using the generic inferior function
call code. See <CODE>blockframe.c</CODE> for more information.
<P>
<A NAME="IDX221"></A>
<DT><CODE>USE_MMALLOC</CODE>
<DD><A NAME="IDX222"></A>
<A NAME="IDX223"></A>
GDB will use the <CODE>mmalloc</CODE> library for memory allocation
for symbol reading if this symbol is defined. Be careful defining it
since there are systems on which <CODE>mmalloc</CODE> does not work for some
reason. One example is the DECstation, where its RPC library can't
cope with our redefinition of <CODE>malloc</CODE> to call <CODE>mmalloc</CODE>.
When defining <CODE>USE_MMALLOC</CODE>, you will also have to set
<CODE>MMALLOC</CODE> in the Makefile, to point to the <CODE>mmalloc</CODE> library. This
define is set when you configure with <SAMP>`--with-mmalloc'</SAMP>.
<P>
<A NAME="IDX224"></A>
<DT><CODE>NO_MMCHECK</CODE>
<DD><A NAME="IDX225"></A>
<A NAME="IDX226"></A>
Define this if you are using <CODE>mmalloc</CODE>, but don't want the overhead
of checking the heap with <CODE>mmcheck</CODE>. Note that on some systems,
the C runtime makes calls to <CODE>malloc</CODE> prior to calling <CODE>main</CODE>, and if
<CODE>free</CODE> is ever called with these pointers after calling
<CODE>mmcheck</CODE> to enable checking, a memory corruption abort is certain
to occur. These systems can still use <CODE>mmalloc</CODE>, but must define
<CODE>NO_MMCHECK</CODE>.
<P>
<A NAME="IDX227"></A>
<DT><CODE>MMCHECK_FORCE</CODE>
<DD><A NAME="IDX228"></A>
Define this to 1 if the C runtime allocates memory prior to
<CODE>mmcheck</CODE> being called, but that memory is never freed so we don't
have to worry about it triggering a memory corruption abort. The
default is 0, which means that <CODE>mmcheck</CODE> will only install the heap
checking functions if there has not yet been any memory allocation
calls, and if it fails to install the functions, GDB will issue a
warning. This is currently defined if you configure using
<SAMP>`--with-mmalloc'</SAMP>.
<P>
<A NAME="IDX229"></A>
<DT><CODE>NO_SIGINTERRUPT</CODE>
<DD><A NAME="IDX230"></A>
<A NAME="IDX231"></A>
Define this to indicate that <CODE>siginterrupt</CODE> is not available.
<P>
<A NAME="IDX232"></A>
<DT><CODE>SEEK_CUR</CODE>
<DD><A NAME="IDX233"></A>
<A NAME="IDX234"></A>
<DT><CODE>SEEK_SET</CODE>
<DD><A NAME="IDX235"></A>
Define these to appropriate value for the system <CODE>lseek</CODE>, if not already
defined.
<P>
<A NAME="IDX236"></A>
<DT><CODE>STOP_SIGNAL</CODE>
<DD><A NAME="IDX237"></A>
This is the signal for stopping GDB. Defaults to
<CODE>SIGTSTP</CODE>. (Only redefined for the Convex.)
<P>
<A NAME="IDX238"></A>
<DT><CODE>USE_O_NOCTTY</CODE>
<DD><A NAME="IDX239"></A>
Define this if the interior's tty should be opened with the <CODE>O_NOCTTY</CODE>
flag. (FIXME: This should be a native-only flag, but <TT>`inflow.c'</TT> is
always linked in.)
<P>
<A NAME="IDX240"></A>
<DT><CODE>USG</CODE>
<DD><A NAME="IDX241"></A>
Means that System V (prior to SVR4) include files are in use. (FIXME:
This symbol is abused in <TT>`infrun.c'</TT>, <TT>`regex.c'</TT>,
<TT>`remote-nindy.c'</TT>, and <TT>`utils.c'</TT> for other things, at the
moment.)
<P>
<A NAME="IDX242"></A>
<DT><CODE>lint</CODE>
<DD><A NAME="IDX243"></A>
Define this to help placate <CODE>lint</CODE> in some situations.
<P>
<A NAME="IDX244"></A>
<DT><CODE>volatile</CODE>
<DD><A NAME="IDX245"></A>
Define this to override the defaults of <CODE>__volatile__</CODE> or
<CODE>/**/</CODE>.
</DL>
<P>
<A NAME="Target Architecture Definition"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_8.html#SEC63"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_9.html#SEC67"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,220 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: About this document</TITLE>
<META NAME="description" CONTENT="GDB Internals: About this document">
<META NAME="keywords" CONTENT="GDB Internals: About this document">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC_About"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
The buttons in the navigation panels have the following meaning:
<P></P>
<table border = "1">
<TR>
<TH> Button </TH>
<TH> Name </TH>
<TH> Go to </TH>
<TH> From 1.2.3 go to</TH>
</TR>
<TR>
<TD ALIGN="CENTER">
[ &lt; ] </TD>
<TD ALIGN="CENTER">
Back
</TD>
<TD>
previous section in reading order
</TD>
<TD>
1.2.2
</TD>
</TR>
<TR>
<TD ALIGN="CENTER">
[ &gt; ] </TD>
<TD ALIGN="CENTER">
Forward
</TD>
<TD>
next section in reading order
</TD>
<TD>
1.2.4
</TD>
</TR>
<TR>
<TD ALIGN="CENTER">
[ &lt;&lt; ] </TD>
<TD ALIGN="CENTER">
FastBack
</TD>
<TD>
previous or up-and-previous section
</TD>
<TD>
1.1
</TD>
</TR>
<TR>
<TD ALIGN="CENTER">
[ Up ] </TD>
<TD ALIGN="CENTER">
Up
</TD>
<TD>
up section
</TD>
<TD>
1.2
</TD>
</TR>
<TR>
<TD ALIGN="CENTER">
[ &gt;&gt; ] </TD>
<TD ALIGN="CENTER">
FastForward
</TD>
<TD>
next or up-and-next section
</TD>
<TD>
1.3
</TD>
</TR>
<TR>
<TD ALIGN="CENTER">
[Top] </TD>
<TD ALIGN="CENTER">
Top
</TD>
<TD>
cover (top) of document
</TD>
<TD>
&nbsp;
</TD>
</TR>
<TR>
<TD ALIGN="CENTER">
[Contents] </TD>
<TD ALIGN="CENTER">
Contents
</TD>
<TD>
table of contents
</TD>
<TD>
&nbsp;
</TD>
</TR>
<TR>
<TD ALIGN="CENTER">
[Index] </TD>
<TD ALIGN="CENTER">
Index
</TD>
<TD>
concept index
</TD>
<TD>
&nbsp;
</TD>
</TR>
<TR>
<TD ALIGN="CENTER">
[ ? ] </TD>
<TD ALIGN="CENTER">
About
</TD>
<TD>
this page
</TD>
<TD>
&nbsp;
</TD>
</TR>
</TABLE>
<P></P>
where the <STRONG> Example </STRONG> assumes that the current position
is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
the following structure:
<UL>
<LI> 1. Section One </LI>
<UL>
<LI>1.1 Subsection One-One</LI>
<UL>
<LI> ... </LI>
</UL>
<LI>1.2 Subsection One-Two</LI>
<UL>
<LI>1.2.1 Subsubsection One-Two-One
</LI><LI>1.2.2 Subsubsection One-Two-Two
</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
&lt;== Current Position </STRONG>
</LI><LI>1.2.4 Subsubsection One-Two-Four
</LI></UL>
<LI>1.3 Subsection One-Three</LI>
<UL>
<LI> ... </LI>
</UL>
<LI>1.4 Subsection One-Four</LI>
</UL>
</UL>
<HR SIZE=1>
<BR>
<FONT SIZE="-1">
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,79 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Footnotes</TITLE>
<META NAME="description" CONTENT="GDB Internals: Footnotes">
<META NAME="keywords" CONTENT="GDB Internals: Footnotes">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="gdbint_fot.html"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>Footnotes</H1>
<H3><A NAME="FOOT1" HREF="gdbint_4.html#DOCF1">(1)</A></H3>
<P>The function
cast is not portable ISO C.
<H3><A NAME="FOOT2" HREF="gdbint_4.html#DOCF2">(2)</A></H3>
<P>As of this writing (April 2001),
setting verbosity level is not yet implemented, and is always returned
as zero. So calling <CODE>ui_out_message</CODE> with a <VAR>verbosity</VAR>
argument more than zero will cause the message to never be printed.
<H3><A NAME="FOOT3" HREF="gdbint_9.html#DOCF3">(3)</A></H3>
<P>Some D10V instructions are
actually pairs of 16-bit sub-instructions. However, since you can't
jump into the middle of such a pair, code addresses can only refer to
full 32 bit instructions, which is what matters in this explanation.
<H3><A NAME="FOOT4" HREF="gdbint_9.html#DOCF4">(4)</A></H3>
<P>The
above is from the original example and uses K&#38;R C. GDB
has since converted to ISO C but lets ignore that.
<HR SIZE=1>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,103 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Short Table of Contents</TITLE>
<META NAME="description" CONTENT="GDB Internals: Short Table of Contents">
<META NAME="keywords" CONTENT="GDB Internals: Short Table of Contents">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC_OVERVIEW"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>Short Table of Contents</H1>
<BLOCKQUOTE>
<A NAME="TOC1" HREF="gdbint_1.html#SEC1">1. Requirements</A>
<BR>
<A NAME="TOC2" HREF="gdbint_2.html#SEC2">2. Overall Structure</A>
<BR>
<A NAME="TOC6" HREF="gdbint_3.html#SEC6">3. Algorithms</A>
<BR>
<A NAME="TOC16" HREF="gdbint_4.html#SEC16">4. User Interface</A>
<BR>
<A NAME="TOC27" HREF="gdbint_5.html#SEC27">5. libgdb</A>
<BR>
<A NAME="TOC37" HREF="gdbint_6.html#SEC37">6. Symbol Handling</A>
<BR>
<A NAME="TOC61" HREF="gdbint_7.html#SEC61">7. Language Support</A>
<BR>
<A NAME="TOC63" HREF="gdbint_8.html#SEC63">8. Host Definition</A>
<BR>
<A NAME="TOC67" HREF="gdbint_9.html#SEC67">9. Target Architecture Definition</A>
<BR>
<A NAME="TOC88" HREF="gdbint_10.html#SEC88">10. Target Vector Definition</A>
<BR>
<A NAME="TOC95" HREF="gdbint_11.html#SEC95">11. Native Debugging</A>
<BR>
<A NAME="TOC102" HREF="gdbint_12.html#SEC102">12. Support Libraries</A>
<BR>
<A NAME="TOC110" HREF="gdbint_13.html#SEC110">13. Coding</A>
<BR>
<A NAME="TOC126" HREF="gdbint_14.html#SEC126">14. Porting GDB</A>
<BR>
<A NAME="TOC129" HREF="gdbint_15.html#SEC129">15. Releasing GDB</A>
<BR>
<A NAME="TOC175" HREF="gdbint_16.html#SEC175">16. Testsuite</A>
<BR>
<A NAME="TOC179" HREF="gdbint_17.html#SEC179">17. Hints</A>
<BR>
<A NAME="TOC184" HREF="gdbint_18.html#SEC184">A. GNU Free Documentation License</A>
<BR>
<A NAME="TOC186" HREF="gdbint_19.html#SEC186">Index</A>
<BR>
</BLOCKQUOTE>
<HR SIZE=1>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>

View File

@@ -0,0 +1,422 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Table of Contents</TITLE>
<META NAME="description" CONTENT="GDB Internals: Table of Contents">
<META NAME="keywords" CONTENT="GDB Internals: Table of Contents">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC_Contents"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>Table of Contents</H1>
<UL>
<A NAME="TOC1" HREF="gdbint_1.html#SEC1">1. Requirements</A>
<BR>
<A NAME="TOC2" HREF="gdbint_2.html#SEC2">2. Overall Structure</A>
<BR>
<UL>
<A NAME="TOC3" HREF="gdbint_2.html#SEC3">2.1 The Symbol Side</A>
<BR>
<A NAME="TOC4" HREF="gdbint_2.html#SEC4">2.2 The Target Side</A>
<BR>
<A NAME="TOC5" HREF="gdbint_2.html#SEC5">2.3 Configurations</A>
<BR>
</UL>
<A NAME="TOC6" HREF="gdbint_3.html#SEC6">3. Algorithms</A>
<BR>
<UL>
<A NAME="TOC7" HREF="gdbint_3.html#SEC7">3.1 Frames</A>
<BR>
<A NAME="TOC8" HREF="gdbint_3.html#SEC8">3.2 Breakpoint Handling</A>
<BR>
<A NAME="TOC9" HREF="gdbint_3.html#SEC9">3.3 Single Stepping</A>
<BR>
<A NAME="TOC10" HREF="gdbint_3.html#SEC10">3.4 Signal Handling</A>
<BR>
<A NAME="TOC11" HREF="gdbint_3.html#SEC11">3.5 Thread Handling</A>
<BR>
<A NAME="TOC12" HREF="gdbint_3.html#SEC12">3.6 Inferior Function Calls</A>
<BR>
<A NAME="TOC13" HREF="gdbint_3.html#SEC13">3.7 Longjmp Support</A>
<BR>
<A NAME="TOC14" HREF="gdbint_3.html#SEC14">3.8 Watchpoints</A>
<BR>
<UL>
<A NAME="TOC15" HREF="gdbint_3.html#SEC15">3.8.1 x86 Watchpoints</A>
<BR>
</UL>
</UL>
<A NAME="TOC16" HREF="gdbint_4.html#SEC16">4. User Interface</A>
<BR>
<UL>
<A NAME="TOC17" HREF="gdbint_4.html#SEC17">4.1 Command Interpreter</A>
<BR>
<A NAME="TOC18" HREF="gdbint_4.html#SEC18">4.2 UI-Independent Output--the <CODE>ui_out</CODE> Functions</A>
<BR>
<UL>
<A NAME="TOC19" HREF="gdbint_4.html#SEC19">4.2.1 Overview and Terminology</A>
<BR>
<A NAME="TOC20" HREF="gdbint_4.html#SEC20">4.2.2 General Conventions</A>
<BR>
<A NAME="TOC21" HREF="gdbint_4.html#SEC21">4.2.3 Table, Tuple and List Functions</A>
<BR>
<A NAME="TOC22" HREF="gdbint_4.html#SEC22">4.2.4 Item Output Functions</A>
<BR>
<A NAME="TOC23" HREF="gdbint_4.html#SEC23">4.2.5 Utility Output Functions</A>
<BR>
<A NAME="TOC24" HREF="gdbint_4.html#SEC24">4.2.6 Examples of Use of <CODE>ui_out</CODE> functions</A>
<BR>
</UL>
<A NAME="TOC25" HREF="gdbint_4.html#SEC25">4.3 Console Printing</A>
<BR>
<A NAME="TOC26" HREF="gdbint_4.html#SEC26">4.4 TUI</A>
<BR>
</UL>
<A NAME="TOC27" HREF="gdbint_5.html#SEC27">5. libgdb</A>
<BR>
<UL>
<A NAME="TOC28" HREF="gdbint_5.html#SEC28">5.1 libgdb 1.0</A>
<BR>
<A NAME="TOC29" HREF="gdbint_5.html#SEC29">5.2 libgdb 2.0</A>
<BR>
<A NAME="TOC30" HREF="gdbint_5.html#SEC30">5.3 The <CODE>libgdb</CODE> Model</A>
<BR>
<A NAME="TOC31" HREF="gdbint_5.html#SEC31">5.4 CLI support</A>
<BR>
<A NAME="TOC32" HREF="gdbint_5.html#SEC32">5.5 <CODE>libgdb</CODE> components</A>
<BR>
</UL>
<A NAME="TOC37" HREF="gdbint_6.html#SEC37">6. Symbol Handling</A>
<BR>
<UL>
<A NAME="TOC38" HREF="gdbint_6.html#SEC38">6.1 Symbol Reading</A>
<BR>
<A NAME="TOC39" HREF="gdbint_6.html#SEC39">6.2 Partial Symbol Tables</A>
<BR>
<A NAME="TOC40" HREF="gdbint_6.html#SEC40">6.3 Types</A>
<BR>
<UL>
<A NAME="TOC41" HREF="gdbint_6.html#SEC41">Fundamental Types (e.g., <CODE>FT_VOID</CODE>, <CODE>FT_BOOLEAN</CODE>).</A>
<BR>
<A NAME="TOC42" HREF="gdbint_6.html#SEC42">Type Codes (e.g., <CODE>TYPE_CODE_PTR</CODE>, <CODE>TYPE_CODE_ARRAY</CODE>).</A>
<BR>
<A NAME="TOC43" HREF="gdbint_6.html#SEC43">Builtin Types (e.g., <CODE>builtin_type_void</CODE>, <CODE>builtin_type_char</CODE>).</A>
<BR>
</UL>
<A NAME="TOC44" HREF="gdbint_6.html#SEC44">6.4 Object File Formats</A>
<BR>
<UL>
<A NAME="TOC45" HREF="gdbint_6.html#SEC45">6.4.1 a.out</A>
<BR>
<A NAME="TOC46" HREF="gdbint_6.html#SEC46">6.4.2 COFF</A>
<BR>
<A NAME="TOC47" HREF="gdbint_6.html#SEC47">6.4.3 ECOFF</A>
<BR>
<A NAME="TOC48" HREF="gdbint_6.html#SEC48">6.4.4 XCOFF</A>
<BR>
<A NAME="TOC49" HREF="gdbint_6.html#SEC49">6.4.5 PE</A>
<BR>
<A NAME="TOC50" HREF="gdbint_6.html#SEC50">6.4.6 ELF</A>
<BR>
<A NAME="TOC51" HREF="gdbint_6.html#SEC51">6.4.7 SOM</A>
<BR>
<A NAME="TOC52" HREF="gdbint_6.html#SEC52">6.4.8 Other File Formats</A>
<BR>
</UL>
<A NAME="TOC53" HREF="gdbint_6.html#SEC53">6.5 Debugging File Formats</A>
<BR>
<UL>
<A NAME="TOC54" HREF="gdbint_6.html#SEC54">6.5.1 stabs</A>
<BR>
<A NAME="TOC55" HREF="gdbint_6.html#SEC55">6.5.2 COFF</A>
<BR>
<A NAME="TOC56" HREF="gdbint_6.html#SEC56">6.5.3 Mips debug (Third Eye)</A>
<BR>
<A NAME="TOC57" HREF="gdbint_6.html#SEC57">6.5.4 DWARF 1</A>
<BR>
<A NAME="TOC58" HREF="gdbint_6.html#SEC58">6.5.5 DWARF 2</A>
<BR>
<A NAME="TOC59" HREF="gdbint_6.html#SEC59">6.5.6 SOM</A>
<BR>
</UL>
<A NAME="TOC60" HREF="gdbint_6.html#SEC60">6.6 Adding a New Symbol Reader to GDB</A>
<BR>
</UL>
<A NAME="TOC61" HREF="gdbint_7.html#SEC61">7. Language Support</A>
<BR>
<UL>
<A NAME="TOC62" HREF="gdbint_7.html#SEC62">7.1 Adding a Source Language to GDB</A>
<BR>
</UL>
<A NAME="TOC63" HREF="gdbint_8.html#SEC63">8. Host Definition</A>
<BR>
<UL>
<A NAME="TOC64" HREF="gdbint_8.html#SEC64">8.1 Adding a New Host</A>
<BR>
<A NAME="TOC66" HREF="gdbint_8.html#SEC66">8.2 Host Conditionals</A>
<BR>
</UL>
<A NAME="TOC67" HREF="gdbint_9.html#SEC67">9. Target Architecture Definition</A>
<BR>
<UL>
<A NAME="TOC68" HREF="gdbint_9.html#SEC68">9.1 Operating System ABI Variant Handling</A>
<BR>
<A NAME="TOC69" HREF="gdbint_9.html#SEC69">9.2 Registers and Memory</A>
<BR>
<A NAME="TOC70" HREF="gdbint_9.html#SEC70">9.3 Pointers Are Not Always Addresses</A>
<BR>
<A NAME="TOC71" HREF="gdbint_9.html#SEC71">9.4 Address Classes</A>
<BR>
<A NAME="TOC72" HREF="gdbint_9.html#SEC72">9.5 Raw and Virtual Register Representations</A>
<BR>
<A NAME="TOC73" HREF="gdbint_9.html#SEC73">9.6 Using Different Register and Memory Data Representations</A>
<BR>
<A NAME="TOC74" HREF="gdbint_9.html#SEC74">9.7 Frame Interpretation</A>
<BR>
<A NAME="TOC75" HREF="gdbint_9.html#SEC75">9.8 Inferior Call Setup</A>
<BR>
<A NAME="TOC76" HREF="gdbint_9.html#SEC76">9.9 Compiler Characteristics</A>
<BR>
<A NAME="TOC77" HREF="gdbint_9.html#SEC77">9.10 Target Conditionals</A>
<BR>
<A NAME="TOC78" HREF="gdbint_9.html#SEC78">9.11 Adding a New Target</A>
<BR>
<A NAME="TOC79" HREF="gdbint_9.html#SEC79">9.12 Converting an existing Target Architecture to Multi-arch</A>
<BR>
<UL>
<A NAME="TOC80" HREF="gdbint_9.html#SEC80">9.12.1 Preparation</A>
<BR>
<A NAME="TOC81" HREF="gdbint_9.html#SEC81">9.12.2 Add the multi-arch initialization code</A>
<BR>
<A NAME="TOC82" HREF="gdbint_9.html#SEC82">9.12.3 Update multi-arch incompatible mechanisms</A>
<BR>
<A NAME="TOC83" HREF="gdbint_9.html#SEC83">9.12.4 Prepare for multi-arch level to one</A>
<BR>
<A NAME="TOC84" HREF="gdbint_9.html#SEC84">9.12.5 Set multi-arch level one</A>
<BR>
<A NAME="TOC85" HREF="gdbint_9.html#SEC85">9.12.6 Convert remaining macros</A>
<BR>
<A NAME="TOC86" HREF="gdbint_9.html#SEC86">9.12.7 Set multi-arch level to two</A>
<BR>
<A NAME="TOC87" HREF="gdbint_9.html#SEC87">9.12.8 Delete the TM file</A>
<BR>
</UL>
</UL>
<A NAME="TOC88" HREF="gdbint_10.html#SEC88">10. Target Vector Definition</A>
<BR>
<UL>
<A NAME="TOC89" HREF="gdbint_10.html#SEC89">10.1 File Targets</A>
<BR>
<A NAME="TOC90" HREF="gdbint_10.html#SEC90">10.2 Standard Protocol and Remote Stubs</A>
<BR>
<A NAME="TOC91" HREF="gdbint_10.html#SEC91">10.3 ROM Monitor Interface</A>
<BR>
<A NAME="TOC92" HREF="gdbint_10.html#SEC92">10.4 Custom Protocols</A>
<BR>
<A NAME="TOC93" HREF="gdbint_10.html#SEC93">10.5 Transport Layer</A>
<BR>
<A NAME="TOC94" HREF="gdbint_10.html#SEC94">10.6 Builtin Simulator</A>
<BR>
</UL>
<A NAME="TOC95" HREF="gdbint_11.html#SEC95">11. Native Debugging</A>
<BR>
<UL>
<A NAME="TOC96" HREF="gdbint_11.html#SEC96">11.1 Native core file Support</A>
<BR>
<A NAME="TOC97" HREF="gdbint_11.html#SEC97">11.2 ptrace</A>
<BR>
<A NAME="TOC98" HREF="gdbint_11.html#SEC98">11.3 /proc</A>
<BR>
<A NAME="TOC99" HREF="gdbint_11.html#SEC99">11.4 win32</A>
<BR>
<A NAME="TOC100" HREF="gdbint_11.html#SEC100">11.5 shared libraries</A>
<BR>
<A NAME="TOC101" HREF="gdbint_11.html#SEC101">11.6 Native Conditionals</A>
<BR>
</UL>
<A NAME="TOC102" HREF="gdbint_12.html#SEC102">12. Support Libraries</A>
<BR>
<UL>
<A NAME="TOC103" HREF="gdbint_12.html#SEC103">12.1 BFD</A>
<BR>
<A NAME="TOC104" HREF="gdbint_12.html#SEC104">12.2 opcodes</A>
<BR>
<A NAME="TOC105" HREF="gdbint_12.html#SEC105">12.3 readline</A>
<BR>
<A NAME="TOC106" HREF="gdbint_12.html#SEC106">12.4 mmalloc</A>
<BR>
<A NAME="TOC107" HREF="gdbint_12.html#SEC107">12.5 libiberty</A>
<BR>
<A NAME="TOC108" HREF="gdbint_12.html#SEC108">12.6 gnu-regex</A>
<BR>
<A NAME="TOC109" HREF="gdbint_12.html#SEC109">12.7 include</A>
<BR>
</UL>
<A NAME="TOC110" HREF="gdbint_13.html#SEC110">13. Coding</A>
<BR>
<UL>
<A NAME="TOC111" HREF="gdbint_13.html#SEC111">13.1 Cleanups</A>
<BR>
<A NAME="TOC112" HREF="gdbint_13.html#SEC112">13.2 Per-architecture module data</A>
<BR>
<A NAME="TOC113" HREF="gdbint_13.html#SEC113">13.3 Wrapping Output Lines</A>
<BR>
<A NAME="TOC114" HREF="gdbint_13.html#SEC114">13.4 GDB Coding Standards</A>
<BR>
<UL>
<A NAME="TOC115" HREF="gdbint_13.html#SEC115">13.4.1 ISO C</A>
<BR>
<A NAME="TOC116" HREF="gdbint_13.html#SEC116">13.4.2 Memory Management</A>
<BR>
<A NAME="TOC117" HREF="gdbint_13.html#SEC117">13.4.3 Compiler Warnings</A>
<BR>
<A NAME="TOC118" HREF="gdbint_13.html#SEC118">13.4.4 Formatting</A>
<BR>
<A NAME="TOC119" HREF="gdbint_13.html#SEC119">13.4.5 Comments</A>
<BR>
<A NAME="TOC120" HREF="gdbint_13.html#SEC120">13.4.6 C Usage</A>
<BR>
<A NAME="TOC121" HREF="gdbint_13.html#SEC121">13.4.7 Function Prototypes</A>
<BR>
<A NAME="TOC122" HREF="gdbint_13.html#SEC122">13.4.8 Internal Error Recovery</A>
<BR>
<A NAME="TOC123" HREF="gdbint_13.html#SEC123">13.4.9 File Names</A>
<BR>
<A NAME="TOC124" HREF="gdbint_13.html#SEC124">13.4.10 Include Files</A>
<BR>
<A NAME="TOC125" HREF="gdbint_13.html#SEC125">13.4.11 Clean Design and Portable Implementation</A>
<BR>
</UL>
</UL>
<A NAME="TOC126" HREF="gdbint_14.html#SEC126">14. Porting GDB</A>
<BR>
<UL>
<A NAME="TOC127" HREF="gdbint_14.html#SEC127">14.1 Configuring GDB for Release</A>
<BR>
</UL>
<A NAME="TOC129" HREF="gdbint_15.html#SEC129">15. Releasing GDB</A>
<BR>
<UL>
<A NAME="TOC130" HREF="gdbint_15.html#SEC130">15.1 Versions and Branches</A>
<BR>
<UL>
<A NAME="TOC131" HREF="gdbint_15.html#SEC131">15.1.1 Version Identifiers</A>
<BR>
<A NAME="TOC132" HREF="gdbint_15.html#SEC132">15.1.2 Branches</A>
<BR>
</UL>
<A NAME="TOC133" HREF="gdbint_15.html#SEC133">15.2 Branch Commit Policy</A>
<BR>
<A NAME="TOC134" HREF="gdbint_15.html#SEC134">15.3 Obsoleting code</A>
<BR>
<A NAME="TOC135" HREF="gdbint_15.html#SEC135">15.4 Before the Branch</A>
<BR>
<UL>
<A NAME="TOC140" HREF="gdbint_15.html#SEC140">15.4.1 Review the bug data base</A>
<BR>
<A NAME="TOC141" HREF="gdbint_15.html#SEC141">15.4.2 Check all cross targets build</A>
<BR>
</UL>
<A NAME="TOC142" HREF="gdbint_15.html#SEC142">15.5 Cut the Branch</A>
<BR>
<A NAME="TOC149" HREF="gdbint_15.html#SEC149">15.6 Stabilize the branch</A>
<BR>
<A NAME="TOC150" HREF="gdbint_15.html#SEC150">15.7 Create a Release</A>
<BR>
<UL>
<A NAME="TOC151" HREF="gdbint_15.html#SEC151">15.7.1 Create a release candidate</A>
<BR>
<A NAME="TOC159" HREF="gdbint_15.html#SEC159">15.7.2 Sanity check the tar ball</A>
<BR>
<A NAME="TOC160" HREF="gdbint_15.html#SEC160">15.7.3 Make a release candidate available</A>
<BR>
<A NAME="TOC161" HREF="gdbint_15.html#SEC161">15.7.4 Make a formal release available</A>
<BR>
<A NAME="TOC167" HREF="gdbint_15.html#SEC167">15.7.5 Cleanup</A>
<BR>
</UL>
<A NAME="TOC174" HREF="gdbint_15.html#SEC174">15.8 Post release</A>
<BR>
</UL>
<A NAME="TOC175" HREF="gdbint_16.html#SEC175">16. Testsuite</A>
<BR>
<UL>
<A NAME="TOC176" HREF="gdbint_16.html#SEC176">16.1 Using the Testsuite</A>
<BR>
<A NAME="TOC177" HREF="gdbint_16.html#SEC177">16.2 Testsuite Organization</A>
<BR>
<A NAME="TOC178" HREF="gdbint_16.html#SEC178">16.3 Writing Tests</A>
<BR>
</UL>
<A NAME="TOC179" HREF="gdbint_17.html#SEC179">17. Hints</A>
<BR>
<UL>
<A NAME="TOC180" HREF="gdbint_17.html#SEC180">17.1 Getting Started</A>
<BR>
<A NAME="TOC181" HREF="gdbint_17.html#SEC181">17.2 Debugging GDB with itself</A>
<BR>
<A NAME="TOC182" HREF="gdbint_17.html#SEC182">17.3 Submitting Patches</A>
<BR>
<A NAME="TOC183" HREF="gdbint_17.html#SEC183">17.4 Obsolete Conditionals</A>
<BR>
</UL>
<A NAME="TOC184" HREF="gdbint_18.html#SEC184">A. GNU Free Documentation License</A>
<BR>
<UL>
<A NAME="TOC185" HREF="gdbint_18.html#SEC185">ADDENDUM: How to use this License for your documents</A>
<BR>
</UL>
<A NAME="TOC186" HREF="gdbint_19.html#SEC186">Index</A>
<BR>
</UL>
<HR SIZE=1>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>