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