Provided by: manpages-fr-dev_4.23.1-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 (libdl, -ldl)

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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.