getauxval - Récupérer une valeur du vecteur
auxiliaire
Bibliothèque C standard (libc, -lc)
#include <sys/auxv.h>
unsigned long getauxval(unsigned long type);
La fonction getauxval() récupère des valeurs
du vecteur auxiliaire, un mécanisme que le chargeur de binaires ELF
du noyau utilise pour passer certains renseignements à l'espace
utilisateur quand un programme est exécuté.
Toutes les entrées du vecteur auxiliaire sont des paires de
valeurs : un type qui identifie ce que l'entrée
représente et une valeur pour ce type. En fonction de l'argument
type, getauxval() renvoie la valeur correspondante.
Les valeurs renvoyées pour tous les types sont
données dans la liste suivante. Les différentes valeurs de
type ne sont pas toutes présentes sur toutes les
architectures.
- AT_BASE
- L'adresse de base de l'interpréteur du programme (l'éditeur
de liens dynamiques en général).
- AT_BASE_PLATFORM
- Un pointeur vers une chaîne (PowerPC et MIPS seulement). Sur
PowerPC, cette chaîne identifie la plateforme réelle et elle
peut être différente de AT_PLATFORM. Sur MIPS, elle
identifie le niveau ISA (depuis Linux 5.7).
- AT_CLKTCK
- La fréquence utilisée par times(2) pour compter.
Cette valeur peut aussi être obtenue avec
sysconf(_SC_CLK_TCK).
- AT_DCACHEBSIZE
- La taille du bloc de cache de données.
- AT_EGID
- Le GID effectif du thread.
- AT_ENTRY
- L'adresse d'entrée de l'exécutable.
- AT_EUID
- L'UID effectif du thread.
- AT_EXECFD
- Le descripteur de fichier du programme.
- AT_EXECFN
- Un pointeur vers une chaîne contenant le nom de chemin
utilisé pour exécuter le programme.
- AT_FLAGS
- Drapeaux (inutilisé).
- AT_FPUCW
- Le mot de contrôle de FPU utilisé (architecture SuperH
seulement). Cette information donne quelques renseignements sur
l'initialisation FPU réalisée par le noyau.
- AT_GID
- Le GID réel du thread.
- AT_HWCAP
- Un masque de bits, dépendant de l'architecture et de l'ABI, qui
précise les capacités détaillées du
processeur. Le contenu du masque de bits dépend du matériel
(consultez par exemple le fichier arch/x86/include/asm/cpufeature.h
des sources du noyau pour obtenir des précisions sur l'architecture
x86 ; la valeur renvoyée est le premier mot sur
32 bits du tableau qui y est décrit). Une version
humainement lisible des mêmes renseignements est disponible dans
/proc/cpuinfo.
- AT_HWCAP2
(depuis la glibc 2.18)
- Autres indications dépendant de la machine à propos des
capacités du processeur.
- AT_ICACHEBSIZE
- La taille du bloc de cache d'instructions.
- AT_L1D_CACHEGEOMETRY
- La géométrie du cache de données L1 codée avec
la taille d'une ligne de cache en octets dans les 16 bits
inférieurs et l'associativité du cache dans les
16 bits suivants. L'associativité est telle que si N est la
valeur sur 16 bits, le cache est associatif par ensembles de
N blocs.
- AT_L1D_CACHESIZE
- La taille du cache de données L1.
- AT_L1I_CACHEGEOMETRY
- La géométrie du cache d'instructions L1 codée de la
même manière que AT_L1D_CACHEGEOMETRY.
- AT_L1I_CACHESIZE
- La taille du cache d'instructions L1.
- AT_L2_CACHEGEOMETRY
- La géométrie du cache L2 codée de la même
manière que AT_L1D_CACHEGEOMETRY.
- AT_L2_CACHESIZE
- La taille du cache L2.
- AT_L3_CACHEGEOMETRY
- La géométrie du cache L3 codée de la même
manière que AT_L1D_CACHEGEOMETRY.
- AT_L3_CACHESIZE
- La taille du cache L3.
- AT_PAGESZ
- La taille de page du système (la même valeur que celle
renvoyée par sysconf(_SC_PAGESIZE)).
- AT_PHDR
- L'adresse des en-têtes du programme de l'exécutable.
- AT_PHENT
- La taille de l'entrée des en-têtes du programme.
- AT_PHNUM
- Le nombre d'en-têtes du programme.
- AT_PLATFORM
- Un pointeur vers une chaîne qui identifie la plate-forme
matérielle sur laquelle le programme est exécuté.
L'éditeur de liens dynamiques utilise cette chaîne dans
l'interprétation des valeurs rpath.
- AT_RANDOM
- L'adresse de seize octets contenant une valeur aléatoire.
- AT_SECURE
- Cet attribut possède une valeur non nulle si l'exécutable
doit être traité de façon sécurisée. Le
plus souvent, une valeur non nulle indique que le processus exécute
un binaire set-user-ID ou set-group-ID (si bien que ses UID ou GID
réels et effectifs sont différents) ou qu'il acquiert des
capacités (« capabilities ») en
exécutant un fichier binaire qui possède des
capacités (voir capabilities(7)) ; sinon, une valeur
non nulle pourrait être attribuée par un module de
sécurité Linux. Quand cette valeur est non nulle,
l'éditeur de liens dynamiques désactive l'utilisation de
certaines variables d'environnement (consultez ld-linux.so(8)) et
la glibc modifie d'autres facettes de son comportement (consultez aussi
secure_getenv(3)).
- AT_SYSINFO
- Le point d'entrée vers la fonction d'appel système dans le
vDSO. N'est ni présent ni nécessaire sur toutes les
architectures (par exemple absent sur x86-64).
- AT_SYSINFO_EHDR
- L'adresse d'une page contenant le vDSO (objet partagé dynamique
virtuel, « virtual dynamic shared object »)
que le noyau crée pour fournir des implémentations rapides
de certains appels systèmes.
- AT_UCACHEBSIZE
- La taille du bloc de cache unifié.
- AT_UID
- L'UID réel du thread.
Si elle réussit, getauxval() renvoie la valeur
correspondant au type. Si type n'est pas trouvé, la
valeur renvoyée est 0.
La fonction getauxval() est disponible depuis la
glibc 2.16.
Pour une explication des termes utilisés dans cette
section, consulter attributes(7).
Interface |
Attribut |
Valeur |
getauxval() |
Sécurité des threads |
MT-Safe |
Cette fonction est une extension non normalisée de la
glibc.
Le principal utilisateur des renseignements du vecteur auxiliaire
est l'éditeur de liens dynamiques ld-linux.so(8). Le vecteur
auxiliaire est un raccourci pratique et efficace qui permet au noyau de
communiquer un certain jeu de renseignements standards dont l'éditeur
de liens a souvent ou toujours besoin. Dans certains cas, les mêmes
renseignements pourraient être obtenus à l'aide d'appels
système, mais l'utilisation du vecteur auxiliaire est moins
coûteuse.
Le vecteur auxiliaire réside juste au-dessus de la liste
d'arguments et de l'environnement dans l'espace d'adresse du processus. Le
vecteur auxiliaire fourni à un programme peut être
affiché en définissant la variable d'environnement
LD_SHOW_AUXV lors de l'exécution d'un programme :
$ LD_SHOW_AUXV=1 sleep 1
Le vecteur auxiliaire de n'importe quel processus peut (en
fonction des droits du fichier) être obtenu dans
/proc/[pid]/auxv. Consultez proc(5) pour obtenir de plus
amples renseignements.
Avant l'ajout du code d'erreur ENOENT à partir de la
glibc 2.19, il n'existait aucun moyen de distinguer sans
ambiguïté le cas où type n'avait pas pu
être trouvé du cas où la valeur correspondant à
type était égale à zéro.
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
Lucien Gentis <lucien.gentis@waika9.com>
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.