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

Pagini de manual de Linux 6.03                   7 ianuarie 2023                                        dlsym(3)