138 lines
6.9 KiB
HTML
138 lines
6.9 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<!-- Copyright (C) 1988-2022 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 5.1, http://www.gnu.org/software/texinfo/ -->
|
|
<head>
|
|
<title>Debugging with GDB: Library List Format for SVR4 Targets</title>
|
|
|
|
<meta name="description" content="Debugging with GDB: Library List Format for SVR4 Targets">
|
|
<meta name="keywords" content="Debugging with GDB: Library List Format for SVR4 Targets">
|
|
<meta name="resource-type" content="document">
|
|
<meta name="distribution" content="global">
|
|
<meta name="Generator" content="makeinfo">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<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="Memory-Map-Format.html#Memory-Map-Format" rel="next" title="Memory Map Format">
|
|
<link href="Library-List-Format.html#Library-List-Format" rel="previous" title="Library List Format">
|
|
<style type="text/css">
|
|
<!--
|
|
a.summary-letter {text-decoration: none}
|
|
blockquote.smallquotation {font-size: smaller}
|
|
div.display {margin-left: 3.2em}
|
|
div.example {margin-left: 3.2em}
|
|
div.indentedblock {margin-left: 3.2em}
|
|
div.lisp {margin-left: 3.2em}
|
|
div.smalldisplay {margin-left: 3.2em}
|
|
div.smallexample {margin-left: 3.2em}
|
|
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
|
|
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.nocodebreak {white-space:nowrap}
|
|
span.nolinebreak {white-space:nowrap}
|
|
span.roman {font-family:serif; font-weight:normal}
|
|
span.sansserif {font-family:sans-serif; font-weight:normal}
|
|
ul.no-bullet {list-style: none}
|
|
-->
|
|
</style>
|
|
|
|
|
|
</head>
|
|
|
|
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
|
|
<a name="Library-List-Format-for-SVR4-Targets"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="Memory-Map-Format.html#Memory-Map-Format" accesskey="n" rel="next">Memory Map Format</a>, Previous: <a href="Library-List-Format.html#Library-List-Format" accesskey="p" rel="previous">Library List Format</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-for-SVR4-Targets-1"></a>
|
|
<h3 class="section">E.15 Library List Format for SVR4 Targets</h3>
|
|
<a name="index-library-list-format_002c-remote-protocol-1"></a>
|
|
|
|
<p>On SVR4 platforms <small>GDB</small> can use the symbol table of a dynamic loader
|
|
(e.g. <samp>ld.so</samp>) and normal memory operations to maintain a list of
|
|
shared libraries. Still a special library list provided by this packet is
|
|
more efficient for the <small>GDB</small> remote protocol.
|
|
</p>
|
|
<p>The ‘<samp>qXfer:libraries-svr4:read</samp>’ packet returns an XML document which lists
|
|
loaded libraries and their SVR4 linker parameters. For each library on SVR4
|
|
target, the following parameters are reported:
|
|
</p>
|
|
<ul class="no-bullet">
|
|
<li>- <code>name</code>, the absolute file name from the <code>l_name</code> field of
|
|
<code>struct link_map</code>.
|
|
</li><li>- <code>lm</code> with address of <code>struct link_map</code> used for TLS
|
|
(Thread Local Storage) access.
|
|
</li><li>- <code>l_addr</code>, the displacement as read from the field <code>l_addr</code> of
|
|
<code>struct link_map</code>. For prelinked libraries this is not an absolute
|
|
memory address. It is a displacement of absolute memory address against
|
|
address the file was prelinked to during the library load.
|
|
</li><li>- <code>l_ld</code>, which is memory address of the <code>PT_DYNAMIC</code> segment
|
|
</li></ul>
|
|
|
|
<p>Additionally the single <code>main-lm</code> attribute specifies address of
|
|
<code>struct link_map</code> used for the main executable. This parameter is used
|
|
for TLS access and its presence is optional.
|
|
</p>
|
|
<p><small>GDB</small> must be linked with the Expat library to support XML
|
|
SVR4 library lists. See <a href="Requirements.html#Expat">Expat</a>.
|
|
</p>
|
|
<p>A simple memory map, with two loaded libraries (which do not use prelink),
|
|
looks like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><library-list-svr4 version="1.0" main-lm="0xe4f8f8">
|
|
<library name="/lib/ld-linux.so.2" lm="0xe4f51c" l_addr="0xe2d000"
|
|
l_ld="0xe4eefc"/>
|
|
<library name="/lib/libc.so.6" lm="0xe4fbe8" l_addr="0x154000"
|
|
l_ld="0x152350"/>
|
|
</library-list-svr>
|
|
</pre></div>
|
|
|
|
<p>The format of an SVR4 library list is described by this DTD:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><!-- library-list-svr4: Root element with versioning -->
|
|
<!ELEMENT library-list-svr4 (library)*>
|
|
<!ATTLIST library-list-svr4 version CDATA #FIXED "1.0">
|
|
<!ATTLIST library-list-svr4 main-lm CDATA #IMPLIED>
|
|
<!ELEMENT library EMPTY>
|
|
<!ATTLIST library name CDATA #REQUIRED>
|
|
<!ATTLIST library lm CDATA #REQUIRED>
|
|
<!ATTLIST library l_addr CDATA #REQUIRED>
|
|
<!ATTLIST library l_ld CDATA #REQUIRED>
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="Memory-Map-Format.html#Memory-Map-Format" accesskey="n" rel="next">Memory Map Format</a>, Previous: <a href="Library-List-Format.html#Library-List-Format" accesskey="p" rel="previous">Library List Format</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>
|