Re: Questions de traduction
> Mais qu'est-ce qu'une interface binaire ? Est-ce la manière dont sont
> représentées, rangées les données et le code dans le binaire ?
> Comment se traduit une compatibilité binaire ? Comment se traduit une
> incompatibilité binaire ? Par une impossibilité d'édition de lien ?
> J'imagine que ça ne concerne que les liaisons dynamiques ?
Exemple en C++, sachant que l'ABI a changé entre g++ 2.95.x et 3.x.
8<------------ toto.cpp ---------------
#include "toto.h"
int Toto::foobar() {
return 0;
}
8<------------ toto.h ---------------
class Toto {
public:
int foobar();
};
8<------------ main.cpp ---------------
#include "toto.h"
int main() {
Toto toto;
toto.foobar();
}
8<--------------------------------------
Compile sans problème en g++-2.95.4.
Compile sans problème en g++-3.0.4.
toto.o avec 2.95.4 et main.o avec 3.0.4. A l'édition des liens avec 2.95.4
:
$ g++ toto.o main.o
main.o: dans la fonction `main':
main.o(.text+0x11): référence indéfinie vers `Toto::foobar()'
main.o(.eh_frame+0x11): référence indéfinie vers `__gxx_personality_v0'
collect2: ld returned 1 exit status
Avec 3.0.4 :
$ g++-3.0 main.o toto.o
main.o: dans la fonction `main':
main.o(.text+0x11): référence indéfinie vers `Toto::foobar()'
collect2: ld returned 1 exit status
Que l'édition des liens se fasse en statique ou en dynamique ne change
rien, l'éditeur des liens ne retrouve pas ses petits car le nommage des
fonctions ('mangling') a changé.
main.o en 3.0.4
$ nm main.o
U _ZN4Toto6foobarEv
U __gxx_personality_v0
00000000 T main
avec demangling
$ nm -C main.o
U Toto::foobar()
U __gxx_personality_v0
00000000 T main
main.o en 2.95.2
$ nm main.o
00000000 ? __FRAME_BEGIN__
U foobar__4Toto
00000000 t gcc2_compiled.
00000000 T main
avec demangling
$ nm -C main.o
00000000 ? __FRAME_BEGIN__
U Toto::foobar(void)
00000000 t gcc2_compiled.
00000000 T main
Bref l'éditeur des liens n'est pas capable de mélanger les binaires ne
respectant pas la même ABI (je ne connais que le problème du
mangling/demangling, mais ce n'est sans doute pas le seul changement de
l'ABI).
--
Benoît Sibaud
--
To UNSUBSCRIBE, email to debian-l10n-french-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Reply to: