<html lang="en">
<head>
<title>Bootstrapping - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Remote-Stub.html#Remote-Stub" title="Remote Stub">
<link rel="prev" href="Stub-Contents.html#Stub-Contents" title="Stub Contents">
<link rel="next" href="Debug-Session.html#Debug-Session" title="Debug Session">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988-2019 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software'' and ``Free Software Needs
Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
and with the Back-Cover Texts as in (a) below.

(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
</head>
<body>
<div class="node">
<a name="Bootstrapping"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Debug-Session.html#Debug-Session">Debug Session</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Stub-Contents.html#Stub-Contents">Stub Contents</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Remote-Stub.html#Remote-Stub">Remote Stub</a>
<hr>
</div>

<h4 class="subsection">20.5.2 What You Must Do for the Stub</h4>

<p><a name="index-remote-stub_002c-support-routines-1430"></a>The debugging stubs that come with <span class="sc">gdb</span> are set up for a particular
chip architecture, but they have no information about the rest of your
debugging target machine.

   <p>First of all you need to tell the stub how to communicate with the
serial port.

     <dl>
<dt><code>int getDebugChar()</code><dd><a name="index-getDebugChar-1431"></a>Write this subroutine to read a single character from the serial port. 
It may be identical to <code>getchar</code> for your target system; a
different name is used to allow you to distinguish the two if you wish.

     <br><dt><code>void putDebugChar(int)</code><dd><a name="index-putDebugChar-1432"></a>Write this subroutine to write a single character to the serial port. 
It may be identical to <code>putchar</code> for your target system; a
different name is used to allow you to distinguish the two if you wish. 
</dl>

   <p><a name="index-control-C_002c-and-remote-debugging-1433"></a><a name="index-interrupting-remote-targets-1434"></a>If you want <span class="sc">gdb</span> to be able to stop your program while it is
running, you need to use an interrupt-driven serial driver, and arrange
for it to stop when it receives a <code>^C</code> (&lsquo;<samp><span class="samp">\003</span></samp>&rsquo;, the control-C
character).  That is the character which <span class="sc">gdb</span> uses to tell the
remote system to stop.

   <p>Getting the debugging target to return the proper status to <span class="sc">gdb</span>
probably requires changes to the standard stub; one quick and dirty way
is to just execute a breakpoint instruction (the &ldquo;dirty&rdquo; part is that
<span class="sc">gdb</span> reports a <code>SIGTRAP</code> instead of a <code>SIGINT</code>).

   <p>Other routines you need to supply are:

     <dl>
<dt><code>void exceptionHandler (int </code><var>exception_number</var><code>, void *</code><var>exception_address</var><code>)</code><dd><a name="index-exceptionHandler-1435"></a>Write this function to install <var>exception_address</var> in the exception
handling tables.  You need to do this because the stub does not have any
way of knowing what the exception handling tables on your target system
are like (for example, the processor's table might be in <span class="sc">rom</span>,
containing entries which point to a table in <span class="sc">ram</span>). 
The <var>exception_number</var> specifies the exception which should be changed;
its meaning is architecture-dependent (for example, different numbers
might represent divide by zero, misaligned access, etc).  When this
exception occurs, control should be transferred directly to
<var>exception_address</var>, and the processor state (stack, registers,
and so on) should be just as it is when a processor exception occurs.  So if
you want to use a jump instruction to reach <var>exception_address</var>, it
should be a simple jump, not a jump to subroutine.

     <p>For the 386, <var>exception_address</var> should be installed as an interrupt
gate so that interrupts are masked while the handler runs.  The gate
should be at privilege level 0 (the most privileged level).  The
<span class="sc">sparc</span> and 68k stubs are able to mask interrupts themselves without
help from <code>exceptionHandler</code>.

     <br><dt><code>void flush_i_cache()</code><dd><a name="index-flush_005fi_005fcache-1436"></a>On <span class="sc">sparc</span> and <span class="sc">sparclite</span> only, write this subroutine to flush the
instruction cache, if any, on your target machine.  If there is no
instruction cache, this subroutine may be a no-op.

     <p>On target machines that have instruction caches, <span class="sc">gdb</span> requires this
function to make certain that the state of your program is stable. 
</dl>

<p class="noindent">You must also make sure this library routine is available:

     <dl>
<dt><code>void *memset(void *, int, int)</code><dd><a name="index-memset-1437"></a>This is the standard library function <code>memset</code> that sets an area of
memory to a known value.  If you have one of the free versions of
<code>libc.a</code>, <code>memset</code> can be found there; otherwise, you must
either obtain it from your hardware manufacturer, or write your own. 
</dl>

   <p>If you do not use the GNU C compiler, you may need other standard
library subroutines as well; this varies from one stub to another,
but in general the stubs are likely to use any of the common library
subroutines which <span class="sc">gcc</span> generates as inline code.

   </body></html>

