.\" -*- coding: UTF-8 -*- .\" Copyright 1995 Yggdrasil Computing, Incorporated. .\" and Copyright 2003, 2015 Michael Kerrisk .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, see .\" . .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH DLSYM 3 "9 juin 2020" Linux "Manuel du programmeur Linux" .SH NOM dlsym, dlvsym \- Obtenir l'adresse d'un symbole dans un objet ou exécutable partagé .SH SYNOPSIS \fB#include \fP .PP \fBvoid *dlsym(void *\fP\fIhandle\fP\fB, const char *\fP\fIsymbol\fP\fB);\fP .PP \fB#define _GNU_SOURCE\fP .br \fB#include \fP .PP \fBvoid *dlvsym(void *\fP\fIhandle\fP\fB, char *\fP\fIsymbol\fP\fB, char *\fP\fIversion\fP\fB);\fP .PP Effectuer l'édition des liens avec l'option \fI\-ldl\fP. .SH DESCRIPTION La fonction \fBdlsym\fP() prend comme arguments un «\ descripteur\ » d'un objet partagé et chargé dynamiquement renvoyé par \fBdlopen\fP() 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 \fBdlopen\fP() lorsque ces objets ont été chargés, \fBdlsym\fP() renvoie NULL. La recherche effectuée par \fBdlsym\fP() est d'abord en largeur à travers l'arbre des dépendances de ces objets partagés. .PP Dans certains cas inhabituels (voir NOTES), le symbole peut vraiment avoir la valeur NULL. Par conséquent, une valeur NULL renvoyée par \fBdlsym\fP() 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 \fBdlerror\fP() pour effacer toute ancienne condition d'erreur, puis d'appeler \fBdlsym\fP() et enfin d'appeler \fBdlerror\fP() 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. .PP Il y a deux pseudo\-descripteurs qui peuvent être spécifiés dans \fIhandle\fP\ : .TP \fBRTLD_DEFAULT\fP 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 \fBRTLD_GLOBAL\fP. .TP \fBRTLD_NEXT\fP 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 \fBLD_PRELOAD\fP dans \fBld.do\fP(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). .PP La macro de test de fonctionnalité \fB_GNU_SOURCE\fP doit être définie pour obtenir les définitions de \fBRTLD_DEFAULT\fP et \fBRTLD_NEXT\fP depuis \fI\fP. .PP La fonction \fBdlvsym\fP() effectue la même chose que \fBdlsym\fP() mais prend une version sous forme de chaîne comme argument supplémentaire. .SH "VALEUR RENVOYÉE" En cas de succès, ces fonctions renvoient l'adresse associée au \fIsymbol\fP. En cas d'erreur, elles renvoient NULL\ ; la cause de l'erreur peut être diagnostiquée avec \fBdlerror\fP(3). .SH VERSIONS \fBdlsym\fP() est présente dans les versions\ 2.0 et ultérieures de la glibc. \fBdlvsym\fP() est apparue dans la version\ 2.1 de la glibc. .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lb lb lb l l l. Interface Attribut Valeur T{ \fBdlsym\fP(), \fBdlvsym\fP() T} Sécurité des threads MT\-Safe .TE .SH CONFORMITÉ POSIX.1\-2001 décrit \fBdlsym\fP(). La fonction \fBdlvsym\fP() est une extension GNU. .SH 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 \fI\-\-defsym\fP. 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, \fBdlsym\fP() 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 \fBdlsym\fP() échoue et \fBdlerror\fP() indique une erreur de recherche. .SS Historique La fonction \fBdlsym\fP() fait partie de l'API de dlopen, dérivée de SunOS. Ce système ne possède pas \fBdlvsym\fP(). .SH EXEMPLES Consultez \fBdlopen\fP(3). .SH "VOIR AUSSI" \fBdl_iterate_phdr\fP(3), \fBdladdr\fP(3), \fBdlerror\fP(3), \fBdlinfo\fP(3), \fBdlopen\fP(3), \fBld.so\fP(8) .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP 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/. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Grégoire Scano . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .