4.2.1 abi compatibility with 4.0.0

Mike Stump mrs@apple.com
Mon Apr 14 17:25:00 GMT 2008


On Apr 9, 2008, at 2:04 PM, Mike Stump wrote:
> 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?

Well, so far, no one has said boo, so I've filed http://gcc.gnu.org/PR35935 
  to ensure that this doesn't get dropped on the floor.  :-(  It  
breaks Acrobat Reader, Microsoft Messenger and the HP printer drivers  
just to name a few.  This isn't a theoretical breakage.  The radar has  
the solution to the breakage.



More information about the Libstdc++ mailing list