A.out

Un article de Wikipédia, l'encyclopédie libre.

a.out (de assembler output) est un ancien format de fichier utilisé dans les premières versions d'Unix. Il était utilisé pour les fichiers exécutables, les codes object et, plus tard, les librairies partagées.

À l'heure actuelle, a.out reste le nom de fichier utilisé par défaut chez certains compilateurs et linkers quand aucun nom de fichier de sortie n'est précisé, et ce même si cet exécutable n'est pas au format a.out.[1].

Sommaire

[modifier] Utilisation

Un format a.out pour PDP-7, similaire à celui employé sur PDP-11, apparait sur la première édition d'Unix [2]. Il a été supplanté par le format COFF (en) dans AT&T Unix System V qui a été supplanté à son tour par le format ELF dans System V Release 4.

Bien que Berkeley Unix ait continué à l'utiliser, les systèmes BSD modernes ont depuis migré vers ELF: NetBSD a changé avec sa version 1.5 et FreeBSD pendant la transition entre sa version 2.2 et 3.0.

Le format a.out n'a pas de support direct des symboles de débugage mais il peut être utilisé avec stabs (en) qui utilise des entrées de table de symbole spécifiques pour stocker les données.

Le noyau Linux utilisait aussi a.out jusque sa version 1.2 (le support de ELF en expérimental a été ajouté à la version 1.1.52) où il a été remplacé par ELF[3]. Cette transition a été plus ou moins dût au fait qu'il était difficile de faire des librairies partagées avec ce genre de format qui nécessitait par exemple de devoir enregistrer l'adresse virtuelle à laquelle la librairie était chargée en mémoire pour que le ld.so (en) de Linux puisse retrouver la librairie partagée[4].

Plusieurs versions de BSD ont put conserver ce format plus longtemps que Linux principalement parce que l'implémentation du a.out des BSD était plus flexible[5].

[modifier] Le format

[modifier] Notes et références

  1. (en) Rupert Wood, « 'What to do with a.out' - sur la mailinglist gcc-help », 8 avril 2002. Consulté le 2 juin 2008
  2. (en) [pdf] a.out — assembler and link editor output, 3 novembre 1971, Bell Labs. Consulté le 2 juin 2008
  3. (en) Daniel Barlow, « The Linux ELF HOWTO (v1.29) », 14 juillet 1996. Consulté le 2 juin 2008
  4. (en) [pdf] Ulrich Drepper, « How To Write Shared Libraries - 1.1 A Little Bit of History », 20 août 2006. Consulté le 2 juin 2008. « When introducing shared libraries certain design decisions had to be made to work in the limitations of a.out. (...) For all these reasons and more, Linux converted early on to using ELF (Executable Linkage Format) as the binary format. »
  5. (en) BSD Myths: BSD uses the a.out executable format, which is outdated technology. Consulté le 2 juin 2008

[modifier] Voir aussi

[modifier] Liens externes