1. NOM▲

etext, edata, end - Fin des segments de programme

2. SYNOPSIS ▲

 
Sélectionnez
extern etext;
extern edata;
extern end;

3. DESCRIPTION ▲

Les adresses de ces symboles indiquent la fin de différents segments du programme :

  • etext
        La première adresse après la fin du segment de texte (le code du programme).
  • edata
        La première adresse après la fin du segment des données initialisées.
  • end
        La première adresse après la fin du segment des données non initialisées (également connu comme le segment BSS).

4. CONFORMITÉ ▲

Bien que ces symboles aient été fournis depuis longtemps par la plupart des systèmes UNIX, ils ne sont pas standard ; utilisez les avec précaution.

5. NOTES ▲

Le programme doit déclarer explicitement ces symboles ; ils ne sont définis dans aucun fichier d'en-têtes. Sur certains systèmes, les noms de ces symboles sont précédé d'un tiret-bas : _etext, _edata et _end. Ces symboles sont également définis pour les programmes compilés sous Linux. Au début de l'exécution du programme, l'interruption de programme se trouve quelque part près de &end (peut-être au début de la page qui suit). Cependant, l'interruption de programme se déplacera au fur et à mesure que de la mémoire est allouée avec brk(2) ou malloc(3). Utilisez sbrk(2) avec un paramètre nul pour trouver la valeur actuelle de l'interruption de programme.

6. EXEMPLE ▲

Lors de son exécution, le programme affiche les résultats suivants :

 
Sélectionnez
$ ./a.out
First address past:
    program text (etext)       0x8048568
    initialized data (edata)   0x804a01c
    uninitialized data (end)   0x804a024

6.1. Source du programme ▲

 
Sélectionnez
#include <stdio.h>
#include <stdlib.h>
extern char etext, edata, end; /* The symbols must have some type,
                                   or "gcc -Wall" complains */
int
main(int argc, char *argv[])
{
    printf("First address past:\n");
    printf("    program text (etext)      %10p\n", &etext);
    printf("    initialized data (edata)  %10p\n", &edata);
    printf("    uninitialized data (end)  %10p\n", &end);
    exit(EXIT_SUCCESS);
}

7. VOIR AUSSI ▲

objdump(1), readelf(1), sbrk(2), elf(5)

8. COLOPHON ▲

Cette page fait partie de la publication 3.52 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/.

9. 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/>.

Alain Portal <http://manpagesfr.free.fr/> (2008).

Veuillez signaler toute erreur de traduction en écrivant à <>.

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