1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<!-- Copyright (C) 1988-2021 Free Software Foundation, Inc. 4 5Permission is granted to copy, distribute and/or modify this document 6under the terms of the GNU Free Documentation License, Version 1.3 or 7any later version published by the Free Software Foundation; with the 8Invariant Sections being "Free Software" and "Free Software Needs 9Free Documentation", with the Front-Cover Texts being "A GNU Manual," 10and with the Back-Cover Texts as in (a) below. 11 12(a) The FSF's Back-Cover Text is: "You are free to copy and modify 13this GNU Manual. Buying copies from GNU Press supports the FSF in 14developing GNU and promoting software freedom." --> 15<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> 16<head> 17<title>Debugging with GDB: Automatic Overlay Debugging</title> 18 19<meta name="description" content="Debugging with GDB: Automatic Overlay Debugging"> 20<meta name="keywords" content="Debugging with GDB: Automatic Overlay Debugging"> 21<meta name="resource-type" content="document"> 22<meta name="distribution" content="global"> 23<meta name="Generator" content="makeinfo"> 24<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 25<link href="index.html#Top" rel="start" title="Top"> 26<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> 27<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> 28<link href="Overlays.html#Overlays" rel="up" title="Overlays"> 29<link href="Overlay-Sample-Program.html#Overlay-Sample-Program" rel="next" title="Overlay Sample Program"> 30<link href="Overlay-Commands.html#Overlay-Commands" rel="previous" title="Overlay Commands"> 31<style type="text/css"> 32<!-- 33a.summary-letter {text-decoration: none} 34blockquote.smallquotation {font-size: smaller} 35div.display {margin-left: 3.2em} 36div.example {margin-left: 3.2em} 37div.indentedblock {margin-left: 3.2em} 38div.lisp {margin-left: 3.2em} 39div.smalldisplay {margin-left: 3.2em} 40div.smallexample {margin-left: 3.2em} 41div.smallindentedblock {margin-left: 3.2em; font-size: smaller} 42div.smalllisp {margin-left: 3.2em} 43kbd {font-style:oblique} 44pre.display {font-family: inherit} 45pre.format {font-family: inherit} 46pre.menu-comment {font-family: serif} 47pre.menu-preformatted {font-family: serif} 48pre.smalldisplay {font-family: inherit; font-size: smaller} 49pre.smallexample {font-size: smaller} 50pre.smallformat {font-family: inherit; font-size: smaller} 51pre.smalllisp {font-size: smaller} 52span.nocodebreak {white-space:nowrap} 53span.nolinebreak {white-space:nowrap} 54span.roman {font-family:serif; font-weight:normal} 55span.sansserif {font-family:sans-serif; font-weight:normal} 56ul.no-bullet {list-style: none} 57--> 58</style> 59 60 61</head> 62 63<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> 64<a name="Automatic-Overlay-Debugging"></a> 65<div class="header"> 66<p> 67Next: <a href="Overlay-Sample-Program.html#Overlay-Sample-Program" accesskey="n" rel="next">Overlay Sample Program</a>, Previous: <a href="Overlay-Commands.html#Overlay-Commands" accesskey="p" rel="previous">Overlay Commands</a>, Up: <a href="Overlays.html#Overlays" accesskey="u" rel="up">Overlays</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> 68</div> 69<hr> 70<a name="Automatic-Overlay-Debugging-1"></a> 71<h3 class="section">14.3 Automatic Overlay Debugging</h3> 72<a name="index-automatic-overlay-debugging"></a> 73 74<p><small>GDB</small> can automatically track which overlays are mapped and which 75are not, given some simple co-operation from the overlay manager in the 76inferior. If you enable automatic overlay debugging with the 77<code>overlay auto</code> command (see <a href="Overlay-Commands.html#Overlay-Commands">Overlay Commands</a>), <small>GDB</small> 78looks in the inferior’s memory for certain variables describing the 79current state of the overlays. 80</p> 81<p>Here are the variables your overlay manager must define to support 82<small>GDB</small>’s automatic overlay debugging: 83</p> 84<dl compact="compact"> 85<dt><code>_ovly_table</code>:</dt> 86<dd><p>This variable must be an array of the following structures: 87</p> 88<div class="smallexample"> 89<pre class="smallexample">struct 90{ 91 /* The overlay's mapped address. */ 92 unsigned long vma; 93 94 /* The size of the overlay, in bytes. */ 95 unsigned long size; 96 97 /* The overlay's load address. */ 98 unsigned long lma; 99 100 /* Non-zero if the overlay is currently mapped; 101 zero otherwise. */ 102 unsigned long mapped; 103} 104</pre></div> 105 106</dd> 107<dt><code>_novlys</code>:</dt> 108<dd><p>This variable must be a four-byte signed integer, holding the total 109number of elements in <code>_ovly_table</code>. 110</p> 111</dd> 112</dl> 113 114<p>To decide whether a particular overlay is mapped or not, <small>GDB</small> 115looks for an entry in <code><span class="nolinebreak">_ovly_table</span></code><!-- /@w --> whose <code>vma</code> and 116<code>lma</code> members equal the VMA and LMA of the overlay’s section in the 117executable file. When <small>GDB</small> finds a matching entry, it consults 118the entry’s <code>mapped</code> member to determine whether the overlay is 119currently mapped. 120</p> 121<p>In addition, your overlay manager may define a function called 122<code>_ovly_debug_event</code>. If this function is defined, <small>GDB</small> 123will silently set a breakpoint there. If the overlay manager then 124calls this function whenever it has changed the overlay table, this 125will enable <small>GDB</small> to accurately keep track of which overlays 126are in program memory, and update any breakpoints that may be set 127in overlays. This will allow breakpoints to work even if the 128overlays are kept in ROM or other non-writable memory while they 129are not being executed. 130</p> 131<hr> 132<div class="header"> 133<p> 134Next: <a href="Overlay-Sample-Program.html#Overlay-Sample-Program" accesskey="n" rel="next">Overlay Sample Program</a>, Previous: <a href="Overlay-Commands.html#Overlay-Commands" accesskey="p" rel="previous">Overlay Commands</a>, Up: <a href="Overlays.html#Overlays" accesskey="u" rel="up">Overlays</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> 135</div> 136 137 138 139</body> 140</html> 141