end(3)

NUME
etext, edata, end - sfârșitul segmentelor de program

REZUMAT
extern etext;
extern edata;
extern end;

DESCRIERE
Adresele acestor simboluri indică sfârșitul diferitelor segmente de program:

etext
    Aceasta este prima adresă după sfârșitul segmentului de text (codul programului).

edata
    Aceasta este prima adresă după sfârșitul segmentului de date inițializat.

end Aceasta este prima adresă după sfârșitul segmentului de date neinițializate (cunoscut și sub numele de segment BSS).

STANDARDE
Niciunul.

ISTORIC
Deși aceste simboluri sunt furnizate de mult timp în majoritatea sistemelor UNIX, ele nu sunt standardizate; utilizați-le cu prudență.

NOTE
Programul trebuie să declare în mod explicit aceste simboluri; ele nu sunt definite în niciun fișier antet.

În unele sisteme, numele acestor simboluri sunt precedate de caractere de subliniere, astfel: _etext, _edata și _end. Aceste simboluri sunt, de asemenea, definite pentru programele compilate în Linux.

La începutul execuției programului, întreruperea programului se va afla undeva în apropierea lui &end (poate la începutul paginii următoare). Cu toate acestea, întreruperea se va schimba pe măsură ce memoria este alocată prin brk(2) sau malloc(3). Utilizați sbrk(2) cu un argument de zero pentru a afla valoarea curentă a întreruperii programului.

EXEMPLE
Atunci când este rulat, programul de mai jos produce un rezultat precum cel care urmează:

    $ ./a.out
    Prima adresă după:
        textul programului (etext)    0x8048568
        datele inițializate (edata)   0x804a01c
        datele neinițializate (end)   0x804a024

  Sursa programului
    #include <stdio.h>
    #include <stdlib.h>

    extern char etext, edata, end; /* Simbolurile trebuie să fie de un anumit tip,
                                      sau «gcc -Wall» se va plânge */

    int
    main(void)
    {
        printf("Prima adresă după:\n");
        printf("    textul programului (etext)   %10p\n", &etext);
        printf("    datele inițializate (edata)  %10p\n", &edata);
        printf("    datele neinițializate (end)  %10p\n", &end);

        exit(EXIT_SUCCESS);
    }

CONSULTAȚI ȘI
objdump(1), readelf(1), sbrk(2), elf(5)

TRADUCERE
Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă Nicio RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.