[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: