This is the mail archive of the gcc-help@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]

RE:gcc5 and std::string


just to be sure to understand,

I rebuilt both projects with gcc 5.2 but in one case I got a std::string with the old API
and in another a symbol with the new CXX11 abi.

I do not try to link a project compiled with the new ABI and a library with old version.

What I understood is that std::string is special because two symbols are emitted on in the normal name space but with the cxx11 abi and one in the __cxx11 namespace.

In pytango the symbol emited by gcc5.2  is the once without the __cxx11 namespace

_ZN5Tango17ranges_type2constIsE3strE -> Tango::ranges_type2const<short>::str

but if I understand correctly this string is cxx11 abi with the same old name mangled.

BUT

in tango the symbols emited by gcc are


:/usr/lib/i386-linux-gnu$ nm -D libtango.so.8.1.2  | grep ranges_type | c++filt 
0045f258 D Tango::ranges_type2const<bool>::enu
00460dfc B Tango::ranges_type2const<bool>::str[abi:cxx11]
0045f280 D Tango::ranges_type2const<double>::enu
00460fdc B Tango::ranges_type2const<double>::str[abi:cxx11]
0045f27c D Tango::ranges_type2const<float>::enu
00460fac B Tango::ranges_type2const<float>::str[abi:cxx11]
0045f26c D Tango::ranges_type2const<unsigned char>::enu
00460eec B Tango::ranges_type2const<unsigned char>::str[abi:cxx11]
0045f278 D Tango::ranges_type2const<long>::enu
00460f7c B Tango::ranges_type2const<long>::str[abi:cxx11]
0045f268 D Tango::ranges_type2const<unsigned long>::enu
00460ebc B Tango::ranges_type2const<unsigned long>::str[abi:cxx11]
0045f25c D Tango::ranges_type2const<Tango::DevEncoded>::enu
00460e2c B Tango::ranges_type2const<Tango::DevEncoded>::str[abi:cxx11]
0045f250 D Tango::ranges_type2const<Tango::DevState>::enu
00460d9c B Tango::ranges_type2const<Tango::DevState>::str[abi:cxx11]
0045f254 D Tango::ranges_type2const<char*>::enu
00460dcc B Tango::ranges_type2const<char*>::str[abi:cxx11]
0045f270 D Tango::ranges_type2const<short>::enu
00460f1c B Tango::ranges_type2const<short>::str[abi:cxx11]
0045f260 D Tango::ranges_type2const<unsigned short>::enu
00460e5c B Tango::ranges_type2const<unsigned short>::str[abi:cxx11]
0045f274 D Tango::ranges_type2const<long long>::enu
00460f4c B Tango::ranges_type2const<long long>::str[abi:cxx11]
0045f264 D Tango::ranges_type2const<unsigned long long>::enu
00460e8c B Tango::ranges_type2const<unsigned long long>::str[abi:cxx11]


So my question now is why in one case the [abi:cxx11] is present (tango)  and not in the other (pytango)
I use the same compiler in both cases. Except that for pytango I am building a python extension and it calls gcc instead of g++.
But I guess thath gcc is clever enought to understand that this is a c++ file.

Sorry if this is trivial for you.

But I try to understand clearly where is the problem.

Thanks


________________________________________
De : Jonathan Wakely [jwakely.gcc@gmail.com]
Envoyé : vendredi 11 septembre 2015 15:27
À : PICCA Frederic-Emmanuel
Cc : gcc-help; taurel@esrf.eu; Avi Kivity
Objet : Re: gcc5 and std::string

 On 11 September 2015 at 14:24, Avi Kivity wrote:
>
> This post explains it:
>
> http://developerblog.redhat.com/2015/02/05/gcc5-and-the-c11-abi/

Also
http://fedoramagazine.org/gcc-5-in-fedora-whats-an-abi-and-what-happens-when-we-change-it/
and
https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html


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