Provided by: manpages-fr_3.65d1p1-1_all bug

NOM

       elf - Format des fichiers exécutables ELF (« Executable and Linking Format »)

SYNOPSIS

       #include <elf.h>

DESCRIPTION

       Le  fichier d'en-tête <elf.h> définit le format des fichiers binaires exécutables ELF. Ces
       fichiers  peuvent  être  soit  des  fichiers  exécutables  normaux,  des  fichiers  objets
       repositionnables, des fichiers core ou des bibliothèques partagées.

       Un  fichier  exécutable utilisant le format de fichier ELF est constitué d'un en-tête ELF,
       suivi d'une table d'en-tête de programme ou d'une table des en-têtes de sections,  ou  des
       deux.  L'en-tête  ELF  est toujours situé à un déplacement de zéro par rapport au début du
       fichier. Les déplacements dans le  fichier  des  tables  d'en-tête  de  programme  et  des
       en-têtes  de  sections sont définis dans l'en-tête ELF. Ces deux tables décrivent le reste
       des particularités du fichier.

       Ce fichier d'en-tête décrit, sous la  forme  de  structures  C,  les  en-têtes  mentionnés
       précédemment et inclut également des structures pour les sections dynamiques, les sections
       de repositionnement et les tables de symboles.

       Les types suivants sont  utilisés  pour  les  architectures  N-bit  (avec  N=32,64 ;  ElfN
       signifie Elf32 ou Elf64 ; uintN_t signifie uint32_t ou uint64_t) :

           ElfN_Addr       adresse (non signée) du programme, uintN_t
           ElfN_Off        déplacement (non signé) dans le fichier, uintN_t
           ElfN_Section    indice (non signé) de section, uint16_t
           ElfN_Versym     informations (non signées) sur les versions
                           des symboles, uint16_t
           Elf_Byte        caractère (char) non signé
           ElfN_Half       uint16_t
           ElfN_Sword      int32_t
           ElfN_Word       uint32_t
           ElfN_Sxword     int64_t
           ElfN_Xword      uint64_t

       (Note :  la  terminologie  *BSD  est quelque peu différente. Elf64_Half est deux fois plus
       grand que Elf32_Half et Elf64Quarter  est  utilisé  pour  uint16_t.  Afin  d'éviter  toute
       confusion,  ces  types  seront remplacés par des types plus explicites dans la suite de ce
       document).

       Toutes les structures de données définies par le  format  de  fichier  suivent  la  taille
       « naturelle »  et  les  principes d'alignement de la classe correspondante. Si nécessaire,
       les structures de données contiennent un remplissage explicite pour  assurer  l'alignement
       sur  4 octets des objets de 4 octets, et pour forcer les tailles des structures à être des
       multiples de 4, etc.

       L'en-tête ELF est décrit par le type Elf32_Ehdr ou par le type Elf64_Ehdr :

           #define EI_NIDENT 16

           typedef struct {
               unsigned char e_ident[EI_NIDENT];
               uint16_t      e_type;
               uint16_t      e_machine;
               uint32_t      e_version;
               ElfN_Addr     e_entry;
               ElfN_Off      e_phoff;
               ElfN_Off      e_shoff;
               uint32_t      e_flags;
               uint16_t      e_ehsize;
               uint16_t      e_phentsize;
               uint16_t      e_phnum;
               uint16_t      e_shentsize;
               uint16_t      e_shnum;
               uint16_t      e_shstrndx;
           } ElfN_Ehdr;

       Les champs ont les significations suivantes :

       e_ident     Ce tableau d'octets indique comment interpréter le fichier, indépendamment  du
                   processeur  ou  du  reste  du  contenu du fichier. Dans ce tableau, chacun des
                   éléments s'appelle une macro qui commence par le préfixe EI_ et peut  contenir
                   des  valeurs  commençant  par  le  préfixe  ELF.  Les  macros  suivantes  sont
                   définies :

                   EI_MAG0     Premier octet du nombre magique. Il doit être rempli  par  ELFMAG0
                               (0: 0x7f).

                   EI_MAG1     Deuxième  octet du nombre magique. Il doit être rempli par ELFMAG1
                               (1: « E »).

                   EI_MAG2     Troisième octet du nombre magique. Il doit être rempli par ELFMAG2
                               (2: « L »).

                   EI_MAG3     Quatrième octet du nombre magique. Il doit être rempli par ELFMAG3
                               (3: « F »).

                   EI_CLASS    Le cinquième octet indique l'architecture pour ce binaire :

                               ELFCLASSNONE  Cette classe n'est pas valable.
                               ELFCLASS32    Ceci définit une architecture 32 bits.  Elle  permet
                                             d'utiliser des machines avec des espaces d'adressage
                                             virtuels et des fichiers d'une taille allant jusqu'à
                                             4 gigaoctets.
                               ELFCLASS64    Ceci définit une architecture 64 bits.

                   EI_DATA     Le  sixième octet indique le codage utilisé pour les données de ce
                               fichier  spécifiques  au  processeur.  Actuellement,  les  codages
                               suivants sont permis :

                               ELFDATANONE   Format de données inconnu.
                               ELFDATA2LSB   Complément à deux, petit boutiste.
                               ELFDATA2MSB   Complément à deux, gros boutiste.

                   EI_VERSION  Le 7e octet est le numéro de version de la spécification du format
                               ELF :
                               EV_NONE       Version non valable.
                               EV_CURRENT    Version actuelle.

                   EI_OSABI    Le 8e octet identifie le  système  d'exploitation  et  l'interface
                               binaire  des  applications  (ABI)  auxquels cet objet est destiné.
                               Certains  des  champs  d'autres  structures  ELF  contiennent  des
                               valeurs  et  des  drapeaux  dont  la  signification  dépend  de la
                               plate-forme ; l'interprétation de ces champs dépend de  la  valeur
                               de cet octet. Par exemple :

                               ELFOSABI_NONE       Identique à ELFOSABI_SYSV
                               ELFOSABI_SYSV       ABI UNIX System V.
                               ELFOSABI_HPUX       ABI HP-UX.
                               ELFOSABI_NETBSD     ABI NetBSD.
                               ELFOSABI_LINUX      ABI Linux.
                               ELFOSABI_SOLARIS    ABI Solaris.
                               ELFOSABI_IRIX       ABI IRIX.
                               ELFOSABI_FREEBSD    ABI FreeBSD.
                               ELFOSABI_TRU64      ABI UNIX TRU64.
                               ELFOSABI_ARM        ABI de l'architecture ARM.
                               ELFOSABI_STANDALONE ABI autonome (embarqué).

                   EI_ABIVERSION
                               Le  9e  octet  identifie  la  version  de  l'interface binaire des
                               applications (ABI) à laquelle cet  objet  est  destiné.  Ce  champ
                               permet  de différencier des versions incompatibles d'une même ABI.
                               L'interprétation de ce numéro de version dépend de l'ABI  indiquée
                               par   le   champ   EI_OSABI.  Les  applications  respectant  cette
                               spécification utilisent la valeur 0.

                   EI_PAD      Début de remplissage. Ces octets sont réservés  et  positionnés  à
                               zéro.  Les  programmes  qui  les  lisent  ne  doivent pas en tenir
                               compte. La valeur de EI_PAD sera modifiée dans le  futur  si  l'on
                               décide  de  donner  une  signification  à  des octets actuellement
                               inutilisés.

                   EI_NIDENT   Taille du tableau e_ident.

       e_type      Ce membre de la structure identifie le type de fichier objet :

                   ET_NONE     Type inconnu.
                   ET_REL      Fichier repositionnable.
                   ET_EXEC     Fichier exécutable.
                   ET_DYN      Objet partagé.
                   ET_CORE     Fichier core.

       e_machine   Ce membre indique l'architecture nécessaire  à  un  fichier  particulier.  Par
                   exemple :

                   EM_NONE     Machine inconnue.
                   EM_M32      AT&T WE 32100.
                   EM_SPARC    Sun Microsystems SPARC.
                   EM_386      Intel 80386.
                   EM_68K      Motorola 68000.
                   EM_88K      Motorola 88000.
                   EM_860      Intel 80860.
                   EM_MIPS     MIPS RS3000 (uniquement gros-boutiste).
                   EM_PARISC   HP/PA.
                   EM_SPARC32PLUS
                               SPARC avec jeu d'instructions étendu.
                   EM_PPC      PowerPC.
                   EM_PPC64    PowerPC 64 bits.
                   EM_S390     IBM S/390
                   EM_ARM      Machines de technologie RISC avancées
                   EM_SH       Renesas SuperH
                   EM_SPARCV9  SPARC v9 64 bits.
                   EM_IA_64    Intel Itanium
                   EM_X86_64   AMD x86-64
                   EM_VAX      DEC Vax.

       e_version   Ce membre indique la version du fichier :

                   EV_NONE     Version non valable.
                   EV_CURRENT  Version actuelle.

       e_entry     Ce  membre  indique  l'adresse  virtuelle  à  laquelle  le  système  transfère
                   initialement le contrôle, démarrant ainsi  le  processus.  Si  ce  fichier  ne
                   comporte pas de point d'entrée, ce champ contient zéro.

       e_phoff     Ce membre contient le déplacement en octets de la table contenant l'en-tête de
                   programme. Si ce fichier ne comporte pas de table d'en-tête de  programme,  ce
                   champ contient zéro.

       e_shoff     Ce  membre  contient  le  déplacement  en  octets  de la table des en-têtes de
                   sections. Si ce fichier ne comporte pas de table des en-têtes des sections, ce
                   champ contient zéro.

       e_flags     Ce  membre  contient  des  drapeaux  spécifiques  au processeur. Le nom de ces
                   drapeaux est de la forme EF_machine_drapeau. À l'heure actuelle, aucun drapeau
                   n'a été défini.

       e_ehsize    Ce membre contient la taille de l'en-tête ELF en octets.

       e_phentsize Ce  membre  contient la taille en octets d'une entrée de la table d'en-tête de
                   programme ; toutes les entrées sont de même taille.

       e_phnum     Ce membre contient le nombre d'entrées de la  table  d'en-tête  de  programme.
                   Ainsi,  la  taille  en  octets  de la table pourra être obtenue en multipliant
                   e_phentsize par e_phnum. Si un fichier ne comporte pas d'en-tête de programme,
                   e_phnum contiendra la valeur zéro.

                   Si  le  nombre  d'entrées  de la table d'en-tête de programme est supérieur ou
                   égal à PN_XNUM (0xffff), ce membre contient PN_XNUM (0xffff) et le nombre réel
                   d'entrées  dans  la  table  d'en-tête  de  programme est stocké dans le membre
                   sh_info de l'entrée initiale de la table des en-têtes de sections. Dans le cas
                   contraire,  le membre sh_info de l'entrée initiale de la table des en-têtes de
                   sections contient la valeur zéro.

                   PN_XNUM  Est défini comme 0xffff,  le  plus  grand  nombre  que  e_phnum  peut
                            valoir,  qui spécifie où le nombre actuel d'en-têtes de programme est
                            assigné.

       e_shentsize Ce membre contient la taille en octets d'un en-tête de section. Un en-tête  de
                   section  est  une  entrée  de  la  table des en-têtes de sections ; toutes les
                   entrées sont de même taille.

       e_shnum     Ce membre contient le nombre d'entrées de la table des en-têtes  de  sections.
                   Ainsi,  la  taille  en octets de la table des en-têtes de sections pourra être
                   obtenue en multipliant e_shentsize par e_shnum. Si un fichier ne comporte  pas
                   de table des en-têtes de sections, le champ e_shnum contiendra zéro.

                   Si  le  nombre d'entrées de la table des en-têtes de sections est supérieur ou
                   égal à SHN_LORESERVE (0xff00), e_shnum contient la valeur zéro  et  le  nombre
                   réel  d'entrées  dans  la  table  des  en-têtes de sections est stocké dans le
                   membre sh_size de l'entrée initiale de la table des en-têtes de sections. Dans
                   le  cas  contraire,  le  membre  sh_size  de l'entrée initiale de la table des
                   en-têtes de sections contient la valeur zéro.

       e_shstrndx  Ce membre contient l'indice dans la table des en-têtes de sections de l'entrée
                   associée  à  la  table  des  chaînes  de  noms  des sections. Si le fichier ne
                   comporte pas de table des chaînes de noms des sections, ce champ contiendra la
                   valeur SHN_UNDEF.

                   Si  l'indice  de  la  section de la table des chaînes de noms des sections est
                   supérieur ou égal à SHN_LORESERVE  (0xff00),  ce  membre  contient  la  valeur
                   SHN_XINDEX  (0xffff) et l'indice réel de la section de la table des chaînes de
                   noms des sections est stocké dans le membre sh_link de l'entrée initiale de la
                   table  des  en-têtes  de sections. Dans le cas contraire, le membre sh_link de
                   l'entrée initiale de la table des en-têtes  de  sections  contient  la  valeur
                   zéro.

                   SHN_UNDEF     Cette  valeur  indique  une  référence  de  section non définie,
                                 manquante, non pertinente ou, d'une façon ou d'une  autre,  sans
                                 signification. Par exemple, un symbole « defined » se rapportant
                                 à la section de numéro SHN_UNDEF est un symbole indéfini.

                   SHN_LORESERVE Cette valeur indique la borne inférieure de la plage des indices
                                 réservés.

                   SHN_LOPROC    Les  valeurs supérieures ou égales à SHN_HIPROC sont réservées à
                                 des sémantiques spécifiques au processeur.

                   SHN_HIPROC    Les valeurs inférieures ou égales à SHN_LOPROC sont réservées  à
                                 des sémantiques spécifiques au processeur.

                   SHN_ABS       Cette valeur indique que les références correspondantes sont des
                                 valeurs absolues. Par exemple, les symboles définis par  rapport
                                 à  une  section  SHN_ABS ont des valeurs absolues et ne sont pas
                                 affectées par le repositionnement.

                   SHN_COMMON    Les symboles définis  par  rapport  à  cette  section  sont  des
                                 symboles  communs,  comme  par exemple des COMMON Fortran ou des
                                 variables externes C non allouées.

                   SHN_HIRESERVE Cette valeur indique la borne supérieure de la plage des indices
                                 réservés  entre  SHN_LORESERVE  et  SHN_HIRESERVE,  inclus ; ces
                                 valeurs ne sont pas des références de la table des en-têtes  des
                                 sections.  Autrement  dit,  la table des en-têtes de sections ne
                                 contient pas d'entrée pour les indices réservés.

       La table d'en-tête de programme d'un exécutable ou  d'un  fichier  objet  partagé  est  un
       tableau de structures, chacune d'entre elles décrivant un segment ou d'autres informations
       dont le système a besoin pour préparer l'exécution du programme.  Un  segment  de  fichier
       objet  contient une ou plusieurs sections. L'en-tête de programme n'a de sens que pour les
       fichiers objets partagés ou les fichiers exécutables. Un fichier indique la taille de  son
       propre  en-tête de programme à l'aide des membres e_phentsize et e_phnum de l'en-tête ELF.
       Selon l'architecture, l'en-tête de programme ELF est représenté par un type Elf32_Phdr  ou
       un type Elf64_Phdr :

           typedef struct {
               uint32_t   p_type;
               Elf32_Off  p_offset;
               Elf32_Addr p_vaddr;
               Elf32_Addr p_paddr;
               uint32_t   p_filesz;
               uint32_t   p_memsz;
               uint32_t   p_flags;
               uint32_t   p_align;
           } Elf32_Phdr;

           typedef struct {
               uint32_t   p_type;
               uint32_t   p_flags;
               Elf64_Off  p_offset;
               Elf64_Addr p_vaddr;
               Elf64_Addr p_paddr;
               uint64_t   p_filesz;
               uint64_t   p_memsz;
               uint64_t   p_align;
           } Elf64_Phdr;

       La  principale  différence  entre  l'en-tête  d'un  programme  32 bits  et  l'en-tête d'un
       programme 64 bits repose sur  emplacement  du  champ  p_flags  au  sein  de  la  structure
       complète.

       p_type      Ce  membre  de  la  structure  Phdr  indique le type de segment décrit par cet
                   élément de tableau ou comment interpréter ses informations.

                   PT_NULL     Cet élément du tableau est inutilisé et  les  valeurs  des  autres
                               membres  ne sont pas définis. Cela permet à l'en-tête de programme
                               de contenir des entrées qui ne sont pas prises en compte.

                   PT_LOAD     Cet élément du tableau indique un segment chargeable,  décrit  par
                               p_filesz  et p_memsz. Les octets du fichier sont projetés au début
                               du segment mémoire. Si la taille mémoire du  segment  p_memsz  est
                               plus  grande  que  la  taille  du  fichier  p_filesz,  les  octets
                               « supplémentaires » sont définis comme contenant la  valeur  0  et
                               placés  à la suite de la zone initialisée du segment. La taille du
                               fichier ne peut être supérieure à la taille de la mémoire. Dans la
                               table  d'en-tête de programme, les entrées de segments chargeables
                               sont indiquées par  ordre  croissant,  classées  selon  le  membre
                               p_vaddr.

                   PT_DYNAMIC  L'élément   de   tableau  contient  des  informations  de  liaison
                               dynamique.

                   PT_INTERP   L'élément de tableau contient l'emplacement et la taille du nom de
                               chemin,  terminé  par un caractère « null », utilisé pour invoquer
                               l'interpréteur. Ce type de  segment  n'a  de  sens  que  pour  des
                               fichiers  exécutables  (bien  qu'il  puisse  être présent dans des
                               objets partagés). Il ne peut être présent qu'une seule  fois  dans
                               un  fichier.  S'il  est présent, il doit précéder chaque entrée de
                               segment chargeable.

                   PT_NOTE     L'élément  de  tableau  contient  l'emplacement   et   la   taille
                               d'informations auxiliaires.

                   PT_SHLIB    Ce  type  de  segment  est  réservé,  mais sa sémantique n'est pas
                               définie. Les programmes contenant un tel  élément  de  tableau  ne
                               sont pas conformes à l'interface binaire (ABI).

                   PT_PHDR     L'élément  de  tableau, s'il est présent, contiendra l'emplacement
                               et la taille de la table d'en-tête de programme  elle-même,  à  la
                               fois dans le fichier et dans l'image mémoire du programme. Ce type
                               de segment ne peut être présent qu'une seule fois dans un fichier.
                               Qui  plus  est,  il  ne  peut  être  présent  que  si l'en-tête de
                               programme fait partie de l'image mémoire du  programme.  S'il  est
                               présent, il doit précéder chaque entrée de segment chargeable.

                   PT_LOPROC   Les valeurs supérieures ou égales à PT_HIPROC sont réservées à des
                               sémantiques spécifiques au processeur.

                   PT_HIPROC   Les valeurs inférieures ou égales à PT_LOPROC sont réservées à des
                               sémantiques spécifiques au processeur.

                   PT_GNU_STACK
                               Extension  GNU  qui  est  utilisée  par  le  noyau  de  Linux pour
                               contrôler l'état de la pile via l'indicateur  positionné  dans  le
                               membre p_flags.

       p_offset    Ce  membre  contient le déplacement du premier octet du segment par rapport au
                   début du fichier.

       p_vaddr     Ce membre contient l'adresse virtuelle à laquelle  se  trouve  en  mémoire  le
                   premier octet du segment.

       p_paddr     Su les systèmes pour lesquels l'adresse physique est pertinente, ce membre est
                   réservé pour l'adresse physique du segment.  Sous  BSD,  ce  champ  n'est  pas
                   utilisé et doit avoir la valeur zéro.

       p_filesz    Ce  membre contient la taille en octets dans l'image fichier de ce segment. Il
                   peut être égal à zéro.

       p_memsz     Ce membre contient la taille en octets de l'image mémoire de  ce  segment.  Il
                   peut être égal à zéro.

       p_flags     Ce membre contient un masque de bits d'options relatives à ce segment :

                   PF_X   Segment exécutable.
                   PF_W   Segment accessible en écriture.
                   PF_R   Segment accessible en lecture.

                   Un  segment de texte est souvent affecté des drapeaux PF_X et PF_R. Un segment
                   de données est souvent affecté des drapeaux PF_X, PF_W et PF_R.

       p_align     Ce membre contient la valeur selon  laquelle  les  segments  sont  alignés  en
                   mémoire  et  dans  le fichier. Pour des segments de processus chargeables, les
                   valeurs p_vaddr et p_offset doivent être congrues,  modulo  la  taille  de  la
                   page.  Des  valeurs  de  zéro  ou  de  un  indiquent qu'aucun alignement n'est
                   nécessaire. Sinon, p_align doit être un nombre positif, puissance  entière  de
                   deux et p_vaddr doit être égal à p_offset modulo p_align.

       La  table des en-têtes de sections d'un fichier permet de retrouver toutes les sections du
       fichier. C'est un tableau de structures Elf32_Shdr ou  Elf64_Shdr.  Le  champ  e_shoff  de
       l'en-tête ELF donne son déplacement en octets depuis le début du fichier. e_shnum contient
       le nombre d'entrées que contient la table des en-têtes de sections.  e_shentsize  contient
       la taille en octets de chaque entrée.

       Un  indice  de  la table des en-têtes de sections est un indice de ce tableau. Certains de
       ces indices de table des en-têtes de sections sont réservés : l'entrée initiale et  toutes
       les entrées comprises entre SHN_LORESERVE et SHN_HIRESERVE. L'entrée initiale est utilisée
       par des extensions ELF pour e_phnum, e_shnum et e_strndx ; dans  les  autres  cas,  chaque
       champ  de  l'entrée  initiale  est mis à zéro. Un fichier objet ne contient pas de section
       correspondant à ces indices spéciaux :

              SHN_UNDEF     Cette valeur indique une référence de section non définie, manquante,
                            non pertinente ou, d'une manière ou d'une autre, sans signification.

              SHN_LORESERVE Cette  valeur  indique  la  borne  inférieure de la plage des indices
                            réservés.

              SHN_LOPROC    Les valeurs supérieures ou égales à SHN_HIPROC sont réservées  à  des
                            sémantiques spécifiques au processeur.

              SHN_HIPROC    Les  valeurs  inférieures ou égales à SHN_LOPROC sont réservées à des
                            sémantiques spécifiques au processeur.

              SHN_ABS       Cette  valeur   définit   la   valeur   absolue   de   la   référence
                            correspondante.  Par  exemple,  un  symbole  défini  par rapport à la
                            section numéro SHN_ABS a une valeur absolue et n'est pas affecté  par
                            un repositionnement.

              SHN_COMMON    Les  symboles  définis  par rapport à cette section sont des symboles
                            communs, comme par  exemple  des  COMMON  Fortran  ou  des  variables
                            externes C non allouées.

              SHN_HIRESERVE Cette  valeur  indique  la  borne  supérieure de la plage des indices
                            réservés. Le système réserve les indices compris entre  SHN_LORESERVE
                            et  SHN_HIRESERVE,  inclus.  La  table  des  en-têtes  de sections ne
                            contient pas d'entrée pour les indices réservés.

       L'en-tête de section a la structure suivante :

           typedef struct {
               uint32_t   sh_name;
               uint32_t   sh_type;
               uint32_t   sh_flags;
               Elf32_Addr sh_addr;
               Elf32_Off  sh_offset;
               uint32_t   sh_size;
               uint32_t   sh_link;
               uint32_t   sh_info;
               uint32_t   sh_addralign;
               uint32_t   sh_entsize;
           } Elf32_Shdr;

           typedef struct {
               uint32_t   sh_name;
               uint32_t   sh_type;
               uint64_t   sh_flags;
               Elf64_Addr sh_addr;
               Elf64_Off  sh_offset;
               uint64_t   sh_size;
               uint32_t   sh_link;
               uint32_t   sh_info;
               uint64_t   sh_addralign;
               uint64_t   sh_entsize;
           } Elf64_Shdr;

       Il n'y a pas de réelle différence entre les en-têtes des sections 32 bits et 64 bits.

       sh_name   Ce membre indique le nom de la section. Sa valeur est un indice de la table  des
                 chaînes  des en-têtes de sections, contenant l'emplacement d'une chaîne terminée
                 par un caractère nul.

       sh_type   Ce membre définit le contenu et la sémantique de la section.

                 SHT_NULL       Cette valeur indique que cet en-tête de section est  inactif.  Il
                                n'est  donc  associé  à  aucune  section.  Les valeurs des autres
                                champs de l'en-tête de section ne sont pas définies.

                 SHT_PROGBITS   Cette  section  contient  des  informations   définies   par   le
                                programme,  dont  le format et le sens ne sont déterminés que par
                                celui-ci.

                 SHT_SYMTAB     Cette  section  contient  une  table  de  symboles.  Typiquement,
                                SHT_SYMTAB  contient  des  symboles pour l'édition de liens, bien
                                qu'elle puisse aussi être utilisée  pour  la  liaison  dynamique.
                                Comme  il  s'agit  d'une  table  de  symboles complète, elle peut
                                contenir de nombreux symboles inutiles à la liaison dynamique. Un
                                fichier objet peut aussi contenir une section SHT_DYNSYM.

                 SHT_STRTAB     Cette  section  contient  une  table de chaînes. Un fichier objet
                                peut contenir plusieurs sections de ce type.

                 SHT_RELA       Cette section contient des entrées de repositionnement ayant  des
                                additifs  explicites,  par exemple les entrées du type Elf32_Rela
                                pour les fichiers objets 32 bits. Un objet peut  avoir  plusieurs
                                sections de ce type.

                 SHT_HASH       Cette section contient une table de hachage pour les symboles. Un
                                objet participant à une liaison dynamique doit en  contenir  une.
                                Un fichier objet ne peut contenir qu'une seule table de hachage.

                 SHT_DYNAMIC    Cette  section contient les informations de liaison dynamique. Un
                                fichier objet ne peut contenir qu'une seule section dynamique.

                 SHT_NOTE       Cette section contient des  informations  servant  à  marquer  le
                                fichier d'une façon ou d'une autre.

                 SHT_NOBITS     Une section de ce type ressemble à SHT_PROGBITS mais n'occupe pas
                                d'espace dans le fichier. Bien que  cette  section  ne  contienne
                                aucun   octet,  le  membre  sh_offset  contient  son  déplacement
                                théorique dans le fichier.

                 SHT_REL        Cette section  contient  des  entrées  de  repositionnement  sans
                                additif  explicite,  par  exemple  du  type  Elf32_Rel  pour  les
                                fichiers objets de la classe de 32 bits. Un objet  peut  contenir
                                plusieurs sections de repositionnement.

                 SHT_SHLIB      Cette section est réservée et sa sémantique n'est pas définie.

                 SHT_DYNSYM     Cette  section  contient  un  jeu  minimum de symboles de liaison
                                dynamique. Un fichier  objet  peut  aussi  contenir  une  section
                                SHT_SYMTAB.

                 SHT_LOPROC     Cette  valeur et les valeurs suivantes jusqu'à SHT_HIPROC incluse
                                sont réservées à des sémantiques spécifiques au processeur.

                 SHT_HIPROC     Cette valeur et les valeurs précédentes depuis SHT_LOPROC incluse
                                sont réservées à des sémantiques spécifiques au processeur.

                 SHT_LOUSER     Cette  valeur indique la borne inférieure de la plage des indices
                                réservés aux programmes applicatifs.

                 SHT_HIUSER     Cette valeur indique la borne supérieure de la plage des  indices
                                réservés aux programmes applicatifs. Les types des sections entre
                                SHT_LOUSER et SHT_HIUSER peuvent être utilisés par l'application,
                                sans  que  cela  n'entre  en  conflit  avec  les types de section
                                actuels ou futurs définis par le système.

       sh_flags  Les sections contiennent des indicateurs sous forme d'un  bit  décrivant  divers
                 attributs.  Si,  dans  sh_flags,  le  bit  correspondant  à  un  indicateur  est
                 positionné, l'attribut est « activé » pour cette section. Sinon, l'attribut  est
                 « désactivé » ou ne s'applique pas. Les attributs non définis sont mis à zéro.

                 SHF_WRITE      Cette  section  contient  des données qu'il devrait être possible
                                d'écrire durant l'exécution du processus.

                 SHF_ALLOC      Cette section est  présente  en  mémoire  durant  l'exécution  du
                                processus.  Certaines  sections de contrôle ne sont pas présentes
                                dans  l'image  mémoire  d'un  fichier  objet.  Cet  attribut  est
                                désactivé pour ces sections.

                 SHF_EXECINSTR  Cette section contient des instructions machine exécutables.

                 SHF_MASKPROC   Tous  les  bits  contenus  dans  ce  masque  sont  réservés à des
                                sémantiques spécifiques au processeur.

       sh_addr   Si cette section  apparaît  dans  l'image  mémoire  d'un  processus,  ce  membre
                 contient  l'adresse  à  laquelle le premier octet de la section doit se trouver.
                 Sinon, ce membre contient zéro.

       sh_offset La valeur de ce membre indique le déplacement du premier octet de la section par
                 rapport  au  début  du  fichier. Une section de type SHT_NOBITS, n'occupe pas de
                 place dans le fichier et son champ sh_offset indique son  emplacement  théorique
                 dans le fichier.

       sh_size   Ce  membre contient la taille en octets de la section. À moins que cette section
                 ne soit de type SHT_NOBITS, elle occupe sh_size  octets  dans  le  fichier.  Une
                 section de type SHT_NOBITS peut avoir une taille non nulle, mais elle n'occupera
                 cependant aucune place dans le fichier.

       sh_link   Ce membre contient un lien vers un indice de la table des en-têtes de  sections,
                 son interprétation dépend du type de section.

       sh_info   Ce membre contient des informations complémentaires, son l'interprétation dépend
                 du type de section.

       sh_addralign
                 Certaines sections ont des contraintes d'alignement d'adresse.  Si  une  section
                 contient  un  mot  double, le système doit s'assurer que la section tout entière
                 est alignée sur les mots doubles. Autrement dit, la valeur de sh_addr doit  être
                 congrue  à zéro, modulo la valeur de sh_addralign. Seules zéro ou des puissances
                 entières positives de deux sont autorisés. Une valeur de zéro ou de  un  indique
                 qu'aucune contrainte d'alignement ne s'applique à la section.

       sh_entsize
                 Certaines  sections  contiennent  une  table contenant un nombre d'entrées fixe,
                 comme par exemple les tables de symboles. Pour  de  telles  sections,  ce  champ
                 donne  la  taille  en  octets de chaque entrée. Ce membre contient zéro si cette
                 section ne contient pas une table de ce type.

       Diverses sections contiennent des informations de contrôle et sur le programme :

       .bss      Cette section contient des données non initialisées qui font partie  de  l'image
                 mémoire du programme. Par définition, le système initialise ces données avec des
                 zéros lorsque le programme démarre. Cette section est du  type  SHT_NOBITS.  Les
                 types de ses attributs sont SHF_ALLOC et SHF_WRITE.

       .comment  Cette section contient des informations de suivi des versions. Cette section est
                 du type SHT_PROGBITS. Aucun attribut n'est utilisé.

       .ctors    Cette section contient des pointeurs initialisés  vers  des  constructeurs  C++.
                 Cette  section  est  du  type  SHT_PROGBITS.  Les  types  de  ses attributs sont
                 SHF_ALLOC et SHF_WRITE.

       .data     Cette section  contient  des  données  faisant  partie  de  l'image  mémoire  du
                 programme.  Elle  est  du  type  SHT_PROGBITS.  Les  types de ses attributs sont
                 SHF_ALLOC et SHF_WRITE.

       .data1    Cette section  contient  des  données  faisant  partie  de  l'image  mémoire  du
                 programme.  Elle  est  du  type  SHT_PROGBITS.  Les  types de ses attributs sont
                 SHF_ALLOC et SHF_WRITE.

       .debug    Cette section contient des données de débogage symbolique. Son contenu n'est pas
                 précisé. Elle est du type SHT_PROGBITS. Aucun type d'attribut n'est utilisé.

       .dtors    Cette section contient des pointeurs initialisés vers des destructeurs C++. Elle
                 est du  type  SHT_PROGBITS.  Les  types  de  ses  attributs  sont  SHF_ALLOC  et
                 SHF_WRITE.

       .dynamic  Cette  section  contient des informations de liaison dynamique. Les attributs de
                 cette section comprennent le bit SHF_ALLOC. Le positionnement du  bit  SHF_WRITE
                 est  spécifique  au  processeur.  Cette  section  est  du type SHT_DYNAMIC. Voir
                 ci-dessus pour les attributs.

       .dynstr   Cette section contient les chaînes nécessaires à la liaison dynamique,  le  plus
                 souvent  les  chaînes représentant les noms associés aux entrées de la table des
                 symboles. Cette section est du type SHT_STRTAB. Le type d'attribut  utilisé  est
                 SHF_ALLOC.

       .dynsym   Cette section contient la table des symboles de liaison dynamique. Cette section
                 est du type SHT_DYNSYM. Le type d'attribut utilisé est SHF_ALLOC.

       .fini     Cette section contient des instructions exécutables qui font partie du  code  de
                 fin  du  processus.  Lorsqu'un  programme  se  termine  normalement,  le système
                 organise l'exécution du code de cette section. Elle est  du  type  SHT_PROGBITS.
                 Les attributs utilisés sont SHF_ALLOC et SHF_EXECINSTR.

       .gnu.version
                 Cette  section  contient  la  table  des symboles de version, tableau d'éléments
                 ElfN_Half. Cette section est du type SHT_GNU_versym. Le type d'attribut  utilisé
                 est SHF_ALLOC.

       .gnu.version_d
                 Cette  section  contient  les  définitions  de version de symboles, une table de
                 structures  ElfN_Verdef. Cette section  est  du  type  SHT_GNU_verdef.  Le  type
                 d”attribut utilisé est SHF_ALLOC.

       .gnu.version_r
                 Cette section contient la version de symbole des éléments nécessaires, une table
                 de structures ElfN_Verneed. Cette  section  est  type  SHT_GNU_versym.  Le  type
                 d'attribut utilisé est SHF_ALLOC.

       .got      Cette  section  contient  la  table  globale  des déplacements. Elle est du type
                 SHT_PROGBITS. Les attributs sont spécifiques au processeur.

       .hash     Cette section contient la table de  hachage  des  symboles.  Elle  est  du  type
                 SHT_HASH. L'attribut utilisé est SHF_ALLOC.

       .init     Cette  section  contient  des  instructions  exécutables qui font partie du code
                 d'initialisation du processus. Lorsqu'un programme démarre, le système  organise
                 l'exécution du code de cette section avant d'appeler le point d'entrée principal
                 du programme. Cette section est du type  SHT_PROGBITS.  Les  attributs  utilisés
                 sont SHF_ALLOC et SHF_EXECINSTR.

       .interp   Cette  section  contient  le  chemin  vers  un interpréteur de programmes. Si le
                 fichier comporte un segment chargeable contenant cette section, les attributs de
                 la  section  contiendront  le bit SHF_ALLOC. Sinon, ce bit sera désactivé. Cette
                 section est du type SHT_PROGBITS.

       .line     Cette section contient des informations sur les numéros de  lignes,  qui  seront
                 utilisées   pour   le  débogage  symbolique.  Ces  informations  établissent  la
                 correspondance entre le code source du programme et le code machine. Le  contenu
                 de  cette  section  n'est  pas spécifié. Cette section est du type SHT_PROGBITS.
                 Aucun attribut n'est utilisé.

       .note     Cette section contient des informations dans le format  « Note  Section ».  Elle
                 est  de  type  SHT_NOTE.  Aucun  attribut  n'est utilisé. Les exécutables natifs
                 OpenBSD contiennent en général une section .note.openbsd.ident  leur  permettant
                 de  s'identifier,  afin  que  le  noyau  court-circuite,  lors  du chargement du
                 fichier, toutes les vérifications de compatibilité de l'émulation binaire ELF.

       .note.GNU-stack
                 Cette section est utilisée dans les fichiers objets de Linux pour  déclarer  les
                 attributs  de  la pile. Cette section est du type SHT_PROGBITS. Le seul attribut
                 utilisé est SHF_EXECINSTR. Ceci indique à l'éditeur de liens GNU que le  fichier
                 objet requière une pile exécutable.

       .plt      Cette  section  contient  une  table de liaison des procédures. Elle est du type
                 SHT_PROGBITS. Ses attributs sont spécifiques au processeur.

       .relNOM   Cette section  contient  des  informations  de  repositionnement,  comme  décrit
                 ci-dessous.   Si  ce  fichier  comporte  un  segment  chargeable  comprenant  du
                 repositionnement, les attributs de la section  contiendront  le  bit  SHF_ALLOC.
                 Sinon,  ce  bit  sera  désactivé.  Par  convention, le « NOM » est fourni par la
                 section à  laquelle  le  repositionnement  s'applique.  Ainsi,  une  section  de
                 repositionnement  pour du .text s'appellera normalement .rel.text. Cette section
                 est du type SHT_REL.

       .relaNOM  Cette section  contient  des  informations  de  repositionnement,  comme  décrit
                 ci-dessous.   Si  ce  fichier  comporte  un  segment  chargeable  comprenant  du
                 repositionnement, les attributs de la section  contiendront  le  bit  SHF_ALLOC.
                 Sinon,  ce  bit  sera  désactivé.  Par  convention, le « NOM » est fourni par la
                 section à  laquelle  le  repositionnement  s'applique.  Ainsi,  une  section  de
                 repositionnement pour du .text s'appellera normalement .rela.text. Cette section
                 est du type SHT_RELA.

       .rodata   Cette section contient des données en lecture seule,  qui  feront  classiquement
                 partie  d'un segment non accessible en écriture dans l'image du processus. Cette
                 section est du type SHT_PROGBITS. L'attribut utilisé est SHF_ALLOC.

       .rodata1  Cette section contient des données en lecture seule,  qui  feront  classiquement
                 partie  d'un segment non accessible en écriture dans l'image du processus. Cette
                 section est du type SHT_PROGBITS. L'attribut utilisé est SHF_ALLOC.

       .shstrtab Cette section contient les noms des sections. Elle est du type SHT_STRTAB. Aucun
                 type d'attribut.

       .strtab   Cette section contient des chaînes, le plus souvent ces chaînes représentent les
                 noms associés aux entrées de la table des symboles. Si ce  fichier  comporte  un
                 segment chargeable comprenant la table des chaînes de symboles, les attributs de
                 la section contiendront le bit SHF_ALLOC. Sinon, ce bit  sera  désactivé.  Cette
                 section est du type SHT_STRTAB.

       .symtab   Cette section contient une table des symboles. Si ce fichier comporte un segment
                 chargeable contenant  la  table  des  symboles,  les  attributs  de  la  section
                 contiendront  le  bit SHF_ALLOC. Sinon, ce bit sera désactivé. Cette section est
                 du type SHT_SYMTAB.

       .text     Cette section contient le « texte », autrement dit les instructions exécutables,
                 d'un  programme.  Cette section est du type SHT_PROGBITS. Les attributs utilisés
                 sont SHF_ALLOC et SHF_EXECINSTR.

       Les sections de tables de chaînes contiennent des séquences de caractères terminées par un
       zéro  binaire  (« null »),  communément  appelées  chaînes.  Le  fichier objet utilise ces
       chaînes pour représenter les noms des symboles et des sections. Le premier octet, qui  est
       l'indice  zéro,  est défini comme contenant un null. De même, le dernier octet de la table
       de chaînes est défini comme contenant un null, ce qui assure que  toutes  les  chaînes  se
       termineront bien par un null.

       La table des symboles d'un fichier objet contient les informations permettant de localiser
       et de repositionner les définitions et références symboliques d'un  programme.  Un  indice
       dans une table de symbole est un indice de ce tableau.

           typedef struct {
               uint32_t      st_name;
               Elf32_Addr    st_value;
               uint32_t      st_size;
               unsigned char st_info;
               unsigned char st_other;
               uint16_t      st_shndx;
           } Elf32_Sym;

           typedef struct {
               uint32_t      st_name;
               unsigned char st_info;
               unsigned char st_other;
               uint16_t      st_shndx;
               Elf64_Addr    st_value;
               uint64_t      st_size;
           } Elf64_Sym;

       Les versions 32 bits et 64 bits comportent les mêmes membres, seul leur ordre diffère.

       st_name   Ce  membre  contient  un indice de la table des chaînes de symboles d'un fichier
                 objet. Cette table contient la  représentation  sous  la  forme  de  chaînes  de
                 caractères  des  noms  des  symboles. Si la valeur de ce champ est non nulle, il
                 représente l'indice de la table des chaînes qui donne son nom au symbole. Sinon,
                 le symbole n'a pas de nom.

       st_value  Ce membre donne la valeur associée au symbole.

       st_size   De  nombreux  symboles sont associés à des tailles. Ce champ contient zéro si le
                 symbole n'a pas de taille ou si sa taille est inconnue.

       st_info   Ce membre indique le type de symbole et ses attributs de liaison :

                 STT_NOTYPE  Le type de ce symbole n'est pas défini.

                 STT_OBJECT  Ce symbole est associé à un objet de données.

                 STT_FUNC    Ce symbole est associé à une fonction ou un autre code exécutable.

                 STT_SECTION Ce symbole est associé à une section. Les entrées de ce type  de  la
                             table  des symboles existent principalement pour le repositionnement
                             et ont normalement des liaisons STB_LOCAL.

                 STT_FILE    Par convention, le nom de ce symbole donne le nom du fichier  source
                             associé  au  fichier  objet.  Un  symbole  de ce type a des liaisons
                             STB_LOCAL, son indice de section est SHN_ABS, et, s'il est  présent,
                             il précède les autres symboles STB_LOCAL du fichier.

                 STT_LOPROC  Cette  valeur  et  les  valeurs suivantes jusqu'à STT_HIPROC (valeur
                             comprise)  sont  réservées  à   des   sémantiques   spécifiques   au
                             processeur.

                 STT_HIPROC  Cette  valeur  et  les valeurs précédentes depuis STT_LOPROC incluse
                             sont réservées à des sémantiques spécifiques au processeur.

                 STB_LOCAL   Les symboles locaux ne sont pas visibles en dehors du fichier  objet
                             contenant  leur  définition. Des symboles locaux de même nom peuvent
                             exister dans plusieurs fichiers sans interférer entre eux.

                 STB_GLOBAL  Les symboles globaux sont  visibles  de  tous  les  fichiers  objets
                             devant être réunis. La définition par un fichier d'un symbole global
                             satisfera une référence non définie d'un autre  fichier  à  ce  même
                             symbole.

                 STB_WEAK    Les  symboles  faibles ressemblent à des symboles globaux, mais leur
                             définition a une priorité plus faible.

                 STB_LOPROC  Cette valeur et les valeurs  suivantes  jusqu'à  STB_HIPROC  (valeur
                             comprise)   sont   réservées   à   des  sémantiques  spécifiques  au
                             processeur.

                 STB_HIPROC  Cette valeur et les valeurs précédentes  depuis  STB_LOPROC  incluse
                             sont réservées à des sémantiques spécifiques au processeur.

                             Il existe des macros permettant de coder et de décoder les champs de
                             type et de liaison :

                             ELF32_ST_BIND(info) ou ELF64_ST_BIND(info) extrait une liaison d'une
                             valeur st_info.

                             ELF32_ST_TYPE(info) ou ELF64_ST_TYPE(info)
                             extraire un type d'une valeur st_info.

                             ELF32_ST_INFO(liaison, type) ou ELF64_ST_INFO(liaison, type)
                             convertir une liaison et un type en une valeur st_info.

       st_other  Ce membre définit la visibilité du symbole.

                 STV_DEFAULT     Règles par défaut de visibilité du symbole.
                 STV_INTERNAL    Classe caché spécifique au processeur.
                 STV_HIDDEN      Le symbole n"est pas disponible dans d'autres modules.
                 STV_PROTECTED   Non préemptible, non exporté.

                 Il existe des macros permettant d'extraire le type de visibilité :

                 ELF32_ST_VISIBILITY(autre)  ou ELF64_ST_VISIBILITY(autre)

       st_shndx  Chaque  entrée  de  la  table  des symboles est « définie » en relation avec une
                 section. Ce membre contient l'indice correspondant de la table des  en-têtes  de
                 sections.

       Le  repositionnement est le processus consistant à relier des références symboliques à des
       définitions symboliques. Les fichiers repositionnables doivent contenir  des  informations
       décrivant comment modifier le contenu de leurs sections, ce qui permet aux fichiers objets
       partagés et exécutables de détenir les bonnes informations concernant l'image mémoire d'un
       programme. Les entrées de repositionnement sont ces données.

       Structures de repositionnement pour lesquelles un additif est nécessaire :

           typedef struct {
               Elf32_Addr r_offset;
               uint32_t   r_info;
           } Elf32_Rel;

           typedef struct {
               Elf64_Addr r_offset;
               uint64_t   r_info;
           } Elf64_Rel;

       Structures de repositionnement pour lesquelles un additif est nécessaire :

           typedef struct {
               Elf32_Addr r_offset;
               uint32_t   r_info;
               int32_t    r_addend;
           } Elf32_Rela;

           typedef struct {
               Elf64_Addr r_offset;
               uint64_t   r_info;
               int64_t    r_addend;
           } Elf64_Rela;

       r_offset    Ce  membre donne l'emplacement où appliquer l'action de repositionnement. Pour
                   un fichier repositionnable, sa valeur est le déplacement en octets  depuis  le
                   début   de   la   section   jusqu'à   l'unité  de  stockage  affectée  par  le
                   repositionnement. Pour un fichier exécutable ou un objet  partagé,  sa  valeur
                   est   l'adresse   virtuelle   de   l'unité   de   stockage   affectée  par  le
                   repositionnement.

       r_info      Ce membre donne à la fois l'indice de la table des symboles par rapport auquel
                   on  doit  effectuer  le  repositionnement  et  le  type  de repositionnement à
                   appliquer. Les types de repositionnement dépendent du processeur.  Lorsque  le
                   texte  mentionne  le  type  de  repositionnement  ou  l'indice de la table des
                   symboles  d'une  entrée  de  repositionnement,  il  s'agit  du   résultat   de
                   l'application  de  ELF[32|64]_R_TYPE  ou  ELF[32|64]_R_SYM, respectivement, au
                   champ r_info de cette entrée.

       r_addend    Ce membre indique un additif constant pour le calcul de la  valeur  à  stocker
                   dans le champ repositionnable.

       La  section  .dynamic  comporte  une  série de structures qui contiennent les informations
       relatives à l'édition de liens dynamique. Le membre  d_tag  contrôle  l'interprétation  de
       d_un.

           typedef struct {
               Elf32_Sword    d_tag;
               union {
                   Elf32_Word d_val;
                   Elf32_Addr d_ptr;
               } d_un;
           } Elf32_Dyn;
           extern Elf32_Dyn _DYNAMIC[];

           typedef struct {
               Elf64_Sxword    d_tag;
               union {
                   Elf64_Xword d_val;
                   Elf64_Addr  d_ptr;
               } d_un;
           } Elf64_Dyn;
           extern Elf64_Dyn _DYNAMIC[];

       d_tag     Ce membre peut prendre l'une des trois valeurs suivantes :

                 DT_NULL     Indique la fin de la section dynamique

                 DT_NEEDED   Décalage  dans  la  table des chaînes vers le nom d'une bibliothèque
                             nécessaire

                 DT_PLTRELSZ Taille en octets des relocations PLT

                 DT_PLTGOT   Adresse de plt et/ou de GOT

                 DT_HASH     Adresse de la table de hachage des symboles

                 DT_STRTAB   Adresse de la table des chaînes

                 DT_SYMTAB   Adresse de la table des symboles

                 DT_RELA     Adresse de la table des relocations Rela

                 DT_RELASZ   Taille, en octets, de la table Rela

                 DT_RELAENT  Taille, en octets, d'une entrée de la table Rela

                 DT_STRSZ    Taille, en octets, de la table des chaînes

                 DT_SYMENT   Taille, en octets, d'une entrée de la table des symboles

                 DT_INIT     Adresse de la fonction d'initialisation

                 DT_FINI     Adresse de la fonction de terminaison

                 DT_SONAME   Déplacement dans la table des chaînes vers le nom de l'objet partagé

                 DT_RPATH    Déplacement dans la table des chaînes pour le chemin de recherche de
                             la bibliothèque (déprécié)

                 DT_SYMBOLIC Demander  à  l'éditeur  de liens de rechercher les symboles dans cet
                             objet partagé avant l'exécutable

                 DT_REL      Adresse de la table des relocations Rel

                 DT_RELSZ    Taille en octets de la table Rel

                 DT_RELENT   Taille en octets d'une entrée de la table Rel

                 DT_PLTREL   Type de relocation auquel se réfère PLT (Rela ou Rel)

                 DT_DEBUG    Utilisation non définie pour le débogage

                 DT_TEXTREL  Son absence indique qu'aucune relocation ne devrait s'appliquer à un
                             segment non accessible en écriture

                 DT_JMPREL   Adresse des entrées de relocation, uniquement pour la PLT

                 DT_BIND_NOW Informer   l'éditeur  de  liens  dynamique  de  traiter  toutes  les
                             relocations avant de transférer le contrôle à l'exécutable

                 DT_RUNPATH  Décalage dans la table des chaînes pour le chemin de recherche de la
                             bibliothèque

                 DT_LOPROC   Début des sémantiques spécifiques au processeur

                 DT_HIPROC   Fin de la sémantique propre au processeur

       d_val     Ce membre représente des valeurs entières ayant des interprétations diverses.

       d_ptr     Ce   membre   représente   les   adresses   virtuelles  du  programme.  Lors  de
                 l'interprétation de ces adresses, l'adresse réelle  doit  être  calculée  en  se
                 basant  sur  la  valeur  originale  du  fichier  et  sur l'adresse de base de la
                 mémoire. Les fichiers ne contiennent  pas  d'entrées  de  repositionnement  pour
                 corriger ces adresses.

       _DYNAMIC  Tableau  contenant  toutes  les  structures  de  la  section  .dynamic. Ceci est
                 automatiquement rempli par l'éditeur de liens.

