Provided by: manpages-fr-dev_4.13-4_all bug

NOM

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

SYNOPSIS

       #include <dlfcn.h>

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

       #define _GNU_SOURCE
       #include <dlfcn.h>

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

       Effectuer l'édition des liens avec l'option -ldl.

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

VERSIONS

       dlsym()  est  présente  dans  les  versions 2.0  et ultérieures de la glibc. dlvsym() est apparue dans la
       version 2.1 de la glibc.

ATTRIBUTS

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

CONFORMITÉ

       POSIX.1-2001 décrit dlsym(). La fonction dlvsym() est une extension GNU.

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 au moyen d'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)

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions  pour  signaler  des  anomalies et la dernière version de cette page peuvent être trouvées à
       l'adresse https://www.kernel.org/doc/man-pages/.

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.

Linux                                              9 juin 2020                                          DLSYM(3)