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