------- Additional Comments From uttamp at us dot ibm dot com  2005-07-29 18:16 
-------
I belive, till g++ 3.3.4, the mangled string used have that '_' as hown by
following example,

template<class T> struct S {
        S(int i=0);
};
template<S<int> &s> void f13();
extern S<int> s13;
int main(void)
{
        f13<s13>();
        return 0;
}

With nm, I get 
         U __gxx_personality_v0
00000000 T main
         U _Z3f13IXL_Z3s13EEEvv

Which I believe is the default and correct behavior. But with g++ > 3.4 (which
doesn't support abi-version=3) by default produces mangled string as
         U __gxx_personality_v0
00000000 T main
         U _Z3f13ILZ3s13EEvv

And with g++ > 3.5.x user has to specify -fabi-version=3  as specified by Mark,
to get the correct string.
So there is a binary compatibility problem between object code created by older
g++ version < 3.3.4 and later version till g++ version 3.5.

Do you see my dilemma? Or am I still missing something very basic here? 
Sorry for any/all repetition over this subject. I would really appreciate the
reply for better understanding and clarification of this issue.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16240

Reply via email to