Man page - rtld-audit(7)
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 ruManual
RTLD-AUDIT
NOMSYNOPSIS
DESCRIPTION
la_version()
la_objsearch()
la_activity()
la_objopen()
la_objclose()
la_preinit()
la_symbind*()
la_pltenter()
la_pltexit()
VERSIONS
STANDARDS
NOTES
BOGUES
EXEMPLES
VOIR AUSSI
TRADUCTION
NOM
rtld-audit - API dâaudit pour lâĂ©diteur de liens dynamique
SYNOPSIS
#define
_GNU_SOURCE
/* See feature_test_macros(7) */
#include <link.h>
DESCRIPTION
LâĂ©diteur de liens dynamique GNU (lâĂ©diteur de liens Ă lâexĂ©cution) fournit une API dâaudit qui permet Ă une application dâĂȘtre notifiĂ©e quand diffĂ©rents Ă©vĂ©nements liĂ©s Ă lâĂ©dition de liens surviennent. Cette API est trĂšs similaire Ă lâinterface dâaudit fournie par lâĂ©diteur de liens Solaris. Les constantes et prototypes nĂ©cessaires sont dĂ©finis en incluant <link.h> .
Pour utiliser cette interface, le programmeur crĂ©e une bibliothĂšque partagĂ©e qui implĂ©mente un ensemble standard de noms de fonctions. Toutes les fonctions nâont pas Ă ĂȘtre implĂ©mentĂ©es : dans la plupart des cas, si le programmeur nâest pas intĂ©ressĂ© dans une certaine classe dâĂ©vĂ©nements dâaudit, alors aucune implĂ©mentation nâa Ă ĂȘtre fournie pour la fonction dâaudit correspondante.
Pour utiliser lâinterface dâaudit, la variable dâenvironnement LD_AUDIT doit ĂȘtre dĂ©finie avec une liste de bibliothĂšques partagĂ©es, sĂ©parĂ©es par des « deux-points », qui peuvent implĂ©menter lâAPI (ou une partie) dâaudit. Quand un Ă©vĂ©nement pouvant ĂȘtre surveillĂ© survient, la fonction correspondante est appelĂ©e dans chaque bibliothĂšque, dans lâordre oĂč sont listĂ©es les bibliothĂšques.
la_version()
unsigned int la_version(unsigned int version );
This is the only function that must be defined by an auditing library: it performs the initial handshake between the dynamic linker and the auditing library. When invoking this function, the dynamic linker passes, in version , the highest version of the auditing interface that the linker supports.
A typical implementation of this function simply returns the constant LAV_CURRENT , which indicates the version of <link.h> that was used to build the audit module. If the dynamic linker does not support this version of the audit interface, it will refuse to activate this audit module. If the function returns zero, the dynamic linker also does not activate this audit module.
In order to enable backwards compatibility with older dynamic linkers, an audit module can examine the version argument and return an earlier version than LAV_CURRENT , assuming the module can adjust its implementation to match the requirements of the previous version of the audit interface. The la_version function should not return the value of version without further checks because it could correspond to an interface that does not match the <link.h> definitions used to build the audit module.
la_objsearch()
char
*la_objsearch(const char *
name
, uintptr_t
*
cookie
,
unsigned int
flag
);
LâĂ©diteur de liens appelle cette fonction pour informer la bibliothĂšque dâaudit quâil va se mettre Ă la recherche dâun objet partagĂ©. Le paramĂštre name est le nom de fichier ou le chemin dans lequel sâeffectue la recherche. cookie identifie lâobjet partagĂ© qui a dĂ©clenchĂ© la recherche. flag est lâune des valeurs suivantes :
|
LA_SER_ORIG |
Il sâagit du nom de dĂ©part de la recherche. GĂ©nĂ©ralement ce nom provient dâune entrĂ©e ELF DT_NEEDED ou est le paramĂštre filename fourni Ă dlopen (3). |
||
|
LA_SER_LIBPATH |
name a été créé en utilisant un répertoire indiqué dans LD_LIBRARY_PATH . |
||
|
LA_SER_RUNPATH |
name a été créé en utilisant un répertoire indiqué dans une liste ELF DT_RPATH ou DT_RUNPATH . |
||
|
LA_SER_CONFIG |
name a été trouvé par le cache ldconfig (8) ( /etc/ld.so.cache ). |
||
|
LA_SER_DEFAULT |
name a été trouvé par une recherche dans un des répertoires par défaut. |
||
|
LA_SER_SECURE |
name est spécifique à un objet sûr (pas utilisé sous Linux). |
la_objsearch () renvoie comme valeur de retour le chemin que lâĂ©diteur de liens devrait utiliser pour les opĂ©rations suivantes. Si NULL est renvoyĂ©, alors le chemin est ignorĂ© par la suite. Les bibliothĂšques qui ne cherche quâĂ observer les chemins de recherche devraient renvoyer name .
la_activity()
void la_activity( uintptr_t * cookie , unsigned int flag );
LâĂ©diteur de liens appelle cette fonction pour informer la bibliothĂšque dâaudit dâactivitĂ©s sur la table des liens. cookie identifie lâobjet Ă la tĂȘte de la table. Quand lâĂ©diteur de liens appelle cette fonction, flag vaut lâune des valeurs suivantes :
|
LA_ACT_ADD |
De nouveaux objets sont ajoutés à la table. |
||
|
LA_ACT_DELETE |
Des objets sont retirés d ela table. |
||
|
LA_ACT_CONSISTENT |
LâactivitĂ© sur la table est terminĂ©e : la table est de nouveau cohĂ©rente. |
la_objopen()
unsigned int
la_objopen(struct link_map *
map
, Lmid_t
lmid
,
uintptr_t *
cookie
);
LâĂ©diteur de liens appelle cette fonction quand un nouvel objet partagĂ© est chargĂ©. Le paramĂštre map est un pointeur vers la structure dâune table de liens qui dĂ©crit lâobjet. Le champ lmid prend une des valeurs suivantes :
|
LM_ID_BASE |
La table fait partie de lâespace de noms de dĂ©part. |
||
|
LM_ID_NEWLM |
La table fait partie dâun nouvel espace de noms demandĂ© avec dlmopen (3). |
cookie est un pointeur vers un identifiant pour un objet. Lâidentifiant est fourni aux appels suivants des fonctions de la bibliothĂšque dâaudit afin dâidentifier lâobjet. Lâidentifiant est initialisĂ© pour pointer vers la table de lâobjet, mais la bibliothĂšque dâaudit peut changer lâidentifiant pour une autre valeur quâelle prĂ©fĂ©rerait utiliser pour identifier lâobjet.
la_objopen () renvoie comme valeur de retour un masque de bits créé en combinant zĂ©ro ou plusieurs constantes avec un OU binaire, ce qui permet Ă la bibliothĂšque dâaudit de sĂ©lectionner les objets Ă surveiller avec les fonctions la_symbind* () :
|
LA_FLG_BINDTO |
Surveiller les associations de symboles Ă cet objet. |
||
|
LA_FLG_BINDFROM |
Surveiller les associations de symboles provenant de cet objet. |
Une valeur de retour de 0 pour la_objopen () indique quâaucune association de symbole nâest Ă surveiller pour cet objet.
la_objclose()
unsigned int la_objclose(uintptr_t * cookie );
LâĂ©diteur de liens appelle cette fonction aprĂšs lâexĂ©cution du code de finalisation pour lâobjet (sâil y en a), et avant que lâobjet soit dĂ©chargĂ©. Le paramĂštre cookie est lâidentifiant obtenu par lâappel prĂ©cĂ©dent Ă la_objopen ().
Dans lâimplĂ©mentation actuelle, la valeur renvoyĂ©e par la_objclose () est ignorĂ©e.
la_preinit()
void la_preinit(uintptr_t * cookie );
LâĂ©diteur de liens appelle cette fonction aprĂšs que tous les objets partagĂ©s ont Ă©tĂ© chargĂ©s, avant que le contrĂŽle soit donnĂ© Ă lâapplication (câest-Ă -dire avant lâappel Ă main ()). Notez que main () peut encore charger des objets dynamiquement en utilisant dlopen (3).
la_symbind*()
uintptr_t
la_symbind32(Elf32_Sym *
sym
, unsigned int
ndx
,
uintptr_t *
refcook
, uintptr_t
*
defcook
,
unsigned int *
flags
, const char
*
symname
);
uintptr_t la_symbind64(Elf64_Sym *
sym
,
unsigned int
ndx
,
uintptr_t *
refcook
, uintptr_t
*
defcook
,
unsigned int *
flags
, const char
*
symname
);
LâĂ©diteur de liens appelle une de ces fonctions quand une association de symbole survient entre deux objets partagĂ©s qui ont Ă©tĂ© marquĂ©s comme Ă©tant surveillĂ©s par la_objopen (). La fonction la_symbind32 () est utilisĂ©e pour les plate-formes 32 bits ; la fonction la_symbind64 () est utilisĂ©e pour les plate-formes 64 bits.
Le paramĂštre sym est un pointeur vers une structure qui fournit des informations sur le symbole en cours dâassociation. La dĂ©finition de la structure se trouve dans <elf.h> . Parmi les champs de la structure, st_value indique lâadresse Ă laquelle le symbole est associĂ©.
Le paramĂštre ndx fournit lâindex du symbole dans la table des symboles de lâobjet partagĂ© associĂ©.
Le paramĂštre refcook identifie lâobjet partagĂ© qui crĂ©e la rĂ©fĂ©rence du symbole ; il sâagit du mĂȘme identifiant fourni Ă la fonction la_objopen () qui a renvoyĂ© LA_FLG_BINDFROM . Le paramĂštre defcook identifie lâobjet partagĂ© qui dĂ©fini le symbole rĂ©fĂ©rencé ; il sâagit du mĂȘme identifiant fourni Ă la fonction la_objopen () qui a renvoyĂ© LA_FLG_BINDTO .
Le paramĂštre symname pointe vers une chaĂźne contenant le nom du symbole.
Le paramĂštre flags est un masque de bits qui peut Ă la fois fournir des informations sur le symbole et ĂȘtre utilisĂ© pour modifier encore plus la surveillance de cette entrĂ©e de la PLT (Procedure Linkage Table). LâĂ©diteur de liens dynamique peut fournir les bits suivants dans ce paramĂštre :
|
LA_SYMB_DLSYM |
Lâassociation provient dâun appelle Ă dlsym (3). |
||
|
LA_SYMB_ALTVALUE |
Un appel précédent à la_symbind* () a renvoyé une autre valeur pour ce symbole. |
Par dĂ©faut, si la bibliothĂšque dâaudit implĂ©mente les fonctions la_pltenter () et la_pltexit () (voir ci-dessous), alors ces fonctions sont appelĂ©es, aprĂšs la_symbind (), pour les entrĂ©es de la PLT, Ă chaque fois que le symbole est rĂ©fĂ©rencĂ©. Les drapeaux suivants peuvent ĂȘtre fournis en les combinant avec un OU binaire dans *flags pour modifier ce comportement par dĂ©faut :
|
LA_SYMB_NOPLTENTER |
Ne pas appeler la_pltenter () pour ce symbole. |
|||
|
LA_SYMB_NOPLTEXIT |
Ne pas appeler la_pltexit () pour ce symbole. |
La valeur de retour de la_symbind32 () et la_symbind64 () est lâadresse Ă laquelle le contrĂŽle doit ĂȘtre donnĂ© aprĂšs que la fonction se termine. Si la bibliothĂšque dâaudit ne fait quâobserver les associations de symboles, elle devrait renvoyer sym->st_value . Une valeur diffĂ©rente peut ĂȘtre renvoyĂ©e si la bibliothĂšque souhaite rediriger le contrĂŽle Ă un autre endroit.
la_pltenter()
Le nom et les types des paramÚtres de cette fonction dépendent de la plate-forme matérielle. (la définition appropriée est fournie par <link.h> .) Voici la définition pour la plate-forme x86-32 :
Elf32_Addr
la_i86_gnu_pltenter(Elf32_Sym *
sym
, unsigned
int
ndx
,
uintptr_t *
refcook
, uintptr_t
*
defcook
,
La_i86_regs *
regs
, unsigned int
*
flags
,
const char *
symname
, long
*
framesizep
);
Cette fonction est appelĂ©e juste avant lâappel dâune entrĂ©e de la PLT, entre deux objets partagĂ©s ayant Ă©tĂ© marquĂ©s pour la notification des associations.
Les paramĂštres sym , ndx , refcook , defcook et symname sont comme pour la_symbind* ().
Le paramĂštre regs pointe vers une structure (dĂ©finie dans <link.h> ) qui contient les valeurs des registres Ă utiliser pour lâappel Ă cette entrĂ©e de la PLT.
Le paramĂštre flags pointe vers une masque de bits qui, comme pour la_symbind* (), fournit des informations pour cette entrĂ©e de la PLT et peut ĂȘtre utilisĂ© pour modifier la façon dont elle sera surveillĂ©e ultĂ©rieurement.
The framesizep argument points to a long int buffer that can be used to explicitly set the frame size used for the call to this PLT entry. If different la_pltenter () invocations for this symbol return different values, then the maximum returned value is used. The la_pltexit () function is called only if this buffer is explicitly set to a suitable value.
La valeur de retour de la_pltenter () est comme pour la_symbind* ().
la_pltexit()
Le nom et les types des paramÚtres de cette fonction dépendent de la plate-forme matérielle. (la définition appropriée est fournie par <link.h> .) Voici la définition pour la plate-forme x86-32 :
unsigned int
la_i86_gnu_pltexit(Elf32_Sym *
sym
, unsigned
int
ndx
,
uintptr_t *
refcook
, uintptr_t
*
defcook
,
const La_i86_regs *
inregs
, La_i86_retval
*
outregs
,
const char *
symname
);
Cette fonction est appelĂ©e quand une entrĂ©e de la PLT, créée entre deux objets partagĂ©s ayant Ă©tĂ© marquĂ©s pour la notification des associations, se termine. La fonction est appelĂ©e juste avant que le contrĂŽle soit rendu Ă lâappelant de lâentrĂ©e de la PLT.
Les paramĂštres sym , ndx , refcook , defcook et symname sont comme pour la_symbind* ().
Le paramĂštre inregs pointe vers une structure (dĂ©finie dans <link.h> ) qui contient les valeurs des registres utilisĂ©s pour lâappel Ă cette entrĂ©e de la PLT. Le paramĂštre outregs pointe vers une structure (dĂ©finie dans <link.h> ) qui contient les valeurs de retour de lâappel Ă cette entrĂ©e de la PLT. Ces valeurs peuvent ĂȘtre modifiĂ©es par lâappelant et les modifications seront visibles pour lâappelant de lâentrĂ©e de la PLT.
Dans lâimplĂ©mentation GNU actuelle, la valeur de retour de la_pltexit () est ignorĂ©e.
VERSIONS
This API is very similar to the Solaris API described in the Solaris Linker and Libraries Guide , in the chapter Runtime Linker Auditing Interface .
STANDARDS
None.
NOTES
Notez les diffĂ©rences suivantes avec lâAPI dâaudit de lâĂ©diteur de liens Solaris :
|
- |
Lâinterface Solaris la_objfilter () nâest pas prise en charge par lâimplĂ©mentation GNU. |
||
|
- |
Les fonctions Solaris la_symbind32 () et la_pltexit () ne fournissent pas de paramĂštre symname . |
||
|
- |
La fonction Solaris la_pltexit () ne fournit pas de paramĂštre inregs ou outregs (mais fournit une paramĂštre retval avec la valeur de retour de la fonction). |
BOGUES
Dans les versions de la glibc jusquâĂ la version 2.9 (inclue), fournit plus dâune bibliothĂšque dâaudit dans LD_AUDIT provoquait un crash Ă lâexĂ©cution. Cela a Ă©tĂ© corrigĂ© dans la version 2.10.
EXEMPLES
#include
<link.h>
#include <stdio.h>
unsigned int
la_version(unsigned int version)
{
printf("la_version(): version = %u; LAV_CURRENT =
%u\n",
version, LAV_CURRENT);
return LAV_CURRENT;
}
char *
la_objsearch(const char *name, uintptr_t *cookie, unsigned
int flag)
{
printf("la_objsearch(): name = %s; cookie = %p",
name, cookie);
printf("; flag = %s\n",
(flag == LA_SER_ORIG) ? "LA_SER_ORIG" :
(flag == LA_SER_LIBPATH) ? "LA_SER_LIBPATH" :
(flag == LA_SER_RUNPATH) ? "LA_SER_RUNPATH" :
(flag == LA_SER_DEFAULT) ? "LA_SER_DEFAULT" :
(flag == LA_SER_CONFIG) ? "LA_SER_CONFIG" :
(flag == LA_SER_SECURE) ? "LA_SER_SECURE" :
"???");
return name;
}
void
la_activity (uintptr_t *cookie, unsigned int flag)
{
printf("la_activity(): cookie = %p; flag = %s\n",
cookie,
(flag == LA_ACT_CONSISTENT) ? "LA_ACT_CONSISTENT"
:
(flag == LA_ACT_ADD) ? "LA_ACT_ADD" :
(flag == LA_ACT_DELETE) ? "LA_ACT_DELETE" :
"???");
}
unsigned int
la_objopen(struct link_map *map, Lmid_t lmid, uintptr_t
*cookie)
{
printf("la_objopen(): loading \"%s\"; lmid =
%s; cookie=%p\n",
map->l_name,
(lmid == LM_ID_BASE) ? "LM_ID_BASE" :
(lmid == LM_ID_NEWLM) ? "LM_ID_NEWLM" :
"???",
cookie);
return LA_FLG_BINDTO | LA_FLG_BINDFROM;
}
unsigned int
la_objclose (uintptr_t *cookie)
{
printf("la_objclose(): %p\n", cookie);
return 0;
}
void
la_preinit(uintptr_t *cookie)
{
printf("la_preinit(): %p\n", cookie);
}
uintptr_t
la_symbind32(Elf32_Sym *sym, unsigned int ndx, uintptr_t
*refcook,
uintptr_t *defcook, unsigned int *flags, const char
*symname)
{
printf("la_symbind32(): symname = %s; sym->st_value
= %p\n",
symname, sym->st_value);
printf(" ndx = %u; flags = %#x", ndx, *flags);
printf("; refcook = %p; defcook = %p\n", refcook,
defcook);
return sym->st_value;
}
uintptr_t
la_symbind64(Elf64_Sym *sym, unsigned int ndx, uintptr_t
*refcook,
uintptr_t *defcook, unsigned int *flags, const char
*symname)
{
printf("la_symbind64(): symname = %s; sym->st_value
= %p\n",
symname, sym->st_value);
printf(" ndx = %u; flags = %#x", ndx, *flags);
printf("; refcook = %p; defcook = %p\n", refcook,
defcook);
return sym->st_value;
}
Elf32_Addr
la_i86_gnu_pltenter(Elf32_Sym *sym, unsigned int ndx,
uintptr_t *refcook, uintptr_t *defcook, La_i86_regs *regs,
unsigned int *flags, const char *symname, long *framesizep)
{
printf("la_i86_gnu_pltenter(): %s (%p)\n",
symname, sym->st_value);
return sym->st_value;
}
VOIR AUSSI
ldd (1), dlopen (3), ld.so (8), ldconfig (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> et David Prévot <david@tilapin.org>
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 .