<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <!-- Copyright (C) 1988-2020 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." --> <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ --> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Library List Format (Debugging with GDB)</title> <meta name="description" content="Library List Format (Debugging with GDB)"> <meta name="keywords" content="Library List Format (Debugging with GDB)"> <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <meta name="Generator" content="makeinfo"> <link href="index.html#Top" rel="start" title="Top"> <link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> <link href="Remote-Protocol.html#Remote-Protocol" rel="up" title="Remote Protocol"> <link href="Library-List-Format-for-SVR4-Targets.html#Library-List-Format-for-SVR4-Targets" rel="next" title="Library List Format for SVR4 Targets"> <link href="File_002dI_002fO-Examples.html#File_002dI_002fO-Examples" rel="prev" title="File-I/O Examples"> <style type="text/css"> <!-- a.summary-letter {text-decoration: none} blockquote.indentedblock {margin-right: 0em} blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} blockquote.smallquotation {font-size: smaller} div.display {margin-left: 3.2em} div.example {margin-left: 3.2em} div.lisp {margin-left: 3.2em} div.smalldisplay {margin-left: 3.2em} div.smallexample {margin-left: 3.2em} div.smalllisp {margin-left: 3.2em} kbd {font-style: oblique} pre.display {font-family: inherit} pre.format {font-family: inherit} pre.menu-comment {font-family: serif} pre.menu-preformatted {font-family: serif} pre.smalldisplay {font-family: inherit; font-size: smaller} pre.smallexample {font-size: smaller} pre.smallformat {font-family: inherit; font-size: smaller} pre.smalllisp {font-size: smaller} span.nolinebreak {white-space: nowrap} span.roman {font-family: initial; font-weight: normal} span.sansserif {font-family: sans-serif; font-weight: normal} ul.no-bullet {list-style: none} --> </style> </head> <body lang="en"> <a name="Library-List-Format"></a> <div class="header"> <p> Next: <a href="Library-List-Format-for-SVR4-Targets.html#Library-List-Format-for-SVR4-Targets" accesskey="n" rel="next">Library List Format for SVR4 Targets</a>, Previous: <a href="File_002dI_002fO-Remote-Protocol-Extension.html#File_002dI_002fO-Remote-Protocol-Extension" accesskey="p" rel="prev">File-I/O Remote Protocol Extension</a>, Up: <a href="Remote-Protocol.html#Remote-Protocol" accesskey="u" rel="up">Remote Protocol</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> </div> <hr> <a name="Library-List-Format-1"></a> <h3 class="section">E.14 Library List Format</h3> <a name="index-library-list-format_002c-remote-protocol"></a> <p>On some platforms, a dynamic loader (e.g. <samp>ld.so</samp>) runs in the same process as your application to manage libraries. In this case, <small>GDB</small> can use the loader’s symbol table and normal memory operations to maintain a list of shared libraries. On other platforms, the operating system manages loaded libraries. <small>GDB</small> can not retrieve the list of currently loaded libraries through memory operations, so it uses the ‘<samp>qXfer:libraries:read</samp>’ packet (see <a href="General-Query-Packets.html#qXfer-library-list-read">qXfer library list read</a>) instead. The remote stub queries the target’s operating system and reports which libraries are loaded. </p> <p>The ‘<samp>qXfer:libraries:read</samp>’ packet returns an XML document which lists loaded libraries and their offsets. Each library has an associated name and one or more segment or section base addresses, which report where the library was loaded in memory. </p> <p>For the common case of libraries that are fully linked binaries, the library should have a list of segments. If the target supports dynamic linking of a relocatable object file, its library XML element should instead include a list of allocated sections. The segment or section bases are start addresses, not relocation offsets; they do not depend on the library’s link-time base addresses. </p> <p><small>GDB</small> must be linked with the Expat library to support XML library lists. See <a href="Requirements.html#Expat">Expat</a>. </p> <p>A simple memory map, with one loaded library relocated by a single offset, looks like this: </p> <div class="smallexample"> <pre class="smallexample"><library-list> <library name="/lib/libc.so.6"> <segment address="0x10000000"/> </library> </library-list> </pre></div> <p>Another simple memory map, with one loaded library with three allocated sections (.text, .data, .bss), looks like this: </p> <div class="smallexample"> <pre class="smallexample"><library-list> <library name="sharedlib.o"> <section address="0x10000000"/> <section address="0x20000000"/> <section address="0x30000000"/> </library> </library-list> </pre></div> <p>The format of a library list is described by this DTD: </p> <div class="smallexample"> <pre class="smallexample"><!-- library-list: Root element with versioning --> <!ELEMENT library-list (library)*> <!ATTLIST library-list version CDATA #FIXED "1.0"> <!ELEMENT library (segment*, section*)> <!ATTLIST library name CDATA #REQUIRED> <!ELEMENT segment EMPTY> <!ATTLIST segment address CDATA #REQUIRED> <!ELEMENT section EMPTY> <!ATTLIST section address CDATA #REQUIRED> </pre></div> <p>In addition, segments and section descriptors cannot be mixed within a single library element, and you must supply at least one segment or section for each library. </p> <hr> <div class="header"> <p> Next: <a href="Library-List-Format-for-SVR4-Targets.html#Library-List-Format-for-SVR4-Targets" accesskey="n" rel="next">Library List Format for SVR4 Targets</a>, Previous: <a href="File_002dI_002fO-Remote-Protocol-Extension.html#File_002dI_002fO-Remote-Protocol-Extension" accesskey="p" rel="prev">File-I/O Remote Protocol Extension</a>, Up: <a href="Remote-Protocol.html#Remote-Protocol" accesskey="u" rel="up">Remote Protocol</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> </div> </body> </html>