This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC 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]

[Bug c++/16240] [3.4/3.5 ABI Regression] g++ generates incorrect mangled name


------- 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


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