C++ binary compatibility between different versions of gcc

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

 



Hi,

after reading a whole lot of stuff about binary compatibility of gcc and searching the gcc-help archive, too, I am still somewhat confused regarding the C++ binary compatibility between different versions of gcc.

The questions I am trying to answer are these:

1.) My impression is that the whole question of binary compatibility boils down to or is rather a synonym for C++ ABI compatibility (or stability if narrowed down to the question of the binary compatibility of binaries produced by different versions of gcc). Is this correct?

2.) [1] states that starting with GCC 3.2, there is a default C++ ABI (the vendor-neutral C++ ABI) that GCC tries to adhere to. However, there is not a hint of which versions did or did not, or with which versions of GCC an incompatible change of the ABI has happened. [3] indicates then that "It's pretty easy to see when the ABI has changed because we bump the major release number in the soname." of libstdc++.so and as one can figure out looking at [2], this has not happened since libstdc++.so.6.0.0, which came with GCC 3.4.0. From that, I am willing to draw the conclusion that the compiler ABI has been stable since then. Is this correct and is it therefore save to say that a library compiled with GCC 3.4.x can be linked against (dynamically or statically) with GCC 4.y.z, if we assume that all ABI-affecting compiler flags have been the same (esp. -fabi-version=2)? Does the reverse hold, too?

I hope someone can clarify this for me.

Best regards,

Heiko

[1] GCC manual, ch. 9, "Binary Compatibility", http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Compatibility.html#Compatibility
[2] libstdc++ manual, Appendix B., "ABI Policy and Guidelines", http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
[3] gcc-help, "Re: supporting multiple versions of GCC with a single shared object release?", http://gcc.gnu.org/ml/gcc-help/2009-04/msg00199.html






[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux