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