Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

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

BIBLIOTECA

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

SINOPSIS

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

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

       dlsym()
              POSIX.1-2008.

       dlvsym()
              GNU.

ISTORIC

       dlsym()
              glibc 2.0.  POSIX.1-2001.

       dlvsym()
              glibc 2.1.

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   făcută   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.9.1                    2 mai 2024                                           dlsym(3)