Man page - ld-linux(8)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr es ja roManual
ld.so
NOMSYNOPSIS
DESCRIPTION
Mots-clés de chaßne dynamiques
OPTIONS
ENVIRONNEMENT
Mode dâexĂ©cution sĂ©curisĂ©e
Variables dâenvironnement
FICHIERS
NOTES
Legacy Hardware capabilities (from glibc 2.5 to glibc 2.37)
glibc Hardware capabilities (from glibc 2.33)
VOIR AUSSI
TRADUCTION
NOM
ld.so, ld-linux.so - Chargeur et éditeur de liens dynamiques
SYNOPSIS
LâĂ©diteur de liens dynamiques peut ĂȘtre lancĂ© indirectement en dĂ©marrant un programme liĂ© dynamiquement ou un objet partagĂ© (dans ce cas, aucune option en ligne de commande ne peut ĂȘtre transmise, et avec ELF, lâĂ©diteur indiquĂ© dans la section .interp du programme est exĂ©cutĂ©), ou directement en lançant :
/lib/ld-linux.so.* [OPTIONS] [PROGRAMME [ARGUMENTS]]
DESCRIPTION
Les programmes ld.so et ld-linux.so* trouvent et chargent les objets partagés (bibliothÚques partagées) nécessaires pour un programme, préparent son démarrage et le lancent.
Les binaires Linux nĂ©cessitent une Ă©dition de liens dynamiques (au dĂ©marrage) sauf si lâoption -static a Ă©tĂ© indiquĂ©e sur la ligne de commande de ld (1) durant la compilation.
Le programme ld.so traite les binaires a.out, un format utilisĂ© il y a bien longtemps. Le programme ld-linux.so* ( /lib/ld-linux.so.1 pour libc5, /lib/ld-linux.so.2 pour glibc2) traite les binaires qui sont au format ELF plus moderne. Les deux programmes ont le mĂȘme comportement et utilisent les mĂȘmes fichiers dâaide et mĂȘmes programmes ( ldd (1), ldconfig (8) et /etc/ld.so.conf ).
Lors de la rĂ©solution des dĂ©pendances dâobjets partagĂ©s, lâĂ©diteur de liens dynamiques inspecte dâabord chaque chaĂźne de dĂ©pendance Ă la recherche dâune barre oblique (cela peut arriver si un chemin dâobjet partagĂ© contenant des barres obliques a Ă©tĂ© indiquĂ© au moment de la liaison). Si une barre oblique est trouvĂ©e, alors la chaĂźne de dĂ©pendance est interprĂ©tĂ©e comme un chemin (relatif ou absolu) et lâobjet partagĂ© est chargĂ© en utilisant ce chemin.
Si une dĂ©pendance dâobjet partagĂ© ne contient pas de barre oblique, alors elle est recherchĂ©e dans lâordre suivant :
|
(1) |
Using the directories specified in the DT_RPATH dynamic section attribute of the binary if present and DT_RUNPATH attribute does not exist. |
||
|
(2) |
En utilisant la variable dâenvironnement LD_LIBRARY_PATH , sauf si lâexĂ©cutable est utilisĂ© dans le mode dâexĂ©cution sĂ©curisĂ©e (consulter ci-dessous), auquel cas elle est ignorĂ©e. |
||
|
(3) |
En utilisant les rĂ©pertoires indiquĂ©s dans lâattribut de la section dynamique DT_RUNPATH du binaire sâil est prĂ©sent. De tels rĂ©pertoires sont recherchĂ©s uniquement pour trouver ces objets requis par les entrĂ©es DT_NEEDED (dĂ©pendances directes) et ne sâappliquent pas aux enfants des objets qui doivent eux-mĂȘmes avoir leurs propres entrĂ©es DT_RUNPATH. Cela est diffĂ©rent de DT_RPATH, qui est appliquĂ© aux recherches pour tous les enfants dans lâarbre de dĂ©pendances. |
||
|
(4) |
From the cache file /etc/ld.so.cache , which contains a compiled list of candidate shared objects previously found in the augmented library path. If, however, the binary was linked with the -z nodefaultlib linker option, shared objects in the default paths are skipped. Shared objects installed in hardware capability directories (see below) are preferred to other shared objects. |
||
|
(5) |
In the default path /lib , and then /usr/lib . (On some 64-bit architectures, the default paths for 64-bit shared objects are /lib64 , and then /usr/lib64 .) If the binary was linked with the -z nodefaultlib linker option, this step is skipped. |
Mots-clés de chaßne dynamiques
Dans plusieurs emplacements, lâĂ©diteur de liens dynamiques dĂ©veloppe les mots-clĂ©s de chaĂźne dynamiques
|
- |
dans les variables dâenvironnement LD_LIBRARY_PATH , LD_PRELOAD et LD_AUDIT ; |
||
|
- |
dans les valeurs des mots-clés de la section dynamique DT_NEEDED , DT_RPATH , DT_RUNPATH , DT_AUDIT et DT_DEPAUDIT des binaires ELF ; |
||
|
- |
dans les arguments des options de ld.so dans la ligne de commande --audit , --library-path et --preload (consulter ci-dessous)Â ; |
||
|
- |
dans les arguments de nom de fichier pour les fonctions dlopen (3) et dlmopen (3). |
Les
mots-clés substitués sont comme suit :
$ORIGIN
(ou de maniÚre équivalente
${ORIGIN}
)
Cela dĂ©veloppe le rĂ©pertoire contenant le programme ou lâobjet partagĂ©. Ainsi, une application situĂ©e dans un_rĂ©pertoire/app peut ĂȘtre compilĂ©e avec
gcc -Wl,-rpath,'$ORIGIN/../lib'
de sorte quâelle trouvera un objet partagĂ© associĂ© dans un_rĂ©pertoire/lib oĂč que soit situĂ© un_rĂ©pertoire dans la hiĂ©rarchie de rĂ©pertoires. Cela facilite la crĂ©ation dâapplications « prĂȘtes Ă lâemploi » qui nâont pas besoin dâĂȘtre installĂ©es dans un rĂ©pertoire particulier mais peuvent au contraire ĂȘtre installĂ©es dans nâimporte quel rĂ©pertoire et toujours trouver leurs propres objets partagĂ©s.
$LIB (ou de maniÚre équivalente ${LIB} )
Cela se dĂ©veloppe en lib ou lib64 en fonction de lâarchitecture (par exemple lib64 pour x86-64 ou lib pour x86-32).
$PLATFORM (ou de maniÚre équivalente ${PLATFORM} )
Cela se dĂ©veloppe en une chaĂźne correspondant au type de processeur du systĂšme hĂŽte (par exemple « x86_64 »). Pour certaines architectures, le noyau Linux ne fournit pas de chaĂźne de plateforme Ă lâĂ©diteur de liens dynamiques. La valeur de cette chaĂźne est issue de la valeur AT_PLATFORM du vecteur auxiliaire (consulter getauxval (3)).
Remarquez que les mots-clĂ©s de chaĂźne dynamiques doivent ĂȘtre mis entre parenthĂšses correctement lorsquâils sont dĂ©finis Ă partir de lâinterprĂ©teur de commandes pour prĂ©venir de leur dĂ©veloppement en tant que variables de lâinterprĂ©teur ou dâenvironnement.
OPTIONS
--argv0 string (since glibc 2.33)
Set argv[0] to the value string before running the program.
--audit liste
Utiliser les objets nommés dans liste comme vérificateurs. Les objets sont délimités par des deux-points.
--glibc-hwcaps-mask list
only search built-in subdirectories if in list .
--glibc-hwcaps-prepend list
Search glibc-hwcaps subdirectories in list .
--inhibit-cache
Ne pas utiliser /etc/ld.so.cache .
--library-path chemin
Utiliser chemin au lieu du rĂ©glage de la variable dâenvironnement LD_LIBRARY_PATH (consulter ci-dessous). Les noms ORIGIN , LIB et PLATFORM sont interprĂ©tĂ©s comme pour la variable dâenvironnement LD_LIBRARY_PATH .
--inhibit-rpath liste
Ignorer les informations de RPATH et RUNPATH dans les noms dâobjet dans liste . Cette option est ignorĂ©e dans le mode dâexĂ©cution sĂ©curisĂ©e (voir ci-dessous). Les objets dans liste sont sĂ©parĂ©s par des deux-points ou des espaces.
|
--list |
Lister les dépendances et la maniÚre de les résoudre. |
--list-diagnostics (since glibc 2.33)
Print system diagnostic information in a machine-readable format, such as some internal loader variables, the auxiliary vector (see getauxval (3)), and the environment variables. On some architectures, the command might print additional information (like the cpu features used in GNU indirect function selection on x86). --list-tunables (since glibc 2.33) Print the names and values of all tunables, along with the minimum and maximum allowed values.
--preload liste (depuis la glibc 2.30)
PrĂ©charger les objets indiquĂ©s dans liste . Ces objets sont dĂ©limitĂ©s par des deux-points ou des espaces. Les objets sont prĂ©chargĂ©s comme câest expliquĂ© dans la description de la variable dâenvironnement LD_PRELOAD ci-dessous.
Au contraire avec LD_PRELOAD , lâoption --preload fournit une façon de rĂ©aliser le prĂ©chargement pour un exĂ©cutable unique sans affecter le prĂ©chargement rĂ©alisĂ© par un processus enfant qui exĂ©cute un nouveau programme.
--verify
VĂ©rifier que le programme est liĂ© dynamiquement et que lâĂ©diteur de liens peut le traiter.
ENVIRONNEMENT
Diverses variables dâenvironnement influencent les opĂ©rations de lâĂ©diteur de liens dynamiques.
Mode dâexĂ©cution sĂ©curisĂ©e
For security reasons, if the dynamic linker determines that a binary should be run in secure-execution mode, the effects of some environment variables are voided or modified, and furthermore those environment variables are stripped from the environment, so that the program does not even see the definitions. Some of these environment variables affect the operation of the dynamic linker itself, and are described below. Other environment variables treated in this way include: GCONV_PATH , GETCONF_DIR , HOSTALIASES , LOCALDOMAIN , LD_AUDIT , LD_DEBUG , LD_DEBUG_OUTPUT , LD_DYNAMIC_WEAK , LD_HWCAP_MASK , LD_LIBRARY_PATH , LD_ORIGIN_PATH , LD_PRELOAD , LD_PROFILE , LD_SHOW_AUXV , LOCALDOMAIN , LOCPATH , MALLOC_TRACE , NIS_PATH , NLSPATH , RESOLV_HOST_CONF , RES_OPTIONS , TMPDIR , and TZDIR .
Un binaire est exĂ©cutĂ© dans le mode dâexĂ©cution sĂ©curisĂ©e si lâentrĂ©e AT_SECURE dans le vecteur auxiliaire (consulter getauxval (3)) Ă une valeur diffĂ©rente de zĂ©ro. Cette entrĂ©e peut avoir une valeur diffĂ©rente de zĂ©ro pour diffĂ©rentes raisons, dont :
|
- |
Les ID utilisateur rĂ©els et effectifs du processus diffĂšrent ou les ID de groupe rĂ©els et effectifs diffĂšrent. Cela se produit classiquement lors de lâexĂ©cution dâun programme set-user-ID ou set-group-ID ; |
||
|
- |
Un processus avec un ID utilisateur non superutilisateur a exécuté un binaire qui conférait des capacités au processus ; |
||
|
- |
Une valeur différente de zéro pouvait avoir été réglée par un module de sécurité de Linux. |
Variables dâenvironnement
Parmi les
variables dâenvironnement importantes, on
trouve :
LD_ASSUME_KERNEL
(from glibc 2.2.3 to glibc 2.36)
Each shared object can inform the dynamic linker of the minimum kernel ABI version that it requires. (This requirement is encoded in an ELF note section that is viewable via readelf -n as a section labeled NT_GNU_ABI_TAG .) At run time, the dynamic linker determines the ABI version of the running kernel and will reject loading shared objects that specify minimum ABI versions that exceed that ABI version.
LD_ASSUME_KERNEL peut ĂȘtre utilisĂ© afin que lâĂ©diteur de liens dynamiques considĂšre quâil est exĂ©cutĂ© sur un systĂšme disposant dâune version diffĂ©rente de lâABI du noyau. Par exemple, la commande suivante permet de considĂ©rer la version 2.2.5 du noyau Linux lors du chargement des objets partagĂ©s utilisĂ©s par monprogamme :
$ LD_ASSUME_KERNEL=2.2.5 ./monprogamme
Lorsque plusieurs versions dâun mĂȘme objet partagĂ© (dans des rĂ©pertoires diffĂ©rents du chemin de recherche) spĂ©cifient des versions minimales dâABI du noyau diffĂ©rentes, LD_ASSUME_KERNEL permet de sĂ©lectionner la version de lâobjet Ă utiliser (ce qui dĂ©pend de lâordre de recherche des rĂ©pertoires).
Historiquement, LD_ASSUME_KERNEL Ă©tait surtout utilisĂ©e pour sĂ©lectionner lâancienne mise en Ćuvre des threads POSIX par LinuxThreads sur les systĂšmes fournissant LinuxThreads et NPTL (ce dernier Ă©tant gĂ©nĂ©ralement activĂ© par dĂ©faut) ; consulter pthreads (7).
LD_BIND_NOW (depuis la glibc 2.1.1)
Si la chaĂźne est non vide, lâĂ©diteur de liens rĂ©soudra tous les symboles au dĂ©marrage du programme plutĂŽt que repousser la rĂ©solution des noms de fonctions au moment oĂč elles sont rĂ©fĂ©rencĂ©es en premier. Cela est utile dans un dĂ©bogueur.
LD_LIBRARY_PATH
Une liste de rĂ©pertoires dans lesquels chercher les bibliothĂšques ELF au moment de lâexĂ©cution. Les Ă©lĂ©ments de la liste sont sĂ©parĂ©s par des deux-points ou des points-virgules et il nâexiste aussi aucune protection des sĂ©parateurs. Un nom de rĂ©pertoire de longueur nulle indique le rĂ©pertoire de travail en cours.
Cette variable est ignorĂ©e dans le mode dâexĂ©cution sĂ©curisĂ©e.
Ă lâintĂ©rieur des noms de chemin indiquĂ©s dans LD_LIBRARY_PATH , lâĂ©diteur de liens dynamiques dĂ©veloppe les mots-clĂ©s $ORIGIN , $LIB et $PLATFORM (ou les versions utilisant des accolades autour des noms) comme cela est dĂ©crit ci-dessus dans Mots-clĂ©s de chaine dynamiques . Par consĂ©quent, par exemple, ce qui suit provoquera la recherche dâune bibliothĂšque dans les sous-rĂ©pertoires lib ou lib64 en dessous du rĂ©pertoire contenant le programme Ă exĂ©cuter :
$ LD_LIBRARY_PATH='$ORIGIN/$LIB' prog
Remarquez lâutilisation de guillemets simples empĂȘchant le dĂ©veloppement de $ORIGIN et $LIB en tant que variables dâinterprĂ©teur.
LD_PRELOAD
Une liste complĂ©mentaire, spĂ©cifiĂ©e par lâutilisateur, dâobjets partagĂ©s ELF Ă charger avant tous les autres objets. Cela permet de surcharger sĂ©lectivement les fonctions dans les autres objets partagĂ©s.
Les Ă©lĂ©ments de la liste peuvent ĂȘtre sĂ©parĂ©s par des deux-points ou des espaces et il nâexiste aussi aucune protection des sĂ©parateurs. Les objets sont recherchĂ©s en utilisant les rĂšgles prĂ©cisĂ©es dans DESCRIPTION et sont ajoutĂ©s dans le mappage de liens dans lâordre de droite Ă gauche indiquĂ© dans la liste.
Dans le mode dâexĂ©cution sĂ©curisĂ©e, le prĂ©chargement de noms de chemin contenant des barres obliques est ignorĂ©. Par ailleurs, les objets partagĂ©s sont prĂ©chargĂ©s seulement Ă partir des rĂ©pertoires de recherche standard et seulement si le bit de mode set-user-ID est activĂ© (ce qui nâest pas habituel).
Ă lâintĂ©rieur des noms indiquĂ©s dans LD_PRELOAD , lâĂ©diteur de liens dynamiques dĂ©veloppe les mots-clĂ©s $ORIGIN , $LIB et $PLATFORM (ou les versions utilisant des accolades autour des noms) comme cela est dĂ©crit ci-dessus dans Mots-clĂ©s de chaine dynamiques . (Voir aussi le point sur la mise entre parenthĂšses dans la description de LD_LIBRARY_PATH .)
Il existe diverses mĂ©thodes pour prĂ©ciser les bibliothĂšques Ă prĂ©charger, et celles-ci sont gĂ©rĂ©es dans lâordre suivant :
|
(1) |
La variable dâenvironnement LD_PRELOAD . |
||
|
(2) |
Lâoption --preload de ligne de commande lors de lâinvocation directe de lâĂ©diteur de liens dynamiques. |
||
|
(3) |
Le fichier /etc/ld.so.preload (décrit ci-dessous). |
LD_TRACE_LOADED_OBJECTS
Si la chaĂźne est non vide, le programme liste ses dĂ©pendances dynamiques comme sâil Ă©tait lancĂ© par ldd (1), au lieu du lancement normal.
Il existe de
nombreuses autres variables plus ou moins obscures,
certaines obsolÚtes ou réservées pour
un usage interne.
LD_AUDIT
(depuis la glibc 2.4)
Une liste dâobjets partagĂ©s ELF spĂ©cifiĂ©s par lâutilisateur Ă charger avant tous les autres Ă lâintĂ©rieur dâun espace distinct de nommage de lâĂ©diteur de liens (câest-Ă -dire quâil nây aura pas dâinterfĂ©rence avec les liaisons sur les symboles normaux qui auront lieu pendant le processus). Ces objets peuvent ĂȘtre utilisĂ©s pour contrĂŽler les opĂ©rations effectuĂ©es par lâĂ©diteur de liens dynamiques. Les Ă©lĂ©ments de la liste sont sĂ©parĂ©s par des deux-points et il nâexiste aucune protection des sĂ©parateurs.
LD_AUDIT est ignorĂ©e dans le mode dâexĂ©cution sĂ©curisĂ©e.
The dynamic linker will notify the audit shared objects at so-called auditing checkpointsâfor example, loading a new shared object, resolving a symbol, or calling a symbol from another shared objectâby calling an appropriate function within the audit shared object. For details, see rtld-audit (7). The auditing interface is largely compatible with that provided on Solaris, as described in its Linker and Libraries Guide , in the chapter Runtime Linker Auditing Interface .
Ă lâintĂ©rieur des noms indiquĂ©s dans LD_AUDIT , lâĂ©diteur de liens dynamiques dĂ©veloppe les mots-clĂ©s $ORIGIN , $LIB et $PLATFORM (ou les versions utilisant des accolades autour des noms) comme cela est dĂ©crit ci-dessus dans Mots-clĂ©s de chaine dynamiques . (Voir aussi le point sur la mise entre parenthĂšses dans la description de LD_LIBRARY_PATH .)
Depuis la glibc 2.13, dans le mode dâexĂ©cution sĂ©curisĂ©e, les noms dans la liste de contrĂŽle contenant des barres obliques sont ignorĂ©s et seulement les objets partagĂ©s des rĂ©pertoires de recherche standard ayant le bit de mode set-user-ID activĂ© sont chargĂ©s.
LD_BIND_NOT (depuis la glibc 2.1.95)
Si cette variable dâenvironnement est rĂ©glĂ©e Ă une valeur non vide, ne pas mettre Ă jour les tables GOT (global offset table) et PLT (procedure linkage table) aprĂšs la rĂ©solution dâun symbole de fonction. En combinant lâutilisation de cette variable avec LD_DEBUG (avec les catĂ©gories bindings et symbols ), les liaisons de fonctions dâexĂ©cution peuvent ĂȘtre observĂ©es.
LD_DEBUG (depuis la glibc 2.1)
Produire une information dĂ©taillĂ©e de dĂ©bogage dans lâĂ©diteur de liens dynamiques. Le contenu de cette variable est composĂ©e dâune ou de plusieurs des catĂ©gories suivantes, sĂ©parĂ©es par des deux-points, des virgules ou (si la valeur est entre guillemets) par des espaces :
|
help |
Indiquer help dans la valeur de cette variable fait que le programme nâest pas exĂ©cutĂ© et quâun message est affichĂ© sur les catĂ©gories pouvant ĂȘtre indiquĂ©es dans cette variable dâenvironnement. |
||
|
all |
Afficher toutes les informations de débogage (exceptées statistics et unused ; consulter ci-dessous). |
||
|
bindings |
Afficher des informations sur la définition à laquelle chaque symbole est lié. |
||
|
files |
Afficher lâavancement pour le fichier dâentrĂ©e. |
||
|
libs |
Afficher les chemins de recherche de bibliothĂšque. |
||
|
reloc |
Afficher le traitement de relocalisation |
||
|
scopes |
Afficher des informations de portée. |
||
|
statistics |
Afficher des statistiques de relocalisation. |
||
|
symbols |
Afficher les chemins de recherche pour chaque consultation de symbole. |
||
|
unused |
Identifier les objets partagés dynamiques non utilisés. |
||
|
versions |
Afficher les dépendances de version. |
Depuis la glibc 2.3.4, LD_DEBUG est ignorĂ©e dans le mode dâexĂ©cution sĂ©curisĂ©e Ă moins que le fichier /etc/suid-debug existe (le contenu du fichier est non pertinent).
LD_DEBUG_OUTPUT (depuis la glibc 2.1)
Par dĂ©faut, la sortie de LD_DEBUG est Ă©crite sur la sortie dâerreur standard. Si LD_DEBUG_OUTPUT est dĂ©finie, alors la sortie est Ă©crite selon le chemin dĂ©fini dans sa valeur avec le suffixe « . » (point) suivi par lâID du processus ajoutĂ© au chemin.
LD_DEBUG_OUTPUT est ignorĂ©e dans le mode dâexĂ©cution sĂ©curisĂ©e.
LD_DYNAMIC_WEAK (depuis la glibc 2.1.91)
Par dĂ©faut, lors de la recherche de bibliothĂšques partagĂ©es pour rĂ©soudre une rĂ©fĂ©rence de symbole, lâĂ©diteur de liens dynamiques rĂ©soudra la premiĂšre dĂ©finition quâil trouvera.
Old glibc versions (before glibc 2.2), provided a different behavior: if the linker found a symbol that was weak, it would remember that symbol and keep searching in the remaining shared libraries. If it subsequently found a strong definition of the same symbol, then it would instead use that definition. (If no further symbol was found, then the dynamic linker would use the weak symbol that it initially found.)
Lâancien comportement de la glibc nâĂ©tait pas normalisĂ©. (La pratique normalisĂ©e consiste Ă ce que la distinction entre les symboles faibles et forts intervient seulement au moment de la liaison statique.) Dans la glibc 2.2, lâĂ©diteur de liens dynamiques a Ă©tĂ© modifiĂ© pour fournir le comportement actuel (qui Ă©tait le comportement fourni par la plupart des autres implĂ©mentations Ă ce moment lĂ ).
DĂ©finir la variable dâenvironnement LD_DYNAMIC_WEAK (Ă nâimporte quelle valeur) conduit Ă lâancien comportement de la glibc non normalisĂ©, selon lequel un symbole faible dans une bibliothĂšque partagĂ©e peut ĂȘtre Ă©crasĂ© par un symbole fort trouvĂ© ultĂ©rieurement dans une autre bibliothĂšque partagĂ©e. Remarquez que mĂȘme si cette variable est dĂ©finie, un symbole fort dans une bibliothĂšque partagĂ©e nâĂ©crasera pas une dĂ©finition faible du mĂȘme symbole dans le programme principal.)
Depuis la glibc 2.3.4, LD_DYNAMIC_WEAK est ignorĂ©e dans le mode dâexĂ©cution sĂ©curisĂ©e.
LD_HWCAP_MASK (from glibc 2.1 to glibc 2.38)
Mask for hardware capabilities. Since glibc 2.26, the option might be ignored if glibc does not support tunables.
LD_ORIGIN_PATH (depuis la glibc 2.1)
Chemin oĂč le binaire est trouvĂ©.
Depuis la glibc 2.4, LD_ORIGIN_PATH est ignorĂ©e dans le mode dâexĂ©cution sĂ©curisĂ©e.
LD_POINTER_GUARD (from glibc 2.4 to glibc 2.22)
Mettre Ă zĂ©ro pour supprimer la protection sur les pointeurs. Toute autre valeur active cette protection, ce qui est le comportement par dĂ©faut. La protection sur les pointeurs est un mĂ©canisme de sĂ©curitĂ© oĂč certains pointeurs vers du code stockĂ© dans la zone mĂ©moire accessible en Ă©criture (comme les adresses de retour conservĂ©es par setjmp (3), ou des pointeurs de fonctions utilisĂ©s par diverses fonctions internes de glibc) sont modifiĂ©s semi-alĂ©atoirement pour rendre plus difficile une utilisation malveillante par un intrus, qui utiliserait par exemple un dĂ©passement de tampon ou de la pile. Depuis la glibc 2.23, LD_POINTER_GUARD ne peut plus ĂȘtre utilisĂ©e pour dĂ©sactiver cette protection, qui est toujours activĂ©e.
LD_PROFILE (depuis la glibc 2.1)
The name of a (single) shared object to be profiled, specified either as a pathname or a soname. Profiling output is appended to the file whose name is: $LD_PROFILE_OUTPUT / $LD_PROFILE .profile .
Since glibc 2.2.5, LD_PROFILE uses a different default path in secure-execution mode.
LD_PROFILE_OUTPUT (depuis la glibc 2.1)
RĂ©pertoire oĂč sera Ă©crit le rĂ©sultat de LD_PROFILE . Si cette variable nâest pas dĂ©finie, ou si elle est dĂ©finie Ă une valeur vide, le dĂ©faut est /var/tmp .
LD_PROFILE_OUTPUT is ignored in secure-execution mode; instead /var/profile is always used.
LD_SHOW_AUXV (depuis la glibc 2.1)
Si cette variable dâenvironnement est dĂ©finie (Ă nâimporte quelle valeur), afficher le tableau auxiliaire transmis Ă partir du noyau (consulter aussi getauxval (3)).
Depuis la glibc 2.3.4, LD_SHOW_AUXV est ignorĂ©e dans le mode dâexĂ©cution sĂ©curisĂ©e.
LD_TRACE_PRELINKING (from glibc 2.4 to glibc 2.35)
Si cette variable dâenvironnement est dĂ©finie, tracer la prĂ©-liaison de lâobjet dont le nom est assignĂ© Ă cette variable dâenvironnement. (Utiliser ldd (1) pour obtenir une liste des objets pouvant ĂȘtre tracĂ©s.) Si le nom dâobjet nâest pas reconnu, alors lâactivitĂ© de prĂ©-liaison est tracĂ©e.
LD_USE_LOAD_BIAS (from glibc 2.3.3 to glibc 2.35)
Par dĂ©faut, câest-Ă -dire si cette variable nâest pas dĂ©finie, les exĂ©cutables et les objets partagĂ©s prĂ©-liĂ©s ( prelink ) respectent les adresses de base des objets partagĂ©s dont ils dĂ©pendent, alors que les exĂ©cutables PIE ( position-independent executables ) non prĂ©-liĂ©s et les autres objets partagĂ©s ne les respectent pas. Si LD_USE_LOAD_BIAS est dĂ©finie Ă la valeur 1 , les exĂ©cutables et les PIE vont respecter les adresses de base. Si LD_USE_LOAD_BIAS est dĂ©finie Ă 0 , ni les exĂ©cutables, ni les PIE ne respecteront les adresses de base.
Depuis la glibc 2.3.3, cette variable est ignorĂ©e dans le mode dâexĂ©cution sĂ©curisĂ©e.
LD_VERBOSE (depuis la glibc 2.1)
Sâil sâagit dâune chaĂźne non vide, afficher les informations sur la version des symboles du programme si la variable dâenvironnement LD_TRACE_LOADED_OBJECTS a Ă©tĂ© dĂ©finie.
LD_WARN (depuis la glibc 2.1.3)
Si la chaĂźne est non vide, avertir si un symbole nâest pas rĂ©solu.
LD_PREFER_MAP_32BIT_EXEC (x86-64 seulement ; depuis la glibc 2.23)
Selon le guide dâoptimisation logicielle de Silvermont dâIntel, pour les applications 64 bits, les performances de prĂ©diction de branchement peuvent ĂȘtre dĂ©tĂ©riorĂ©es quand la cible dâun branchement est situĂ©e Ă plus de 4 GB du branchement. Si cette variable dâenvironnement est dĂ©finie (Ă nâimporte quelle valeur), lâĂ©diteur de liens dynamiques essaie de mapper les pages dâexĂ©cutables en utilisant lâindicateur MAP_32BIT de mmap (2) et de revenir Ă un mappage sans cet indicateur si cet essai Ă©choue. NB : MAP_32BIT mappera avec les 2 GB bas (pas 4 GB) de lâespace dâadressage.
Parce que MAP_32BIT rĂ©duit lâĂ©ventail dâadressage pour la distribution alĂ©atoire de lâespace dâadressage (ASLR), LD_PREFER_MAP_32BIT_EXEC est toujours dĂ©sactivĂ©e dans le mode dâexĂ©cution sĂ©curisĂ©e.
FICHIERS
/lib/ld.so
Le chargeur et éditeur de liens dynamiques a.out.
/lib/ld-linux.so. { 1 , 2 }
Le chargeur et éditeur de liens dynamiques ELF.
/etc/ld.so.cache
Fichier contenant la liste compilĂ©e des rĂ©pertoires dans lesquels rechercher les objets partagĂ©s et une liste dâobjets partagĂ©s candidats. Consulter ldconfig (8).
/etc/ld.so.preload
Fichier contenant une liste dâobjets partagĂ©s ELF, sĂ©parĂ©s par des virgules, Ă charger avant le programme. Consultez le point Ă propos de LD_PRELOAD ci-dessus. Si LD_PRELOAD et /etc/ld.so.preload sont employĂ©s, la bibliothĂšque indiquĂ©e par LD_PRELOAD est prĂ©chargĂ©e en premier. /etc/ld.so.preload a un effet sur tout le systĂšme, faisant que les bibliothĂšques indiquĂ©es sont prĂ©chargĂ©es pour tous les programmes exĂ©cutĂ©s sur le systĂšme. (Cela est habituellement indĂ©sirable et employĂ© uniquement comme remĂšde dâurgence, par exemple, comme contournement temporaire dâun problĂšme de mauvaise configuration de bibliothĂšque.)
lib*.so*
Objets partagés.
NOTES
Legacy Hardware capabilities (from glibc 2.5 to glibc 2.37)
Certains objets partagĂ©s sont compilĂ©s en utilisant des instructions spĂ©cifiques au matĂ©riel qui nâexistent pas sur tous les processeurs. Ces objets devraient ĂȘtre installĂ©s dans des rĂ©pertoires dont les noms dĂ©finissent les capacitĂ©s matĂ©rielles nĂ©cessaires, comme /usr/lib/sse2/ . LâĂ©diteur de liens dynamiques compare ces rĂ©pertoires au matĂ©riel de la machine et sĂ©lectionne la version la mieux adaptĂ©e pour un objet partagĂ© donnĂ©. Les rĂ©pertoires de capacitĂ© matĂ©rielle peuvent ĂȘtre imbriquĂ©s pour combiner les caractĂ©ristiques du microprocesseur. La liste des noms de capacitĂ© matĂ©rielle pris en charge dĂ©pend du microprocesseur. Les noms suivants sont reconnus pour le moment.
|
Alpha |
ev4, ev5, ev56, ev6, ev67 |
|||
|
MIPS |
loongson2e, loongson2f, octeon, octeon2 |
PowerPC
4xxmac, altivec, arch_2_05, arch_2_06, booke, cellbe, dfp, efpdouble, efpsingle, fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+, power6x, ppc32, ppc601, ppc64, smt, spe, ucache, vsx
|
SPARC |
flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2 |
||
|
s390 |
dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle, z900, z990, z9-109, z10, zarch |
x86 (32Â bits seulement)
acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca, mmx, mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm
The legacy hardware capabilities support has the drawback that each new feature added grows the search path exponentially, because it has to be added to every combination of the other existing features.
For instance, on x86 32-bit, if the hardware supports i686 and sse2 , the resulting search path will be i686/sse2:i686:sse2:. . A new capability newcap will set the search path to newcap/i686/sse2:newcap/i686:newcap/sse2:newcap:i686/sse2:i686:sse2: .
glibc Hardware capabilities (from glibc 2.33)
glibc 2.33 added a new hardware capability scheme,
where under each CPU architecture, certain levels can be defined, grouping support for certain features or special instructions. Each architecture level has a fixed set of paths that it adds to the dynamic linker search list, depending on the hardware of the machine. Since each new architecture level is not combined with previously existing ones, the new scheme does not have the drawback of growing the dynamic linker search list uncontrollably.
For instance, on
x86 64-bit, if the hardware supports
x86_64-v3
(for
instance Intel Haswell or AMD Excavator), the resulting
search path will be
glibc-hwcaps/x86-64-v3:glibc-hwcaps/x86-64-v2:.
The
following paths are currently supported, in priority order.
PowerPC (64-bit little-endian only)
power10, power9
s390 (64-bit only)
z16, z15, z14, z13
x86 (64-bit only)
x86-64-v4, x86-64-v3, x86-64-v2
glibc 2.37 removed support for the legacy hardware capabilities.
VOIR AUSSI
ld (1), ldd (1), pldd (1), sprof (1), dlopen (3), getauxval (3), elf (5), capabilities (7), rtld-audit (7), ldconfig (8), sln (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 Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
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 .