hc
2024-03-22 f63cd4c03ea42695d5f9b0e1798edd196923aae6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2021 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> &nbsp; [<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 &lsquo;<samp>qXfer:libraries-svr4:read</samp>&rsquo; 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">&lt;library-list-svr4 version=&quot;1.0&quot; main-lm=&quot;0xe4f8f8&quot;&gt;
  &lt;library name=&quot;/lib/ld-linux.so.2&quot; lm=&quot;0xe4f51c&quot; l_addr=&quot;0xe2d000&quot;
           l_ld=&quot;0xe4eefc&quot;/&gt;
  &lt;library name=&quot;/lib/libc.so.6&quot; lm=&quot;0xe4fbe8&quot; l_addr=&quot;0x154000&quot;
           l_ld=&quot;0x152350&quot;/&gt;
&lt;/library-list-svr&gt;
</pre></div>
 
<p>The format of an SVR4 library list is described by this DTD:
</p>
<div class="smallexample">
<pre class="smallexample">&lt;!-- library-list-svr4: Root element with versioning --&gt;
&lt;!ELEMENT library-list-svr4  (library)*&gt;
&lt;!ATTLIST library-list-svr4  version CDATA   #FIXED  &quot;1.0&quot;&gt;
&lt;!ATTLIST library-list-svr4  main-lm CDATA   #IMPLIED&gt;
&lt;!ELEMENT library            EMPTY&gt;
&lt;!ATTLIST library            name    CDATA   #REQUIRED&gt;
&lt;!ATTLIST library            lm      CDATA   #REQUIRED&gt;
&lt;!ATTLIST library            l_addr  CDATA   #REQUIRED&gt;
&lt;!ATTLIST library            l_ld    CDATA   #REQUIRED&gt;
</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> &nbsp; [<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>