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

NOM

       dlsym, dlvsym - Obtenir l'adresse d'un symbole dans un objet ou exécutable partagé

BIBLIOTHÈQUE

       Bibliothèque de liens dynamiques (libc, -lc)

SYNOPSIS

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

DESCRIPTION

       La  fonction  dlsym() prend comme arguments un « descripteur » d'un objet partagé et chargé dynamiquement
       renvoyé par dlopen() et un nom de symbole terminé par l'octet NULL final,  et  renvoie  l'adresse  où  ce
       symbole  a  été  chargé en mémoire. Si le symbole n'est pas trouvé, soit dans l'objet spécifié, soit dans
       n'importe quels objets chargés automatiquement par dlopen() lorsque ces objets ont été  chargés,  dlsym()
       renvoie NULL. La recherche effectuée par dlsym() est d'abord en largeur à travers l'arbre des dépendances
       de ces objets partagés.

       Dans  certains  cas  inhabituels  (voir  NOTES),  le  symbole  peut  vraiment  avoir  la valeur NULL. Par
       conséquent, une valeur NULL renvoyée par dlsym()  n'indique  pas  nécessairement  une  erreur.  La  bonne
       manière de distinguer une erreur d'un symbole ayant NULL pour valeur est d'appeler dlerror() pour effacer
       toute  ancienne condition d'erreur, puis d'appeler dlsym() et enfin d'appeler dlerror() une nouvelle fois
       en sauvegardant sa valeur de retour dans une variable pour finalement vérifier si la  valeur  sauvegardée
       n'est pas NULL.

       Il y a deux pseudo-descripteurs qui peuvent être spécifiés dans handle :

       RTLD_DEFAULT
              Trouver  la  première  occurence du symbole recherché en utilisant l'ordre de recherche par défaut
              pour objet partagé. La recherche inclut les symboles globaux dans l'exécutable et ses  dépendances
              de  même  que  les  symboles  dans  les  objets  partagés  chargés  dynamiquement  avec le drapeau
              RTLD_GLOBAL.

       RTLD_NEXT
              Trouver la prochaine occurrence du symbole recherché  dans  l'ordre  de  recherche  après  l'objet
              courant. Cela permet de fournir une enveloppe autour d'une fonction dans un autre objet partagé de
              façon  à  ce  que, par exemple, la définition d'une fonction dans un objet partagé préchargé (voir
              LD_PRELOAD dans ld.do(8)) peut trouver et invoquer la fonction « réelle » fournie  dans  un  autre
              objet partagé (ou bien la « prochaine » définition de la fonction dans les cas où il y a plusieurs
              couches de préchargement).

       La  macro  de  test  de  fonctionnalité  _GNU_SOURCE  doit  être  définie pour obtenir les définitions de
       RTLD_DEFAULT et RTLD_NEXT depuis <dlfcn.h>.

       La fonction dlvsym() effectue la même chose que dlsym() mais prend une version sous forme de chaîne comme
       argument supplémentaire.

VALEUR RENVOYÉE

       En cas de succès, ces fonctions renvoient l'adresse associée au symbol. En cas d'erreur, elles  renvoient
       NULL ; la cause de l'erreur peut être diagnostiquée avec dlerror(3).

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌──────────────────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├──────────────────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │ dlsym(), dlvsym()                                                    │ Sécurité des threads │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       dlsym()
              POSIX.1-2008.

       dlvsym()
              GNU.

HISTORIQUE

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

       dlvsym()
              glibc 2.1.

NOTES

       Il  y a plusieurs scenarios pour lesquels l'adresse d'un symbole global a la valeur NULL. Par exemple, un
       symbole peut être placé à l'adresse zéro par l'éditeur de liens via un script d'éditeur de liens ou  avec
       l'option  en ligne de commande --defsym. Les symboles faibles non définis ont également NULL pour valeur.
       Enfin, la valeur du symbole peut être le résultat d'une fonction de résolution de fonction indirecte  GNU
       (IFUNC)  qui renvoie NULL comme valeur de résolution. Dans ce dernier cas, dlsym() renvoie également NULL
       sans erreur. Cependant, dans les deux cas précédents, le comportement de l'éditeur de liens dynamiques de
       GNU n'est pas uniforme : le traitement des relocalisations réussit et la  valeur  du  symbole  peut  être
       NULL, mais dlsym() échoue et dlerror() indique une erreur de recherche.

   Historique
       La fonction dlsym() fait partie de l'API de dlopen, dérivée de SunOS. Ce système ne possède pas dlvsym().

EXEMPLES

       Consultez dlopen(3).

VOIR AUSSI

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

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,  François  Micaux,  Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,     Denis    Barbier    <barbier@debian.org>,    David    Prévot
       <david@tilapin.org> et Grégoire Scano <gregoire.scano@malloc.fr>

       Cette traduction est une documentation libre ; veuillez vous  reporter  à  la  GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous  découvrez  un  bogue  dans la traduction de cette page de manuel, veuillez envoyer un message à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                           dlsym(3)