This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: 4.2.1 abi compatibility with 4.0.0
- From: Mike Stump <mrs at apple dot com>
- To: Mike Stump <mrs at apple dot com>
- Cc: libstdc++ at gcc dot gnu dot org
- Date: Mon, 14 Apr 2008 10:24:52 -0700
- Subject: Re: 4.2.1 abi compatibility with 4.0.0
- References: <BCE2DAC4-FE69-43A7-AA94-6EBC3534A8B2@apple.com>
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.