Re: Waas ist ein ABI

Philipp Thomas <[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Am Wed, 18 Feb 2009 09:57:01 +0100 schriebst Du:

>Jetzt habe ich vermutet, dass die ABI Version durch den Compiler vorgegeben 
>wird. Damit meine ich, das jetzt der gcc3.3.5 die ABI Version "3" erzeugt, 
>also das Binaryformat (ELF?) die ABI Version "3" hat.
>
>Das vertausche ich eventuell!?

Nein, hier ist von C++ die Rede und da sehen die Sachen noch etwas andwers
aus. Bei C++ gehören auch solche Dinge wie die Kodierung von Parametern im
Namen der Funktion (das sog. name mangling) zum ABI, eben zum C++ ABI. 

Ausserdem gibt es dann noch Plattformspezifische ABIs wie z.B: das für
x86_64. In solchen ABI werden so Dinge festgelegt wie in welchen Registern
welche Form von Daten übergeben werden, ob überhaupt in Registern oder dem
Stack und so weiter.

>Würde ich den selben Quellcode mit dem gcc 4.2 compilieren, wäre die API 
>meiner Library immer noch gleich. An den Parametern hat sich nichts 
>verändert, trotzdem stimmt aber die ABI Version nicht und muss neu 
>kompilieren...

Ja, wegen des C++ ABIs.

>Mit der ABI habe ich ja erstmal nichts am Hut...

Es gibt halt viele Formen von ABI :) Auf die Schnittstelle Deiner
Bibliothek hast Du noch Einfluss, aber eben nicht z.B. auf das name
mangling des C++ Compilers.

>Will so erstmal nicht in meinen Kopf, aber ich arbeite dran:-)

Habe ich mich jetzt verständlicher ausgedrückt?

Philipp
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.