dwww Home | Manual pages | Find package

dlsym(3)                   Library Functions Manual                   dlsym(3)

NOM
       dlsym,  dlvsym - Obtenir l'adresse d'un symbole dans un objet ou exécu-
       table 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 sym-
       bole 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 automatique-
       ment  par  dlopen() lorsque ces objets ont été chargés, dlsym() renvoie
       NULL. La recherche effectuée par dlsym() est d'abord en largeur à  tra-
       vers 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  dl-
       sym() n'indique pas nécessairement une erreur. La bonne manière de dis-
       tinguer une erreur d'un symbole ayant NULL pour  valeur  est  d'appeler
       dlerror()  pour effacer toute ancienne condition d'erreur, puis d'appe-
       ler dlsym() et enfin d'appeler dlerror() une nouvelle fois en sauvegar-
       dant  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  dyna-
              miquement 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 four-
              nir une enveloppe autour d'une fonction dans un autre objet par-
              tagé de façon à ce que, par exemple, la définition  d'une  fonc-
              tion  dans  un  objet  partagé  préchargé  (voir LD_PRELOAD dans
              ld.do(8)) peut trouver et invoquer la fonction « réelle »  four-
              nie  dans un autre objet partagé (ou bien la « prochaine » défi-
              nition 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 │
       └─────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS
       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 via un script d'éditeur de  liens  ou  avec
       l'option  en ligne de commande --defsym. Les symboles faibles non défi-
       nis 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  dler-
       ror() 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 Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>, David Prévot <david@tilapin.org>  et  Grégoire  Scano  <gre-
       goire.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⟩.

Pages du manuel de Linux 6.03   7 janvier 2023                        dlsym(3)

Generated by dwww version 1.15 on Sat Jun 29 01:46:05 CEST 2024.