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