Éditeurs de liens, chargeurs et exécutables

En édition de liens dynamique, quelle description de la liaison différée (lazy binding) utilisant la PLT (table de liaison des procédures) est correcte ?

  1. AL'adresse d'une fonction de bibliothèque partagée est résolue lors de son premier appel, et les appels suivants sautent directement à l'adresse résolue
  2. BLes adresses de toutes les fonctions sont toujours résolues avant le démarrage du programme
  3. CLe fichier de la bibliothèque est relu depuis le disque à chaque appel de fonction
Afficher la réponse et l'explication

Réponse : A. L'adresse d'une fonction de bibliothèque partagée est résolue lors de son premier appel, et les appels suivants sautent directement à l'adresse résolue

Le programme appelle les fonctions externes via de petites entrées de la PLT. En liaison différée, lors du premier appel, l'entrée saute vers la routine de résolution de l'éditeur de liens dynamique, qui recherche la véritable adresse et l'inscrit dans la GOT. Les appels suivants sautent directement à l'adresse de la GOT. Le démarrage est plus rapide, car la résolution des fonctions inutilisées est évitée. Toutefois, pour des raisons de sécurité, la configuration qui résout tout au démarrage et rend la GOT en lecture seule est aussi largement utilisée.

S'entraîner sur ce thème Retour au thème

Autres questions sur Éditeurs de liens, chargeurs et exécutables

  1. Quel est le rôle de l'éditeur de liens dynamique (ld.so, etc.) qui intervient au démarrage d'un programme à liens dynamiques sous Linux ?
  2. Quel est l'objectif de l'ASLR (randomisation de l'agencement de l'espace d'adressage) ?
  3. Quelle est la principale raison de produire un exécutable sous forme de PIE (exécutable indépendant de la position) ?
  4. Que fait le chargeur de l'OS au démarrage d'un programme (execve sous Linux notamment) ?
  5. Quelle affirmation concernant l'adresse où l'OS commence l'exécution d'un programme C (point d'entrée) est correcte ?

Comparatifs sur ce thème