Comment 34 for bug 1488254

Revision history for this message
In , Octoploid (octoploid) wrote :

(In reply to comment #31)
> (In reply to comment #26)
> > (In reply to comment #25)
> > > 3. The problem only started because distros have chosen GCC 5 as their
> > > default compilers for the current releases, which defaults to C++11.
> >
> > No gcc-5 doesn't default to C++11 and the issue here has nothing to do with
> > C++98 vs. C++11.
> >
> > Please try to get the facts strait, before posting long misleading replies.
>
> It is related to C++11; afaik one of the reasons to break the ABI was to
> become C++11 standard compliant; also the new classes are tagged
> "cxx11".

The new ABI is used for C++98 as well...

> (In reply to comment #28)
> > The incompatibility was introduced by gcc's "automatic tagging of functions
> > and variables with tagged types where the tags are not already reflected in
> > the mangled name".
> >
> > Now every library function with e.g a std::string return type causes linker
> > errors.
> >
> > To solve this issue, Clang only would have to implement the return type ABI
> > tagging. All other ABI tags are irrelevant AFAIK.
>
> "Only" sounds like it would be easy and obvious. Sadly, this is not a
> trivial problem.
>
> The change was necessary to support dual-abi in one binary; you need to
> be able to distinguish different ABIs in the return type.

No, the "automatic tagging of function return types" was unnecessary. The new
ABI was working perfectly fine with both compilers before that change.