Nlist, Sous-routine nlist64

Objectif

Extrait les entrées d'une liste de noms.

Bibliothèque

Bibliothèque C standard (libc.a)

Bibliothèque de compatibilité Berkeleylibbsd.a] pour la sous-routine nlist, les programmes 32 bits et la plate-forme basée sur le processeur POWER

Syntaxe

#include <nlist.h>

int nlist ( FileName, NL )
const char *FileName;
struct nlist *NL;

int nlist64 ( FileName, NL64 )
const char *FileName;
struct nlist64 *NL64;

Descriptif

Les sous-routines nlist et nlist64 examinent la liste de noms dans le fichier objet nommé par le paramètre FileName . La sous-routine lit de manière sélective une liste de valeurs et les stocke dans un tableau de structures nlist ou nlist64 pointées par le paramètre NL ou NL64 , respectivement.

La liste de noms spécifiée par le paramètre NL ou NL64 se compose d'un tableau de structures Nlist ou nlist64 contenant des noms de symboles et d'autres informations. La liste s'arrête avec un élément ayant un pointeur nul ou un pointeur vers une chaîne nulle dans le membre de structure Nom_nr . Chaque nom de symbole est recherché dans la liste des noms du fichier. Si le nom est trouvé, la valeur du symbole est stockée dans la structure et les autres zones sont renseignes. Si le programme n'a pas été compilé avec l'indicateur -g , la zone Type_n peut être 0.

Si plusieurs instances d'un symbole sont trouvées, les informations relatives à la dernière instance sont stockées. Si aucun symbole n'est trouvé, toutes les zones de structure, à l'exception de la zone Nom_nr , sont définies sur 0. Seuls les symboles globaux seront trouvés.

Les sous-routines nlist et nlist64 s'exécutent dans des programmes 32 bits et 64 bits qui lisent la liste de noms des fichiers objet 32 bits et 64 bits, à une exception près: dans les programmes 32 bits, nlist renvoie -1 si le fichier spécifié est un fichier objet 64 bits.

Les sous-routines Nlist et nlist64 sont utilisées pour lire la liste des noms à partir des fichiers d'objets XCOFF.

La sous-routine nlist64 peut être utilisée pour examiner la liste de noms système conservée dans le noyau, en spécifiant /unix comme paramètre FileName . Le sous-programme Knlist peut également être utilisé pour rechercher des symboles dans l'espace de nom du noyau actuel.

Remarque: Le fichier d'en-tête nlist.h comporte une zone #define pour n_name. Si un fichier source inclut à la fois nlist.h et netdb.h, il y aura un conflit avec l'utilisation de n_name. Si netdb.h est inclus après nlist.h, n_name ne sera pas défini. Pour résoudre ce problème, _n._n_name doit être utilisé à la place. Si netdb.h est inclus avant nlist.het que vous devez vous référer à la zone n_name de struct netent, vous devez annuler la définition de n_name en entrant:
#undef n_name

La sous-routine nlist dans libbsd.a est prise en charge uniquement en mode 32 bits.

Paramètres

Tableau 1. Paramètres
Article Descriptif
FileName Indique le nom du fichier contenant une liste de noms.
caractère de retour à la ligne Pointe vers le tableau des structures Nlist .
NL64 Pointe vers le tableau des structures nlist64 .

Valeurs renvoyées

Une fois l'opération terminée, un 0 est renvoyé, même si certains symboles sont introuvables. Dans la version libbsd.a de nlist, le nombre de symboles non trouvés dans la liste de noms du fichier objet est renvoyé. Si le fichier est introuvable ou s'il ne s'agit pas d'une liste de noms valide, la valeur -1 est renvoyée.

Interfaces de compatibilité

Pour obtenir la version compatible BSD des applications 32 bits, compilez avec la bibliothèque libbsd.a à l'aide de l'indicateur -lbsd .