4.2.1 abi compatibility with 4.0.0

Mike Stump mrs@apple.com
Wed Apr 9 21:05:00 GMT 2008


In gcc-4.0.0 search was instantiated in string-inst.cc:

   // Used in str::find.
   template
     const C*
     search(const C*, const C*, const C*, const C*, bool(*)(const C&,  
const C&));

and if a user compiled their code with -frepo, they can wind up with  
an external reference to this, that is bound to the shared library for  
libstdc++ for 4.0.0.  Now, fast forward to 4.2.1. It cleverly removes  
the instantiation for this and the users application no longer works.

The advice from abi.html:

> Library disallowed ABI changes
> The following non-exhaustive list will cause the library major  
> version number to increase, say from "libstdc++.so.3.0.4" to "libstdc 
> ++.so.4.0.0".
>
> 	• deleting an exported symbol
>
Seems appropriate.

So, the question is, is this a bug in their code or the library?  If  
in their code, were exactly do we spell this type of restriction out?

If the library, any objection to putting it back in?



More information about the Libstdc++ mailing list