<sect2>
  <title>readelf</title>

  <formalpara>
    <title>Command: &config.PRE;/sections/readelf.sh</title>
    <para>
      <programlisting><inlinemediaobject><imageobject><imagedata
	format="linespecific"
	fileref="../../&config.PRE;/sections/readelf.sh"
      /></imageobject></inlinemediaobject></programlisting>
    </para>
  </formalpara>
  <formalpara>
    <title>Output: &config.OUT;/sections/readelf</title>
    <para>
      <programlisting><inlinemediaobject><imageobject><imagedata
	format="linespecific"
	fileref="../../&config.OUT;/sections/readelf"
      /></imageobject></inlinemediaobject></programlisting>
    </para>
  </formalpara>
  <simpara
    >The line starting with <quote>There are &calc.evil.magic.e_shnum.D;
    section headers</quote> shows the value of <literal>e_shnum</literal>
    and <literal>e_shoff</literal>. Since <xref linkend="offset.of.e_entry"/>
    we know that <literal>sizeof(&config.ELF.SHDR;)</literal> is
    &calc.elf.sizeof.Elf32.Shdr.D;.
  </simpara>
  <blockquote>
    <title>First byte beyond the section header table:</title>
    <simpara><literal
      >e_shoff + e_shnum * sizeof_Shdr =</literal
    ></simpara><simpara><literal
      >&calc.evil.magic.e_shoff.X; + 
      &calc.evil.magic.e_shnum.X; *
      &calc.elf.sizeof.Elf32.Shdr.X; =</literal
    ></simpara><simpara><literal
      >&calc.evil.magic.e_shoff.D; + 
      &calc.evil.magic.e_shnum.D; *
      &calc.elf.sizeof.Elf32.Shdr.D; =
      &calc.evil.magic.section.table.end.X; =
      &calc.evil.magic.section.table.end.D;</literal
    ></simpara>
  </blockquote>
  <simpara><application>ls</application> reported a file size of
    &calc.evil.magic.size.D; bytes.</simpara>
</sect2>
