<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ <!ENTITY % general-entities SYSTEM "../general.ent"> %general-entities; ]> <sect1 id="ch-system-binutils" role="wrap"> <?dbhtml filename="binutils.html"?> <sect1info condition="script"> <productname>binutils</productname> <productnumber>&binutils-version;</productnumber> <address>&binutils-url;</address> </sect1info> <title>Binutils-&binutils-version;</title> <indexterm zone="ch-system-binutils"> <primary sortas="a-Binutils">Binutils</primary> </indexterm> <sect2 role="package"> <title/> <para>The Binutils package contains a linker, an assembler, and other tools for handling object files.</para> <segmentedlist> <segtitle>&buildtime;</segtitle> <segtitle>&diskspace;</segtitle> <seglistitem> <seg>&binutils-fin-sbu;</seg> <seg>&binutils-fin-du;</seg> </seglistitem> </segmentedlist> </sect2> <sect2 role="installation"> <title>Installation of Binutils</title> <para>The Binutils documentation recommends building Binutils in a dedicated build directory:</para> <screen><userinput remap="pre">mkdir -v build cd build</userinput></screen> <para>Prepare Binutils for compilation:</para> <screen><userinput remap="configure">../configure --prefix=/usr \ --sysconfdir=/etc \ --enable-gold \ --enable-ld=default \ --enable-plugins \ --enable-shared \ --disable-werror \ --enable-64-bit-bfd \ --with-system-zlib \ --enable-default-hash-style=gnu</userinput></screen> <variablelist> <title>The meaning of the new configure parameters:</title> <varlistentry> <term><parameter>--enable-gold</parameter></term> <listitem> <para>Build the gold linker and install it as ld.gold (alongside the default linker).</para> </listitem> </varlistentry> <varlistentry> <term><parameter>--enable-ld=default</parameter></term> <listitem> <para>Build the original bfd linker and install it as both ld (the default linker) and ld.bfd.</para> </listitem> </varlistentry> <varlistentry> <term><parameter>--enable-plugins</parameter></term> <listitem> <para>Enables plugin support for the linker.</para> </listitem> </varlistentry> <varlistentry> <term><parameter>--with-system-zlib</parameter></term> <listitem> <para>Use the installed zlib library instead of building the included version.</para> </listitem> </varlistentry> </variablelist> <para>Compile the package:</para> <screen><userinput remap="make">make tooldir=/usr</userinput></screen> <variablelist> <title>The meaning of the make parameter:</title> <varlistentry> <term><parameter>tooldir=/usr</parameter></term> <listitem> <para>Normally, the tooldir (the directory where the executables will ultimately be located) is set to <filename class="directory">$(exec_prefix)/$(target_alias)</filename>. For example, x86_64 machines would expand that to <filename class="directory">/usr/x86_64-pc-linux-gnu</filename>. Because this is a custom system, this target-specific directory in <filename class="directory">/usr</filename> is not required. <filename class="directory">$(exec_prefix)/$(target_alias)</filename> would be used if the system were used to cross-compile (for example, compiling a package on an Intel machine that generates code that can be executed on PowerPC machines).</para> </listitem> </varlistentry> </variablelist> <important> <para>The test suite for Binutils in this section is considered critical. Do not skip it under any circumstances.</para> </important> <para>Test the results:</para> <screen><userinput remap="test">make -k check</userinput></screen> <para>For a list of failed tests, run:</para> <screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen> <para>Twelve tests fail in the gold test suite when the <option>--enable-default-pie</option> and <option>--enable-default-ssp</option> options are passed to GCC.</para> <!-- <para>Three tests in the gprofng suite are also known to fail.</para>--> <para>Install the package:</para> <screen><userinput remap="install">make tooldir=/usr install</userinput></screen> <para>Remove useless static libraries:</para> <screen><userinput remap="install">rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a</userinput></screen> </sect2> <sect2 id="contents-binutils" role="content"> <title>Contents of Binutils</title> <segmentedlist> <segtitle>Installed programs</segtitle> <segtitle>Installed libraries</segtitle> <segtitle>Installed directory</segtitle> <seglistitem> <seg>addr2line, ar, as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, ld.gold, nm, objcopy, objdump, ranlib, readelf, size, strings, and strip</seg> <seg>libbfd.so, libctf.so, libctf-nobfd.so, libgprofng.so, libopcodes.so, and libsframe.so</seg> <seg>/usr/lib/ldscripts</seg> </seglistitem> </segmentedlist> <variablelist> <bridgehead renderas="sect3">Short Descriptions</bridgehead> <?dbfo list-presentation="list"?> <?dbhtml list-presentation="table"?> <varlistentry id="addr2line"> <term><command>addr2line</command></term> <listitem> <para>Translates program addresses to file names and line numbers; given an address and the name of an executable, it uses the debugging information in the executable to determine which source file and line number are associated with the address</para> <indexterm zone="ch-system-binutils addr2line"> <primary sortas="b-addr2line">addr2line</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="ar"> <term><command>ar</command></term> <listitem> <para>Creates, modifies, and extracts from archives</para> <indexterm zone="ch-system-binutils ar"> <primary sortas="b-ar">ar</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="as"> <term><command>as</command></term> <listitem> <para>An assembler that assembles the output of <command>gcc</command> into object files</para> <indexterm zone="ch-system-binutils as"> <primary sortas="b-as">as</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="c-filt"> <term><command>c++filt</command></term> <listitem> <para>Used by the linker to de-mangle C++ and Java symbols and to keep overloaded functions from clashing</para> <indexterm zone="ch-system-binutils c-filt"> <primary sortas="b-c++filt">c++filt</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="dwp"> <term><command>dwp</command></term> <listitem> <para>The DWARF packaging utility</para> <indexterm zone="ch-system-binutils dwp"> <primary sortas="dwp">dwp</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="elfedit"> <term><command>elfedit</command></term> <listitem> <para>Updates the ELF headers of ELF files</para> <indexterm zone="ch-system-binutils elfedit"> <primary sortas="b-elfedit">elfedit</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="gprof"> <term><command>gprof</command></term> <listitem> <para>Displays call graph profile data</para> <indexterm zone="ch-system-binutils gprof"> <primary sortas="b-gprof">gprof</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="gprofng"> <term><command>gprofng</command></term> <listitem> <para>Gathers and analyzes performance data</para> <indexterm zone="ch-system-binutils gprofng"> <primary sortas="b-gprofng">gprofng</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="ld"> <term><command>ld</command></term> <listitem> <para>A linker that combines a number of object and archive files into a single file, relocating their data and tying up symbol references</para> <indexterm zone="ch-system-binutils ld"> <primary sortas="b-ld">ld</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="ld.gold"> <term><command>ld.gold</command></term> <listitem> <para>A cut down version of ld that only supports the elf object file format</para> <indexterm zone="ch-system-binutils ld.gold"> <primary sortas="b-ld.gold">ld.gold</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="ld.bfd"> <term><command>ld.bfd</command></term> <listitem> <para>A hard link to <command>ld</command></para> <indexterm zone="ch-system-binutils ld.bfd"> <primary sortas="b-ld.bfd">ld.bfd</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="nm"> <term><command>nm</command></term> <listitem> <para>Lists the symbols occurring in a given object file</para> <indexterm zone="ch-system-binutils nm"> <primary sortas="b-nm">nm</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="objcopy"> <term><command>objcopy</command></term> <listitem> <para>Translates one type of object file into another</para> <indexterm zone="ch-system-binutils objcopy"> <primary sortas="b-objcopy">objcopy</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="objdump"> <term><command>objdump</command></term> <listitem> <para>Displays information about the given object file, with options controlling the particular information to display; the information shown is useful to programmers who are working on the compilation tools</para> <indexterm zone="ch-system-binutils objdump"> <primary sortas="b-objdump">objdump</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="ranlib"> <term><command>ranlib</command></term> <listitem> <para>Generates an index of the contents of an archive and stores it in the archive; the index lists all of the symbols defined by archive members that are relocatable object files</para> <indexterm zone="ch-system-binutils ranlib"> <primary sortas="b-ranlib">ranlib</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="readelf"> <term><command>readelf</command></term> <listitem> <para>Displays information about ELF type binaries</para> <indexterm zone="ch-system-binutils readelf"> <primary sortas="b-readelf">readelf</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="size"> <term><command>size</command></term> <listitem> <para>Lists the section sizes and the total size for the given object files</para> <indexterm zone="ch-system-binutils size"> <primary sortas="b-size">size</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="strings"> <term><command>strings</command></term> <listitem> <para>Outputs, for each given file, the sequences of printable characters that are of at least the specified length (defaulting to four); for object files, it prints, by default, only the strings from the initializing and loading sections while for other types of files, it scans the entire file</para> <indexterm zone="ch-system-binutils strings"> <primary sortas="b-strings">strings</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="strip"> <term><command>strip</command></term> <listitem> <para>Discards symbols from object files</para> <indexterm zone="ch-system-binutils strip"> <primary sortas="b-strip">strip</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="libbfd"> <term><filename class="libraryfile">libbfd</filename></term> <listitem> <para>The Binary File Descriptor library</para> <indexterm zone="ch-system-binutils libbfd"> <primary sortas="c-libbfd">libbfd</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="libctf"> <term><filename class="libraryfile">libctf</filename></term> <listitem> <para>The Compat ANSI-C Type Format debugging support library</para> <indexterm zone="ch-system-binutils libctf"> <primary sortas="c-libctf">libctf</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="libctf-nobfd"> <term><filename class="libraryfile">libctf-nobfd</filename></term> <listitem> <para>A libctf variant which does not use libbfd functionality</para> <indexterm zone="ch-system-binutils libctf-nobfd"> <primary sortas="c-libctf-nobfd">libctf-nobfd</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="libgprofng"> <term><filename class="libraryfile">libgprofng</filename></term> <listitem> <para>A library containing most routines used by <command>gprofng</command></para> <indexterm zone="ch-system-binutils libgprofng"> <primary sortas="c-libgprofng">libgprofng</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="libopcodes"> <term><filename class="libraryfile">libopcodes</filename></term> <listitem> <para>A library for dealing with opcodes—the <quote>readable text</quote> versions of instructions for the processor; it is used for building utilities like <command>objdump</command></para> <indexterm zone="ch-system-binutils libopcodes"> <primary sortas="c-libopcodes">libopcodes</primary> </indexterm> </listitem> </varlistentry> <varlistentry id="libsframe"> <term><filename class="libraryfile">libsframe</filename></term> <listitem> <para>A library to support online backtracing using a simple unwinder</para> <indexterm zone="ch-system-binutils libsframe"> <primary sortas="c-libsframe">libsframe</primary> </indexterm> </listitem> </varlistentry> </variablelist> </sect2> </sect1>