OVH Cloud OVH Cloud

Re: 'objet' Unix avec certaines particularités?

2 réponses
Avatar
DINH Viêt Hoà
Jean-Marc Bourguet wrote :

> > Petite question... Si je redéfinit la fonction open(), comment je fais
> > pour appeler la vraie? Le seul truc que je vois, c'est faire un dlopen de
> > libc, puis un dlsym sur open. Y'a pas plus propre? Je veux dire qu'il
> > n'est pas possible de redéfinir 2 fois les mêmes fonctions à coup de
> > LD_PRELOAD?
>
> Sur Solaris au moins, voir man dlsym, chercher RTLD_NEXT.

petite question supplémentaire.

Comment on sait si on tombe sur le bon symbole ?

les bibliothèques sont placées dans quel ordre par RTLD_NEXT ?

--
DINH V. Hoa,

"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed

2 réponses

Avatar
Stephane Chazelas
2003/10/29, 14:53(+01), DINH Viêt Hoà:
[...]
Petite question... Si je redéfinit la fonction open(), comment je fais
pour appeler la vraie? Le seul truc que je vois, c'est faire un dlopen de
libc, puis un dlsym sur open. Y'a pas plus propre? Je veux dire qu'il
n'est pas possible de redéfinir 2 fois les mêmes fonctions à coup de
LD_PRELOAD?




Tu trouveras de l'inspiration dans CheckInstall

http://asic-linux.com.mx/~izto/checkinstall/

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]



Avatar
DINH Viêt Hoà

2003/10/29, 14:53(+01), DINH Viêt Hoà:
[...]
Petite question... Si je redéfinit la fonction open(), comment je fais
pour appeler la vraie? Le seul truc que je vois, c'est faire un dlopen de
libc, puis un dlsym sur open. Y'a pas plus propre? Je veux dire qu'il
n'est pas possible de redéfinir 2 fois les mêmes fonctions à coup de
LD_PRELOAD?




Tu trouveras de l'inspiration dans CheckInstall

http://asic-linux.com.mx/~izto/checkinstall/


je suis moyennement convaincu par l'exemple :

#ifdef BROKEN_RTLD_NEXT
// printf ("RTLD_LAZY");
libc_handle = dlopen(LIBC_VERSION, RTLD_LAZY);
#else
// printf ("RTLD_NEXT");
libc_handle = RTLD_NEXT;
#endif

d'un côté, c'est en dur à coup de dlopen() direct de la libc et de l'aitre
c'est un RTLD_NEXT qui semble encore un peu vague à mes yeux.

--
DINH V. Hoa,

"écrire 'dsl' au lieu de 'désolé', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed