Éditeurs de liens, chargeurs et exécutables

Quel est le rôle de la GOT (table globale des déplacements) utilisée dans les bibliothèques partagées ?

  1. AC'est un index des noms de fonctions de la bibliothèque classés par ordre alphabétique
  2. BC'est une table où sont placées temporairement les données qui ne tiennent pas dans le cache
  3. CC'est une table regroupant les adresses réelles des variables et fonctions externes, renseignée à l'exécution par l'éditeur de liens dynamique, et par laquelle le code accède à celles-ci
Afficher la réponse et l'explication

Réponse : C. C'est une table regroupant les adresses réelles des variables et fonctions externes, renseignée à l'exécution par l'éditeur de liens dynamique, et par laquelle le code accède à celles-ci

Le code indépendant de la position ne peut pas inscrire directement dans une instruction l'adresse d'une variable située dans une autre bibliothèque. On prépare donc dans chaque module une table d'adresses (GOT) ; le code lit l'entrée de la GOT par sa distance au PC et utilise l'adresse qu'elle contient. L'éditeur de liens dynamique inscrit les adresses réelles dans la GOT au chargement. Seule la GOT, donnée inscriptible, est modifiée, si bien que les pages de code restent partagées.

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

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

  1. 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 ?
  2. 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 ?
  3. Quel est l'objectif de l'ASLR (randomisation de l'agencement de l'espace d'adressage) ?
  4. Quelle est la principale raison de produire un exécutable sous forme de PIE (exécutable indépendant de la position) ?
  5. Que fait le chargeur de l'OS au démarrage d'un programme (execve sous Linux notamment) ?

Comparatifs sur ce thème