This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 4.2.1 abi compatibility with 4.0.0


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.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]