xref: /aosp_15_r20/external/elfutils/doc/elfutils.sgml (revision 7304104da70ce23c86437a01be71edd1a2d7f37e)
1*7304104dSAndroid Build Coastguard Worker<!doctype book PUBLIC "-//OASIS//DTD DocBook V4.1//EN"[
2*7304104dSAndroid Build Coastguard Worker<!ENTITY package "<filename>new-bu</filename>">
3*7304104dSAndroid Build Coastguard Worker]>
4*7304104dSAndroid Build Coastguard Worker
5*7304104dSAndroid Build Coastguard Worker<book>
6*7304104dSAndroid Build Coastguard Worker  <title>New Binutils User's and Reference Manual</title>
7*7304104dSAndroid Build Coastguard Worker
8*7304104dSAndroid Build Coastguard Worker  <chapter>
9*7304104dSAndroid Build Coastguard Worker    <title><filename>libelf</filename> <acronym>ABI</acronym></title>
10*7304104dSAndroid Build Coastguard Worker
11*7304104dSAndroid Build Coastguard Worker    <simpara>The <acronym>ABI</acronym> of the
12*7304104dSAndroid Build Coastguard Worker    <filename>libelf</filename> implemented in the &package; package
13*7304104dSAndroid Build Coastguard Worker    is following that of Sun's implementation which in turn in derived
14*7304104dSAndroid Build Coastguard Worker    from the original SysVr4 implementation.  There are some
15*7304104dSAndroid Build Coastguard Worker    extensions over Sun's versions, though, which makes it impossible
16*7304104dSAndroid Build Coastguard Worker    to replace this implementation with Sun's.</simpara>
17*7304104dSAndroid Build Coastguard Worker
18*7304104dSAndroid Build Coastguard Worker    <beginpage>
19*7304104dSAndroid Build Coastguard Worker
20*7304104dSAndroid Build Coastguard Worker    <refentry xreflabel="Elf_Data" id="ElfUData">
21*7304104dSAndroid Build Coastguard Worker      <refnamediv>
22*7304104dSAndroid Build Coastguard Worker	<refname>Elf_Data</refname>
23*7304104dSAndroid Build Coastguard Worker	<refpurpose>Descriptor for Data Buffer</refpurpose>
24*7304104dSAndroid Build Coastguard Worker      </refnamediv>
25*7304104dSAndroid Build Coastguard Worker
26*7304104dSAndroid Build Coastguard Worker      <refsynopsisdiv>
27*7304104dSAndroid Build Coastguard Worker	<synopsis>
28*7304104dSAndroid Build Coastguard Worker#include &lt;libelf.h&gt;
29*7304104dSAndroid Build Coastguard Worker</synopsis>
30*7304104dSAndroid Build Coastguard Worker      </refsynopsisdiv>
31*7304104dSAndroid Build Coastguard Worker
32*7304104dSAndroid Build Coastguard Worker      <refsect1>
33*7304104dSAndroid Build Coastguard Worker	<title>Description</title>
34*7304104dSAndroid Build Coastguard Worker
35*7304104dSAndroid Build Coastguard Worker	<simpara>The <structname>Elf_Data</structname> structure is as
36*7304104dSAndroid Build Coastguard Worker	a descriptor for a data buffer associated with a section.
37*7304104dSAndroid Build Coastguard Worker	Every data buffer is associated with a specific section (see
38*7304104dSAndroid Build Coastguard Worker	<!-- xref --><structname>Elf_Scn</structname>).</simpara>
39*7304104dSAndroid Build Coastguard Worker
40*7304104dSAndroid Build Coastguard Worker	<simpara>A data buffer is created when reading a file.  In
41*7304104dSAndroid Build Coastguard Worker	this case only a single buffer is present in the section.  The
42*7304104dSAndroid Build Coastguard Worker	user can add as many sections as wanted to a section and they
43*7304104dSAndroid Build Coastguard Worker	can be retrieved using the <function>elf_getdata</function>
44*7304104dSAndroid Build Coastguard Worker	and <function>elf_rawdata</function> functions.<!-- xref
45*7304104dSAndroid Build Coastguard Worker	--></simpara>
46*7304104dSAndroid Build Coastguard Worker
47*7304104dSAndroid Build Coastguard Worker	<simpara>The <structname>Elf_Data</structname> structure
48*7304104dSAndroid Build Coastguard Worker	contains the following members:</simpara>
49*7304104dSAndroid Build Coastguard Worker
50*7304104dSAndroid Build Coastguard Worker	<programlisting>
51*7304104dSAndroid Build Coastguard Worker   void         *d_buf
52*7304104dSAndroid Build Coastguard Worker   Elf_Type      d_type
53*7304104dSAndroid Build Coastguard Worker   size_t        d_size
54*7304104dSAndroid Build Coastguard Worker   off_t         d_off
55*7304104dSAndroid Build Coastguard Worker   size_t        d_align
56*7304104dSAndroid Build Coastguard Worker   unsigned int  d_version
57*7304104dSAndroid Build Coastguard Worker</programlisting>
58*7304104dSAndroid Build Coastguard Worker
59*7304104dSAndroid Build Coastguard Worker	<simpara>All of these members can be modified directly by the
60*7304104dSAndroid Build Coastguard Worker	user.  They can be used to resize a section, to change its
61*7304104dSAndroid Build Coastguard Worker	content or type, and many more tasks.  This is also true for
62*7304104dSAndroid Build Coastguard Worker	the data read from a file.  The meaning of each member is as
63*7304104dSAndroid Build Coastguard Worker	follows:</simpara>
64*7304104dSAndroid Build Coastguard Worker
65*7304104dSAndroid Build Coastguard Worker	<variablelist>
66*7304104dSAndroid Build Coastguard Worker	  <varlistentry>
67*7304104dSAndroid Build Coastguard Worker	    <term><structfield>d_buf</structfield></term>
68*7304104dSAndroid Build Coastguard Worker	    <listitem>
69*7304104dSAndroid Build Coastguard Worker	      <simpara>The <structfield>d_buf</structfield> member is
70*7304104dSAndroid Build Coastguard Worker	      the pointer to the buffer with the actual data.  When
71*7304104dSAndroid Build Coastguard Worker	      the ELF file was read from a file the first and only
72*7304104dSAndroid Build Coastguard Worker	      data buffer of a section is allocated by the
73*7304104dSAndroid Build Coastguard Worker	      <filename>libelf</filename> library.  The user should
74*7304104dSAndroid Build Coastguard Worker	      not try to resize or free this buffer.  When the user
75*7304104dSAndroid Build Coastguard Worker	      adds a new data buffer to a section the associated
76*7304104dSAndroid Build Coastguard Worker	      memory block is normally allocated by the user.  It is
77*7304104dSAndroid Build Coastguard Worker	      important that the buffer must have a lifetime at least
78*7304104dSAndroid Build Coastguard Worker	      until the ELF file is closed entirely (important when
79*7304104dSAndroid Build Coastguard Worker	      the buffer is allocated on the stack).  If the buffer is
80*7304104dSAndroid Build Coastguard Worker	      not allocated on the stack it is the user's
81*7304104dSAndroid Build Coastguard Worker	      responsibility to free the buffer after it is not used
82*7304104dSAndroid Build Coastguard Worker	      anymore.  The <structfield>d_buf</structfield> member
83*7304104dSAndroid Build Coastguard Worker	      can contain a null pointer if the data buffer is
84*7304104dSAndroid Build Coastguard Worker	      empty.</simpara>
85*7304104dSAndroid Build Coastguard Worker	    </listitem>
86*7304104dSAndroid Build Coastguard Worker	  </varlistentry>
87*7304104dSAndroid Build Coastguard Worker
88*7304104dSAndroid Build Coastguard Worker	  <varlistentry>
89*7304104dSAndroid Build Coastguard Worker	    <term><structfield>d_type</structfield></term>
90*7304104dSAndroid Build Coastguard Worker	    <listitem>
91*7304104dSAndroid Build Coastguard Worker	      <simpara>The <structfield>d_type</structfield>
92*7304104dSAndroid Build Coastguard Worker	      determines how the data of the buffer is interpreted.
93*7304104dSAndroid Build Coastguard Worker	      This type is determined from the section type and must
94*7304104dSAndroid Build Coastguard Worker	      be the same for all data buffers for a section.  See
95*7304104dSAndroid Build Coastguard Worker	      <!-- xref --><type>Elf_Type</type> for more information.
96*7304104dSAndroid Build Coastguard Worker	      The <function><link linkend="elfUgetdata"
97*7304104dSAndroid Build Coastguard Worker	      endterm="elfUgetdata.refname"></link></function>
98*7304104dSAndroid Build Coastguard Worker	      function uses this information to convert the data of
99*7304104dSAndroid Build Coastguard Worker	      the buffer between the external form and the form
100*7304104dSAndroid Build Coastguard Worker	      represented to the user and back if necessary.</simpara>
101*7304104dSAndroid Build Coastguard Worker	    </listitem>
102*7304104dSAndroid Build Coastguard Worker	  </varlistentry>
103*7304104dSAndroid Build Coastguard Worker
104*7304104dSAndroid Build Coastguard Worker	  <varlistentry>
105*7304104dSAndroid Build Coastguard Worker	    <term><structfield>d_version</structfield></term>
106*7304104dSAndroid Build Coastguard Worker	    <listitem>
107*7304104dSAndroid Build Coastguard Worker	      <simpara>The <structfield>d_version</structfield>
108*7304104dSAndroid Build Coastguard Worker              contains the ELF version of the file.</simpara>
109*7304104dSAndroid Build Coastguard Worker	    </listitem>
110*7304104dSAndroid Build Coastguard Worker	  </varlistentry>
111*7304104dSAndroid Build Coastguard Worker
112*7304104dSAndroid Build Coastguard Worker	  <varlistentry>
113*7304104dSAndroid Build Coastguard Worker	    <term><structfield>d_size</structfield></term>
114*7304104dSAndroid Build Coastguard Worker	    <listitem>
115*7304104dSAndroid Build Coastguard Worker	      <simpara>The <structfield>d_size</structfield> contains
116*7304104dSAndroid Build Coastguard Worker              the size of the buffer in bytes.</simpara>
117*7304104dSAndroid Build Coastguard Worker	    </listitem>
118*7304104dSAndroid Build Coastguard Worker	  </varlistentry>
119*7304104dSAndroid Build Coastguard Worker
120*7304104dSAndroid Build Coastguard Worker	  <varlistentry>
121*7304104dSAndroid Build Coastguard Worker	    <term><structfield>d_off</structfield></term>
122*7304104dSAndroid Build Coastguard Worker	    <listitem>
123*7304104dSAndroid Build Coastguard Worker	      <simpara>The <structfield>d_off</structfield> is the
124*7304104dSAndroid Build Coastguard Worker              offset into the section in bytes.</simpara>
125*7304104dSAndroid Build Coastguard Worker	    </listitem>
126*7304104dSAndroid Build Coastguard Worker	  </varlistentry>
127*7304104dSAndroid Build Coastguard Worker
128*7304104dSAndroid Build Coastguard Worker	  <varlistentry>
129*7304104dSAndroid Build Coastguard Worker	    <term><structfield>d_align</structfield></term>
130*7304104dSAndroid Build Coastguard Worker	    <listitem>
131*7304104dSAndroid Build Coastguard Worker	      <simpara>The <structfield>d_align</structfield> is the
132*7304104dSAndroid Build Coastguard Worker              address alignment of the section in bytes.</simpara>
133*7304104dSAndroid Build Coastguard Worker	    </listitem>
134*7304104dSAndroid Build Coastguard Worker	  </varlistentry>
135*7304104dSAndroid Build Coastguard Worker	</variablelist>
136*7304104dSAndroid Build Coastguard Worker      </refsect1>
137*7304104dSAndroid Build Coastguard Worker    </refentry>
138*7304104dSAndroid Build Coastguard Worker
139*7304104dSAndroid Build Coastguard Worker    <beginpage>
140*7304104dSAndroid Build Coastguard Worker
141*7304104dSAndroid Build Coastguard Worker    <refentry id="elfUgetdata">
142*7304104dSAndroid Build Coastguard Worker      <refnamediv>
143*7304104dSAndroid Build Coastguard Worker	<refname id="elfUgetdata.refname">elf_getdata</refname>
144*7304104dSAndroid Build Coastguard Worker	<refpurpose>Get washed data of section</refpurpose>
145*7304104dSAndroid Build Coastguard Worker      </refnamediv>
146*7304104dSAndroid Build Coastguard Worker
147*7304104dSAndroid Build Coastguard Worker      <refsynopsisdiv>
148*7304104dSAndroid Build Coastguard Worker	<funcsynopsis>
149*7304104dSAndroid Build Coastguard Worker	  <funcsynopsisinfo>
150*7304104dSAndroid Build Coastguard Worker#include &lt;libelf.h&gt;
151*7304104dSAndroid Build Coastguard Worker</funcsynopsisinfo>
152*7304104dSAndroid Build Coastguard Worker	  <funcprototype>
153*7304104dSAndroid Build Coastguard Worker	    <funcdef>Elf_Data *<function>elf_getdata</function></funcdef>
154*7304104dSAndroid Build Coastguard Worker	    <paramdef>Elf_Scn *<parameter>scn</parameter></paramdef>
155*7304104dSAndroid Build Coastguard Worker	    <paramdef>Elf_Data *<parameter>data</parameter></paramdef>
156*7304104dSAndroid Build Coastguard Worker	  </funcprototype>
157*7304104dSAndroid Build Coastguard Worker	</funcsynopsis>
158*7304104dSAndroid Build Coastguard Worker      </refsynopsisdiv>
159*7304104dSAndroid Build Coastguard Worker
160*7304104dSAndroid Build Coastguard Worker      <refsect1>
161*7304104dSAndroid Build Coastguard Worker	<title>Description</title>
162*7304104dSAndroid Build Coastguard Worker
163*7304104dSAndroid Build Coastguard Worker	<simpara>The <function>elf_getdata</function> function allows
164*7304104dSAndroid Build Coastguard Worker	the user to retrieve the data buffers of the section
165*7304104dSAndroid Build Coastguard Worker	<parameter>scn</parameter>.  There can be more than one buffer
166*7304104dSAndroid Build Coastguard Worker	if the user explicitly added them.  When a file is read the
167*7304104dSAndroid Build Coastguard Worker	<filename>libelf</filename> library creates exactly one data
168*7304104dSAndroid Build Coastguard Worker	buffer.</simpara>
169*7304104dSAndroid Build Coastguard Worker
170*7304104dSAndroid Build Coastguard Worker	<simpara>The first buffer in the list can be obtained by
171*7304104dSAndroid Build Coastguard Worker	passing a null pointer in the parameter
172*7304104dSAndroid Build Coastguard Worker	<parameter>data</parameter>.  To get the next data buffer the
173*7304104dSAndroid Build Coastguard Worker	previously returned value must be passed in the
174*7304104dSAndroid Build Coastguard Worker	<parameter>data</parameter> parameter.  If there are no more
175*7304104dSAndroid Build Coastguard Worker	buffer left in the list a null pointer is returned.</simpara>
176*7304104dSAndroid Build Coastguard Worker
177*7304104dSAndroid Build Coastguard Worker	<simpara>If the <parameter>data</parameter> parameter is not a
178*7304104dSAndroid Build Coastguard Worker	null pointer it must be a descriptor for a buffer
179*7304104dSAndroid Build Coastguard Worker	associated with the section <parameter>scn</parameter>.  If
180*7304104dSAndroid Build Coastguard Worker	this is not the case a null pointer is returned.  To
181*7304104dSAndroid Build Coastguard Worker	facilitate error handling <function>elf_getdata</function>
182*7304104dSAndroid Build Coastguard Worker	also returns a null pointer if the <parameter>scn</parameter>
183*7304104dSAndroid Build Coastguard Worker	parameter is a null pointer.</simpara>
184*7304104dSAndroid Build Coastguard Worker      </refsect1>
185*7304104dSAndroid Build Coastguard Worker    </refentry>
186*7304104dSAndroid Build Coastguard Worker
187*7304104dSAndroid Build Coastguard Worker    <refentry>
188*7304104dSAndroid Build Coastguard Worker      <refnamediv>
189*7304104dSAndroid Build Coastguard Worker	<refname id="elfUupdate.refname">elf_update</refname>
190*7304104dSAndroid Build Coastguard Worker	<refpurpose>update an ELF descriptor</refpurpose>
191*7304104dSAndroid Build Coastguard Worker      </refnamediv>
192*7304104dSAndroid Build Coastguard Worker
193*7304104dSAndroid Build Coastguard Worker      <refsynopsisdiv>
194*7304104dSAndroid Build Coastguard Worker	<funcsynopsis>
195*7304104dSAndroid Build Coastguard Worker	  <funcsynopsisinfo>
196*7304104dSAndroid Build Coastguard Worker#include &lt;libelf.h&gt;
197*7304104dSAndroid Build Coastguard Worker</funcsynopsisinfo>
198*7304104dSAndroid Build Coastguard Worker	  <funcprototype>
199*7304104dSAndroid Build Coastguard Worker	    <funcdef>off_t <function>elf_update</function></funcdef>
200*7304104dSAndroid Build Coastguard Worker	    <paramdef>Elf *<parameter>elf</parameter></paramdef>
201*7304104dSAndroid Build Coastguard Worker	    <paramdef>Elf_Cmd <parameter>cmd</parameter></paramdef>
202*7304104dSAndroid Build Coastguard Worker	  </funcprototype>
203*7304104dSAndroid Build Coastguard Worker	</funcsynopsis>
204*7304104dSAndroid Build Coastguard Worker      </refsynopsisdiv>
205*7304104dSAndroid Build Coastguard Worker
206*7304104dSAndroid Build Coastguard Worker      <refsect1>
207*7304104dSAndroid Build Coastguard Worker	<title>Description</title>
208*7304104dSAndroid Build Coastguard Worker
209*7304104dSAndroid Build Coastguard Worker	<simpara>The user is responsible for filling in the following
210*7304104dSAndroid Build Coastguard Worker	fields in the named data structures:</simpara>
211*7304104dSAndroid Build Coastguard Worker
212*7304104dSAndroid Build Coastguard Worker	<table>
213*7304104dSAndroid Build Coastguard Worker	  <title>Fields not set by <function>elf_update</function></title>
214*7304104dSAndroid Build Coastguard Worker	  <tgroup cols="3">
215*7304104dSAndroid Build Coastguard Worker            <colspec colwidth="90pt">
216*7304104dSAndroid Build Coastguard Worker            <colspec colwidth="110pt">
217*7304104dSAndroid Build Coastguard Worker	    <thead>
218*7304104dSAndroid Build Coastguard Worker	      <row>
219*7304104dSAndroid Build Coastguard Worker		<entry>Data Structure</entry>
220*7304104dSAndroid Build Coastguard Worker		<entry>Member</entry>
221*7304104dSAndroid Build Coastguard Worker		<entry>Exception</entry>
222*7304104dSAndroid Build Coastguard Worker	      </row>
223*7304104dSAndroid Build Coastguard Worker	    </thead>
224*7304104dSAndroid Build Coastguard Worker	    <tbody>
225*7304104dSAndroid Build Coastguard Worker	      <row>
226*7304104dSAndroid Build Coastguard Worker		<entry morerows="8"><type>Elfxx_Ehdr</type></entry>
227*7304104dSAndroid Build Coastguard Worker		<entry>e_ident[EI_DATA]</entry>
228*7304104dSAndroid Build Coastguard Worker		<entry>see below</entry>
229*7304104dSAndroid Build Coastguard Worker	      </row>
230*7304104dSAndroid Build Coastguard Worker	      <row>
231*7304104dSAndroid Build Coastguard Worker		<entry></entry>
232*7304104dSAndroid Build Coastguard Worker		<entry>e_type</entry>
233*7304104dSAndroid Build Coastguard Worker		<!-- <entry morerows="1"></entry> -->
234*7304104dSAndroid Build Coastguard Worker		<entry></entry>
235*7304104dSAndroid Build Coastguard Worker	      </row>
236*7304104dSAndroid Build Coastguard Worker	      <row>
237*7304104dSAndroid Build Coastguard Worker		<entry></entry>
238*7304104dSAndroid Build Coastguard Worker		<entry>e_machine</entry>
239*7304104dSAndroid Build Coastguard Worker		<entry></entry>
240*7304104dSAndroid Build Coastguard Worker	      </row>
241*7304104dSAndroid Build Coastguard Worker	      <row>
242*7304104dSAndroid Build Coastguard Worker		<entry></entry>
243*7304104dSAndroid Build Coastguard Worker		<entry>e_version</entry>
244*7304104dSAndroid Build Coastguard Worker		<entry>see below</entry>
245*7304104dSAndroid Build Coastguard Worker	      </row>
246*7304104dSAndroid Build Coastguard Worker	      <row>
247*7304104dSAndroid Build Coastguard Worker		<entry></entry>
248*7304104dSAndroid Build Coastguard Worker		<entry>e_entry</entry>
249*7304104dSAndroid Build Coastguard Worker		<entry></entry>
250*7304104dSAndroid Build Coastguard Worker	      </row>
251*7304104dSAndroid Build Coastguard Worker	      <row>
252*7304104dSAndroid Build Coastguard Worker		<entry></entry>
253*7304104dSAndroid Build Coastguard Worker		<entry>e_phoff</entry>
254*7304104dSAndroid Build Coastguard Worker		<entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry>
255*7304104dSAndroid Build Coastguard Worker	      </row>
256*7304104dSAndroid Build Coastguard Worker	      <row>
257*7304104dSAndroid Build Coastguard Worker		<entry></entry>
258*7304104dSAndroid Build Coastguard Worker		<entry>e_shoff</entry>
259*7304104dSAndroid Build Coastguard Worker		<entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry>
260*7304104dSAndroid Build Coastguard Worker	      </row>
261*7304104dSAndroid Build Coastguard Worker	      <row>
262*7304104dSAndroid Build Coastguard Worker		<entry></entry>
263*7304104dSAndroid Build Coastguard Worker		<entry>e_flags</entry>
264*7304104dSAndroid Build Coastguard Worker		<entry></entry>
265*7304104dSAndroid Build Coastguard Worker	      </row>
266*7304104dSAndroid Build Coastguard Worker	      <row>
267*7304104dSAndroid Build Coastguard Worker		<entry></entry>
268*7304104dSAndroid Build Coastguard Worker		<entry>e_shstrndx</entry>
269*7304104dSAndroid Build Coastguard Worker		<entry></entry>
270*7304104dSAndroid Build Coastguard Worker	      </row>
271*7304104dSAndroid Build Coastguard Worker	      <row>
272*7304104dSAndroid Build Coastguard Worker		<entry morerows="7">Elfxx_Phdr</entry>
273*7304104dSAndroid Build Coastguard Worker		<entry>p_type</entry>
274*7304104dSAndroid Build Coastguard Worker		<entry morerows="7"></entry>
275*7304104dSAndroid Build Coastguard Worker	      </row>
276*7304104dSAndroid Build Coastguard Worker	      <row>
277*7304104dSAndroid Build Coastguard Worker		<entry></entry>
278*7304104dSAndroid Build Coastguard Worker		<entry>p_offset</entry>
279*7304104dSAndroid Build Coastguard Worker		<entry></entry>
280*7304104dSAndroid Build Coastguard Worker	      </row>
281*7304104dSAndroid Build Coastguard Worker	      <row>
282*7304104dSAndroid Build Coastguard Worker		<entry></entry>
283*7304104dSAndroid Build Coastguard Worker		<entry>p_vaddr</entry>
284*7304104dSAndroid Build Coastguard Worker		<entry></entry>
285*7304104dSAndroid Build Coastguard Worker	      </row>
286*7304104dSAndroid Build Coastguard Worker	      <row>
287*7304104dSAndroid Build Coastguard Worker		<entry></entry>
288*7304104dSAndroid Build Coastguard Worker		<entry>p_paddr</entry>
289*7304104dSAndroid Build Coastguard Worker		<entry></entry>
290*7304104dSAndroid Build Coastguard Worker	      </row>
291*7304104dSAndroid Build Coastguard Worker	      <row>
292*7304104dSAndroid Build Coastguard Worker		<entry></entry>
293*7304104dSAndroid Build Coastguard Worker		<entry>p_filesz</entry>
294*7304104dSAndroid Build Coastguard Worker		<entry></entry>
295*7304104dSAndroid Build Coastguard Worker	      </row>
296*7304104dSAndroid Build Coastguard Worker	      <row>
297*7304104dSAndroid Build Coastguard Worker		<entry></entry>
298*7304104dSAndroid Build Coastguard Worker		<entry>p_memsz</entry>
299*7304104dSAndroid Build Coastguard Worker		<entry></entry>
300*7304104dSAndroid Build Coastguard Worker	      </row>
301*7304104dSAndroid Build Coastguard Worker	      <row>
302*7304104dSAndroid Build Coastguard Worker		<entry></entry>
303*7304104dSAndroid Build Coastguard Worker		<entry>p_flags</entry>
304*7304104dSAndroid Build Coastguard Worker		<entry></entry>
305*7304104dSAndroid Build Coastguard Worker	      </row>
306*7304104dSAndroid Build Coastguard Worker	      <row>
307*7304104dSAndroid Build Coastguard Worker		<entry></entry>
308*7304104dSAndroid Build Coastguard Worker		<entry>p_align</entry>
309*7304104dSAndroid Build Coastguard Worker		<entry></entry>
310*7304104dSAndroid Build Coastguard Worker	      </row>
311*7304104dSAndroid Build Coastguard Worker
312*7304104dSAndroid Build Coastguard Worker	      <row>
313*7304104dSAndroid Build Coastguard Worker		<entry morerows="9">Elfxx_Shdr</entry>
314*7304104dSAndroid Build Coastguard Worker		<entry>sh_name</entry>
315*7304104dSAndroid Build Coastguard Worker		<entry morerows="3"></entry>
316*7304104dSAndroid Build Coastguard Worker	      </row>
317*7304104dSAndroid Build Coastguard Worker	      <row>
318*7304104dSAndroid Build Coastguard Worker		<entry></entry>
319*7304104dSAndroid Build Coastguard Worker		<entry>sh_type</entry>
320*7304104dSAndroid Build Coastguard Worker		<entry></entry>
321*7304104dSAndroid Build Coastguard Worker	      </row>
322*7304104dSAndroid Build Coastguard Worker	      <row>
323*7304104dSAndroid Build Coastguard Worker		<entry></entry>
324*7304104dSAndroid Build Coastguard Worker		<entry>sh_flags</entry>
325*7304104dSAndroid Build Coastguard Worker		<entry></entry>
326*7304104dSAndroid Build Coastguard Worker	      </row>
327*7304104dSAndroid Build Coastguard Worker	      <row>
328*7304104dSAndroid Build Coastguard Worker		<entry></entry>
329*7304104dSAndroid Build Coastguard Worker		<entry>sh_addr</entry>
330*7304104dSAndroid Build Coastguard Worker		<entry></entry>
331*7304104dSAndroid Build Coastguard Worker	      </row>
332*7304104dSAndroid Build Coastguard Worker	      <row>
333*7304104dSAndroid Build Coastguard Worker		<entry></entry>
334*7304104dSAndroid Build Coastguard Worker		<entry>sh_offset</entry>
335*7304104dSAndroid Build Coastguard Worker		<entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry>
336*7304104dSAndroid Build Coastguard Worker	      </row>
337*7304104dSAndroid Build Coastguard Worker	      <row>
338*7304104dSAndroid Build Coastguard Worker		<entry></entry>
339*7304104dSAndroid Build Coastguard Worker		<entry>sh_size</entry>
340*7304104dSAndroid Build Coastguard Worker		<entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry>
341*7304104dSAndroid Build Coastguard Worker	      </row>
342*7304104dSAndroid Build Coastguard Worker	      <row>
343*7304104dSAndroid Build Coastguard Worker		<entry></entry>
344*7304104dSAndroid Build Coastguard Worker		<entry>sh_link</entry>
345*7304104dSAndroid Build Coastguard Worker		<!-- <entry morerows="1"></entry> -->
346*7304104dSAndroid Build Coastguard Worker		<entry></entry>
347*7304104dSAndroid Build Coastguard Worker	      </row>
348*7304104dSAndroid Build Coastguard Worker	      <row>
349*7304104dSAndroid Build Coastguard Worker		<entry></entry>
350*7304104dSAndroid Build Coastguard Worker		<entry>sh_info</entry>
351*7304104dSAndroid Build Coastguard Worker		<entry></entry>
352*7304104dSAndroid Build Coastguard Worker	      </row>
353*7304104dSAndroid Build Coastguard Worker	      <row>
354*7304104dSAndroid Build Coastguard Worker		<entry></entry>
355*7304104dSAndroid Build Coastguard Worker		<entry>sh_addralign</entry>
356*7304104dSAndroid Build Coastguard Worker		<entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry>
357*7304104dSAndroid Build Coastguard Worker	      </row>
358*7304104dSAndroid Build Coastguard Worker	      <row>
359*7304104dSAndroid Build Coastguard Worker		<entry></entry>
360*7304104dSAndroid Build Coastguard Worker		<entry>sh_entsize</entry>
361*7304104dSAndroid Build Coastguard Worker		<entry></entry>
362*7304104dSAndroid Build Coastguard Worker	      </row>
363*7304104dSAndroid Build Coastguard Worker
364*7304104dSAndroid Build Coastguard Worker	      <row>
365*7304104dSAndroid Build Coastguard Worker		<entry morerows="5">Elf_Data</entry>
366*7304104dSAndroid Build Coastguard Worker		<entry>d_buf</entry>
367*7304104dSAndroid Build Coastguard Worker		<entry morerows="2"></entry>
368*7304104dSAndroid Build Coastguard Worker	      </row>
369*7304104dSAndroid Build Coastguard Worker	      <row>
370*7304104dSAndroid Build Coastguard Worker		<entry></entry>
371*7304104dSAndroid Build Coastguard Worker		<entry>d_type</entry>
372*7304104dSAndroid Build Coastguard Worker		<entry></entry>
373*7304104dSAndroid Build Coastguard Worker	      </row>
374*7304104dSAndroid Build Coastguard Worker	      <row>
375*7304104dSAndroid Build Coastguard Worker		<entry></entry>
376*7304104dSAndroid Build Coastguard Worker		<entry>d_size</entry>
377*7304104dSAndroid Build Coastguard Worker		<entry></entry>
378*7304104dSAndroid Build Coastguard Worker	      </row>
379*7304104dSAndroid Build Coastguard Worker	      <row>
380*7304104dSAndroid Build Coastguard Worker		<entry></entry>
381*7304104dSAndroid Build Coastguard Worker		<entry>d_off</entry>
382*7304104dSAndroid Build Coastguard Worker		<entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry>
383*7304104dSAndroid Build Coastguard Worker	      </row>
384*7304104dSAndroid Build Coastguard Worker	      <row>
385*7304104dSAndroid Build Coastguard Worker		<entry></entry>
386*7304104dSAndroid Build Coastguard Worker		<entry>d_align</entry>
387*7304104dSAndroid Build Coastguard Worker		<!-- <entry morerows="1"></entry> -->
388*7304104dSAndroid Build Coastguard Worker		<entry></entry>
389*7304104dSAndroid Build Coastguard Worker	      </row>
390*7304104dSAndroid Build Coastguard Worker	      <row>
391*7304104dSAndroid Build Coastguard Worker		<entry></entry>
392*7304104dSAndroid Build Coastguard Worker		<entry>d_version</entry>
393*7304104dSAndroid Build Coastguard Worker		<entry></entry>
394*7304104dSAndroid Build Coastguard Worker	      </row>
395*7304104dSAndroid Build Coastguard Worker	    </tbody>
396*7304104dSAndroid Build Coastguard Worker	  </tgroup>
397*7304104dSAndroid Build Coastguard Worker	</table>
398*7304104dSAndroid Build Coastguard Worker
399*7304104dSAndroid Build Coastguard Worker	<simpara>Two fields of the ELF header are handled in a special
400*7304104dSAndroid Build Coastguard Worker	way:</simpara>
401*7304104dSAndroid Build Coastguard Worker
402*7304104dSAndroid Build Coastguard Worker	<variablelist>
403*7304104dSAndroid Build Coastguard Worker	  <varlistentry>
404*7304104dSAndroid Build Coastguard Worker	    <term>e_version</term>
405*7304104dSAndroid Build Coastguard Worker	    <listitem>
406*7304104dSAndroid Build Coastguard Worker	      <simpara>The user can set this field to the vvalue for
407*7304104dSAndroid Build Coastguard Worker	      the version to be used.  It is an error if the library
408*7304104dSAndroid Build Coastguard Worker	      cannot handle this version.  If the field contains the
409*7304104dSAndroid Build Coastguard Worker	      value <symbol>EV_NONE</symbol> the library will fill in
410*7304104dSAndroid Build Coastguard Worker	      its own internal version.</simpara>
411*7304104dSAndroid Build Coastguard Worker	    </listitem>
412*7304104dSAndroid Build Coastguard Worker	  </varlistentry>
413*7304104dSAndroid Build Coastguard Worker
414*7304104dSAndroid Build Coastguard Worker	  <varlistentry>
415*7304104dSAndroid Build Coastguard Worker	    <term>e_ident[EI_DATA]</term>
416*7304104dSAndroid Build Coastguard Worker	    <listitem>
417*7304104dSAndroid Build Coastguard Worker	      <simpara>The user should fill in the byte ordering for
418*7304104dSAndroid Build Coastguard Worker	      the file.  If the value of the field is
419*7304104dSAndroid Build Coastguard Worker	      <symbol>ELFDATANONE</symbol> the library replaces it
420*7304104dSAndroid Build Coastguard Worker	      with the native byte ordering for the machine.</simpara>
421*7304104dSAndroid Build Coastguard Worker	    </listitem>
422*7304104dSAndroid Build Coastguard Worker	  </varlistentry>
423*7304104dSAndroid Build Coastguard Worker	</variablelist>
424*7304104dSAndroid Build Coastguard Worker      </refsect1>
425*7304104dSAndroid Build Coastguard Worker    </refentry>
426*7304104dSAndroid Build Coastguard Worker  </chapter>
427*7304104dSAndroid Build Coastguard Worker
428*7304104dSAndroid Build Coastguard Worker  <chapter>
429*7304104dSAndroid Build Coastguard Worker    <title><filename>libelf</filename> Internals</title>
430*7304104dSAndroid Build Coastguard Worker
431*7304104dSAndroid Build Coastguard Worker    <simpara>Since the binary format handling tools need constant
432*7304104dSAndroid Build Coastguard Worker    attention since there are always new machines and variants
433*7304104dSAndroid Build Coastguard Worker    therefore coming out it is important to have the implementation
434*7304104dSAndroid Build Coastguard Worker    well documented.  Only this way extensions can be made in the
435*7304104dSAndroid Build Coastguard Worker    right places and the mistakes of the past avoided.</simpara>
436*7304104dSAndroid Build Coastguard Worker  </chapter>
437*7304104dSAndroid Build Coastguard Worker</book>
438*7304104dSAndroid Build Coastguard Worker<!-- Keep this comment at the end of the file
439*7304104dSAndroid Build Coastguard WorkerLocal variables:
440*7304104dSAndroid Build Coastguard Workermode: sgml
441*7304104dSAndroid Build Coastguard Workersgml-omitag:nil
442*7304104dSAndroid Build Coastguard Workersgml-shorttag:t
443*7304104dSAndroid Build Coastguard WorkerEnd:
444*7304104dSAndroid Build Coastguard Worker-->
445