On Fri, Mar 23, 2012 at 04:49:22PM -0400, Alexander Kabaev wrote: > On Fri, 23 Mar 2012 22:23:35 +0200 > Konstantin Belousov <kostik...@gmail.com> wrote: > > > On Fri, Mar 23, 2012 at 08:10:56PM +0000, David Chisnall wrote: > > > Author: theraven > > > Date: Fri Mar 23 20:10:56 2012 > > > New Revision: 233391 > > > URL: http://svn.freebsd.org/changeset/base/233391 > > > > > > Log: > > > Revert ABI breakage in libsupc++. > > > > > > Unfortunately, the ABI was broken upstream for the 4.2 release, > > > which we imported. We then shipped the broken version for several > > > years and certain ports (e.g. libobjc2) depend on it, so we're > > > stuck with it for now... > > > We should revisit this for 10.0, since we're allowed to break the > > > ABI then, but until then we should keep the ABI we shipped with 8.x > > > and 9.x. > > > > No, you are not allowed to break ABI for symvered libraries, even > > between major releases. > > You are, if we are ditching the system library in favor on one in > ports. Not polite, but I do not see a polite way out of this. The > libraries from ports are effectively shipped with incompatible ABI in > this area for about 4 years now. Luckily for us, breakage does not seem > to be affecting great many applications, as they do not use the changed > interface directly themselves. libobjc2 is the only known at the moment > that is known to be affected.
The patch just committed made the base-shipped library incompatible with the ports and manual libstdc++ builds. I think it is wiser to not 'undo the undo', and instead start living with the upstream-approved ABI. For symvered library, it does not make any difference if you break it in 10.0 or 9.1. Also, I think that consumers that depend of the ABI of std::typeinfo can be hacked to understand the layout of vtable. I doubt that there are many users that utilize typeinfo.
pgp1ImUqHp5wc.pgp
Description: PGP signature