Incompatibility with 1.1. (Was: Do you need the vtable bug fixed?)
Martin v. Loewis
martin@mira.isdn.cs.tu-berlin.de
Sun Jun 6 03:23:00 GMT 1999
> >That looks to me like a link-once problem. Apparently, the compiler
> >changed the rules under which inline functions or other stuff is
> >emitted.
As it turns out, it is a mangling problem. In the code
void foo(bool,bool);
void bar()
{
foo(true,true);
}
egcs 1.1 mangles foo as
foo__FbT0
whereas gcc 2.95 19990529 mangles it as
foo__Fbb
Without further checking, it seems that this was introduced by
1998-07-11 Mark Mitchell <mark@markmitchell.com>
* method.c
(is_back_referenceable_type): New function. Don't back-reference
TEMPLATE_TYPE_PARMs as well as simple types like integers.
It seems that egcs 1.1 did not consider boolean to be simple, whereas
gcc 2.95 does. As a result, all functions taking two subsequent
boolean arguments lose binary compatibility with egcs 1.1.
In your particular example, this incompatibility was triggered by
U QRegExp::QRegExp(char const *, bool, bool)
This is as far as my analysis goes; I deliberately refrain from
drawing conclusions :-)
Regards,
Martin
More information about the Gcc-bugs
mailing list