Re: Re: Was ist ein ABI?

Andre Heine <[email protected]>
Newsgroups gmane.linux.suse.programming
Organization none
Message-ID <[email protected]>
Am Mittwoch, 18. Februar 2009 12:44 schrieb Philipp Thomas:
> Am Wed, 18 Feb 2009 11:23:47 +0100 schriebst Du:
> >Das die Änderung eines Types von int zu long in der Signatur auch die ABI
> >ändert ist neu:-)
>
> Nicht zwansläufig :) Bei C++ fliesst ja der Datentyp direkt in die
> Namensdekoration ein. Mach mal ein 'objdump --demangle -T
> /usr/lib64/libstdc++.so.6', dann bekommst Du (Ausschnitt):

So verstehe ich...

Du hattest das Beispiel mit Art+Parameter gebracht und die Signatur definiert 
ja der Entwickler...
( und somit auch einen Teil der ABI, wie ich jetzt weiss ...)

Daher habe ich den Link gemailt:-()

[...]

> Wie soll das aber die Applikation merken? 
> Wenn ich eine kompilierte 
> Applikation habe und nun eine neue Version der Bibliothek einspiele erwarte
> ich, dass diese Applikation nach wie vor vernünftig funktioniert.
> Das  aber ist (unter anderem) nur garantiert, wenn das ABI nicht verändert
> wurde. 

Ja, das stimmt ja auch. Die andere Applikation merkt es natürlich erst dann, 
wenn sie "Explodiert":-)

Da muss die Version stimmen.

Weshalb ich jetzt _beides_ neu kompilieren würde um ggf. Fehler zu finden...
(Das sollte ja eigentlich der Compiler anzeigen...)

Das ist aber ein anderes Problem, nämlich eins von Oraganisatorischer Natur.

Du hattest in etwa geschrieben (was auch so richtig ist, ich habe es nur in 
den falschen Hals bekommen).

"Also zum Beispiel die Zahl und Art der Parameter ..." (rest entfernt)

Die Art+Parameter werden ja erstmal durch den Entwickler festgelegt (API),
daher meine Verwechslung/Unwissendheit.

Soweit hatte ich aber gar nicht gedacht. Für MICH war in dem Moment klar, dass
Du hier etwas verwechselt hast (was nicht so war/ist, sondern ICH habe es 
verwechelt bzw. hatte hier eine Wissenslücke)...

Fazit:

- Wenn ich meine API ändere, ändere ich auch meine ABI.
- Ich kann die ABI auch ohne API Änderung z.B. durch falschen Compiler
 verändern...
- die Architektur des systems bestimmt einen Teil der ABI (64bit)
- Grundsätzlich sollte man immer alle Teile einer Apllikation PRÜFEN,
  wenn sich API/ABI ändern könnte...


Andre
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.