Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       dlsym, dlvsym - obține adresa unui simbol dintr-un obiect partajat sau executabil

BIBLIOTECA

       Bibliotecă de legături dinamice (libdl, -ldl)

REZUMAT

       #include <dlfcn.h>

       void *dlsym(void *restrict handle, const char *restrict symbol);

       #define _GNU_SOURCE
       #include <dlfcn.h>

       void *dlvsym(void *restrict handle, const char *restrict symbol,
                    const char *restrict version);

DESCRIERE

       Funcția  dlsym()  primește un gestionar, „handle” al unui obiect partajat încărcat dinamic
       returnat de dlopen(3) împreună cu un nume de  simbol  cu  terminație  nulă  și  returnează
       adresa  la  care simbolul respectiv este încărcat în memorie. În cazul în care simbolul nu
       este găsit în obiectul specificat sau în oricare dintre obiectele partajate care  au  fost
       încărcate  automat  de  dlopen(3)  la  încărcarea obiectului respectiv, dlsym() returnează
       NULL; (căutarea efectuată de dlsym() se face în primul rând pe  lățime  prin  arborele  de
       dependență al acestor obiecte partajate).

       În  cazuri neobișnuite (a se vedea NOTE), valoarea simbolului poate fi de fapt NULL.  Prin
       urmare, o returnare NULL de la dlsym() nu trebuie neapărat  să  indice  o  eroare.   Modul
       corect  de  a  distinge o eroare de un simbol a cărui valoare este NULL este să se apeleze
       dlerror(3) pentru a șterge orice condiții de eroare vechi, apoi să se apeleze  dlsym()  și
       apoi  să  se  apeleze din nou dlerror(3), salvând valoarea de întoarcere a acestuia într-o
       variabilă și să se verifice dacă această valoare salvată nu este NULL.

       Există doi pseudo-gestionari speciali care pot fi specificați în handle:

       RTLD_DEFAULT
              Găsește prima apariție a simbolului dorit utilizând ordinea implicită de căutare  a
              obiectelor  partajate.   Căutarea  va include simbolurile globale din executabil și
              din dependențele sale, precum și simbolurile din obiectele partajate care  au  fost
              încărcate dinamic cu fanionul RTLD_GLOBAL.

       RTLD_NEXT
              Găsește  următoarea apariție a simbolului dorit în ordinea de căutare după obiectul
              curent. Acest lucru permite să se furnizeze  o  învăluire  în  jurul  unei  funcții
              dintr-un  alt  obiect  partajat,  astfel  încât, de exemplu, definiția unei funcții
              dintr-un obiect partajat preîncărcat (a se vedea LD_PRELOAD în ld.so(8))  să  poată
              găsi  și  invoca  funcția  „reală”  furnizată  într-un alt obiect partajat (sau, de
              asemenea, „următoarea” definiție a funcției în cazurile în care  există  mai  multe
              niveluri de preîncărcare).

       Macroul  de  testare  a caracteristicii _GNU_SOURCE trebuie să fie definit pentru a obține
       definițiile RTLD_DEFAULT și RTLD_NEXT din <dlfcn.h>.

       Funcția dlvsym() face același lucru ca  dlsym(),  dar  primește  un  șir  de  versiuni  ca
       argument suplimentar.

VALOAREA RETURNATĂ

       În  caz  de  succes, aceste funcții returnează adresa asociată cu symbol.  În caz de eșec,
       acestea returnează NULL; cauza erorii poate fi diagnosticată cu ajutorul dlerror(3).

VERSIUNI

       dlsym() este prezentă în glibc 2.0 și versiunile ulterioare.   dlvsym()  a  apărut  pentru
       prima dată în glibc 2.1.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

       ┌───────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │InterfațăAtributValoare │
       ├───────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │dlsym(), dlvsym()                                          │ Siguranța firelor │ MT-Safe │
       └───────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

       POSIX.1-2001 descrie dlsym(). Funcția dlvsym() este o extensie GNU.

NOTE

       Există  mai  multe  scenarii  în  care adresa unui simbol global este NULL. De exemplu, un
       simbol poate fi plasat la adresa zero de către editorul de legături, prin intermediul unui
       script  al  editorului de legături sau cu ajutorul opțiunii din linia de comandă --defsym.
       Simbolurile slabe „weak” nedefinite au, de asemenea, valoarea  NULL.  În  cele  din  urmă,
       valoarea simbolului poate fi rezultatul unei funcții de rezolvare a unei funcții indirecte
       GNU (IFUNC) care returnează NULL ca valoare rezolvată. În  acest  din  urmă  caz,  dlsym()
       returnează,  de  asemenea,  NULL  fără  eroare.  Cu toate acestea, în primele două cazuri,
       comportamentul  editorului  de  legături  dinamice  GNU  este   inconsecvent:   procesarea
       realocării reușește și se poate observa că simbolul are valoarea NULL, dar dlsym() eșuează
       și dlerror() indică o eroare de căutare.

   Istoric
       Funcția dlsym() face parte din API dlopen, derivată din SunOS.  Acest sistem nu dispune de
       dlvsym().

EXEMPLE

       A se vedea dlopen(3).

CONSULTAȚI ȘI

       dl_iterate_phdr(3), dladdr(3), dlerror(3), dlinfo(3), dlopen(3), ld.so(8)

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⟩.