NOTES

       ELF est apparu d'abord dans le System V. Le format ELF est un standard adopté.

       Les extensions pour e_phnum, e_shnum et e_strndx sont des extensions Linux.  Sun,  BSD  et
       AMD64 les gèrent aussi. Pour plus d'informations, veuillez lire la section VOIR AUSSI.

VOIR AUSSI

       as(1), gdb(1), ld(1), objdump(1), execve(2), core(5)

       Hewlett-Packard, Format de fichiers Elf-64 (Elf-64 Object File Format).

       Santa  Cruz  Operation,  Interface binaire des applications System V (System V Application
       Binary Interface).

       UNIX System Laboratories, "Object Files", Format des fichiers exécutables ELF  (Executable
       and Linking Format)

       Sun  Microsystems,  Guide de l'éditeur de liens et des bibliothèques (Linker and Libraries
       Guide).

       Version  préliminaire  de  l'ABI  AMD64  (System  V  Application  Binary  Interface  AMD64
       Architecture Processor Supplement).

COLOPHON

       Cette  page  fait partie de la publication 3.65 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Jean-Philippe  Guérard  (2005), Alain Portal <http://manpagesfr.free.fr/> (2006). Jean-Luc
       Coulon et l'équipe francophone de traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>   ou   par   un  rapport  de  bogue  sur  le  paquet
       manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document  en  utilisant  la
       commande « man -L C <section> <page_de_man> ».