Aller au contenu

ABI : Application Binary Interface

Infrastructure

ABI : Application Binary Interface. « Interface binaire d'application », par analogie avec le format d'une prise électrique : peu importe qui a fabriqué l'appareil, les broches doivent entrer.

Contenu : Conventions d'appel (registres et pile), taille et alignement des types, format des fichiers exécutables, numéros des appels système, décoration des noms de symboles : tout ce qui doit concorder entre deux morceaux de code déjà compilés.

API ou ABI : L'API est un contrat lu par le compilateur, l'ABI un contrat vérifié par personne jusqu'à l'exécution. Réordonner les champs d'une structure laisse l'API intacte et casse l'ABI, avec la discrétion d'un plantage aléatoire.

Stabilité sous Linux : Le noyau promet solennellement de ne jamais casser l'espace utilisateur, et se réserve avec la même solennité le droit de tout changer pour ses pilotes internes : une morale à deux vitesses, tenue avec une constance admirable.

Ce qui arrive si on s'en passe

Recompiler une bibliothèque en réordonnant les champs d'une structure, sans se soucier de l'ABI, laisse le compilateur parfaitement serein et les programmes déjà compilés parfaitement perdus : ils lisent un champ à la place d'un autre, appellent la mauvaise fonction ou passent les arguments dans les mauvais registres. Rien ne l'annonce à la compilation ; tout se révèle à l'exécution, sous forme de plantages aléatoires ou, pire, de calculs faux qui ne plantent pas. Une longueur lue au mauvais endroit peut alors devenir une lecture hors limites, et le bogue de compatibilité se découvre une vocation de faille. L'ABI est un contrat que personne ne relit, sauf le processeur, qui l'applique sans pitié.

Explication de la marmotte

Un programme prêt à l'emploi n'est plus du texte lisible : c'est une suite d'instructions pour le processeur. Pour que ce programme puisse utiliser des morceaux fournis par d'autres, comme les outils du système, il faut que tout le monde range les informations exactement de la même façon, au même endroit, dans le même ordre. Ces règles communes, invisibles pour l'utilisateur, font qu'un logiciel installé il y a des années continue de fonctionner après une mise à jour du système.

Où ce terme est utilisé

← Tout le glossaire