Binutils (2.12):
ftp://ftp.gnu.org/gnu/binutils/
addr2line, ar, as, c++filt, gasp, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings et strip
addr2line traduit les adresses d'un programme en nom de fichiers et numéros de ligne. A partir d'une adresse et d'un exécutable, il utilise les informations de déboguage présentes dans l'exécutable pour trouver quel nom de fichier et quel numéro de ligne sont associés à une adresse donnée.
Le programme ar crée, modifie et extrait des données depuis des archives. Une archive est un fichier contenant un ensemble d'autres fichiers dans une structure qui permet de retrouver les fichiers individuels d'origine (appelés membres de l'archive).
as a d'abord été prévu pour assembler la sortie du compilateur GNU C gcc, pour qu'elle puisse être utilisée par l'éditeur de liens ld.
Le langage C++ fournit un mécanisme de surcharge, ce qui signifie qu'il est possible d'écrire plusieurs fonctions ayant le même nom (pourvu que chacune demande des paramètres de types différents). Tous les noms de fonction C++ sont encodés dans un nom d'assemblage de bas niveau (ce processus est connu sous le nom de broyage). Le programme c++filt fait l'association inverse : il décode (dé-broie) les noms de bas niveau en noms de niveau utilisateur, pour que l'éditeur de liens puisse prévenir un conflit entre ces fonctions surchargées.
Gasp est le préprocesseur de macros assembleur.
gprof affiche les données de profil sous forme de graphe d'appel.
ld combine plusieurs fichiers objets et archives, modifie l'emplacement de leurs données et lie les références des symboles. Souvent, la dernière étape dans la construction d'un nouveau programme compilé à exécuter est un appel à ld.
nm liste les symboles des fichiers objet.
L'utilitaire objcopy copie le contenu d'un fichier objet dans un autre. objcopy utilise la bibliothèque GNU BFD pour lire et écrire les fichiers objet. Il peut écrire le fichier objet destination dans un format différent de celui du fichier objet source.
objdump affiche des informations sur un ou plusieurs fichiers objet. Les options déterminent quelles informations spécifiques sont à afficher. Ces informations sont essentiellement utiles pour les programmeurs qui travaillent sur des outils de compilation, à l'inverse des programmeurs qui veulent juste compiler leur programme pour qu'il fonctionne.
ranlib génère un index du contenu d'une archive, et le stocke dans l'archive. L'index liste chaque symbole défini par un membre d'une archive, qui est un fichier objet re-localisable.
readelf affiche des informations sur les binaires de type elf.
size liste les tailles des sections, et la taille totale, pour chaque fichier objet objfile de sa liste d'arguments. Par défaut, une ligne est générée en sortie pour chaque fichier objet ou chaque module dans une archive.
Pour chaque fichier donné, strings affiche les séquences de caractères imprimables qui ont au moins une longueur de quatre caractères (ou le nombre spécifié en option du programme) et qui sont suivies d'un caractère non imprimable. Par défaut, il affiche seulement les chaînes des parties initialisées et chargées des fichiers objet; pour les autres types de fichier, il affiche les chaînes de tout le fichier.
strings est principalement utile pour déterminer le contenu des fichiers binaires.
strip débarasse les fichiers objet de tous leurs symboles, ou de certains en particuliers. La liste des fichiers objet peut inclure des archives. Au moins un fichier objet doit être fourni. strip modifie les fichiers fournis en argument, plutôt que d'écrire les copies modifiées sous d'autres noms..
libbfd.a, libiberty.a et libopcodes.a
libbfd est une librairie de description des fichiers binaires.
libiberty est un ensemble de sous-routines utilisé dans de divers programmes GNU dont getopt, obstack, strerror, strtol et strtoul.
libopcodes est une bibliothèque native pour traiter les opcodes et est utilisé dans le but de construire des utilitaires comme ojbdump. Les opcodes correspondent à une version texte facilement lisible d'instructions processeurs.
Binutils-2.11.2 nécessite que les programmes suivants soient installés:
autoconf: autoconf, autoheader
automake: aclocal, automake
bash: sh
binutils: ar, as, ld, nm, ranlib, strip
diffutils: cmp
fileutils: chmod, cp, ln, ls, mkdir, mv, rm, rmdir, touch
flex: flex
gcc: cc, cc1, collect2, cpp0, gcc
glibc: ldconfig
grep: egrep, fgrep, grep
m4: m4
make: make
gawk: gawk
sed: sed
sh-utils: basename, echo, expr, hostname, sleep, true, uname
texinfo: install-info, makeinfo
textutils: cat, sort, tr, uniq