Le monde merveilleux de LD_PRELOAD

Magazine
Marque
Open Silicium
Numéro
4
Mois de parution
octobre 2011
Spécialité(s)


Résumé

Il existe un mécanisme permettant de modifier le comportement d'un processus en modifiant certains appels de fonction qu'il utilise. Je l'ai mis en œuvre pour la première fois il y a quelques années et depuis, je pourrais presque dire qu'il a rendu ma vie d'informaticien plus agréable. ;) Je vous propose donc de le découvrir.


1. Introduction

Vous savez sans doute que la plupart des programmes Linux utilisent des librairies partagées. La commande ldd permet de les lister :

$ ldd /bin/grep

 linux-gate.so.1 => (0x0033f000)

 libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x00d74000)

 libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00110000)

 /lib/ld-linux.so.2 (0x00b8e000)

$ ldd /bin/cat

 linux-gate.so.1 => (0x00b59000)

 libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x0043b000)

 /lib/ld-linux.so.2 (0x00e65000)

$

L'intérêt des librairies partagées apparaît évident dans cet exemple : on a factorisé une grande partie du code binaire commun à ces deux exécutables. Cela permet de réduire la taille disque (et mémoire) nécessaire et de faciliter la maintenance (si on corrige un bug dans la libc, on a juste à mettre à jour cette librairie, pas besoin de recompiler tous les programmes qui l'utilisent).

Quand on lance un...

Cet article est réservé aux abonnés. Il vous reste 97% à découvrir.
S'abonner à Connect
  • Accédez à tous les contenus de Connect en illimité
  • Découvrez des listes de lecture et des contenus Premium
  • Consultez les nouveaux articles en avant-première
Je m'abonne


Article rédigé par

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous