Comment 30 for bug 1488254

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

(In reply to comment #27)
> (In reply to comment #26)
> > No. It was implemented in April this year, shortly before the gcc-5 release.
> > I've pointed out compatibility issue immediately:
> > https://gcc.gnu.org/ml/gcc-patches/2015-04/msg00153.html
> (...)
> > The were no behavioral changes at all after that patch went in.
>
> In the Linaro thread, Jim points out to the abi_tag patch from 2012. Your
> mention is about "significant changes to attribute abi_tag". I can't see how
> I was wrong.
>
>
> > 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.
>
> This is what most of the documentation, email threads and conversations I
> had seem to point at. If you have a different opinion, than by all means,
> please share your knowledge.
>
> Saying "it has nothing to do with" doesn't explain what it has to do with.
> I'm happy to be proven wrong here, as long as we get all the facts on the
> table. This bug doesn't seem to provide strong facts either.

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".
Before that patch (https://gcc.gnu.org/ml/gcc-patches/2015-03/msg01029.html)
both gcc and clang could use the new ABI without any problem.

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.