This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Why does -Wabi-tag complain when -std=c++03?
- From: Jonathan Wakely <jwakely dot gcc at gmail dot com>
- To: Jeffrey Walton <noloader at gmail dot com>
- Cc: "gcc-help at gcc dot gnu dot org" <gcc-help at gcc dot gnu dot org>
- Date: Thu, 24 Mar 2016 17:37:08 +0000
- Subject: Re: Why does -Wabi-tag complain when -std=c++03?
- Authentication-results: sourceware.org; auth=none
- References: <CAH8yC8kYCmJqN4E5s9KQP1sH+PdV0axg9GuEf8MPeMQs0ede_w at mail dot gmail dot com> <CAH6eHdQYuMxhEJFD_P7GD1UgTy+oL4d_To9zwY8SJ1VRAD7J=w at mail dot gmail dot com> <CAH8yC8=SPMAapcOLo1=z5VpBnF3icoSzOjYZvNqZvkzuJeYYUA at mail dot gmail dot com> <CAH6eHdSSFOqHkpYBDn-GCE_U=hyZjJ0_-aXxENeRwQ=EHm6S0g at mail dot gmail dot com> <CAH8yC8k0m7c8deWa9GomCrCkLdAocwtqWJy7hvWJtgriKVsm7w at mail dot gmail dot com> <CAH6eHdQmQM_vw70aVgo_qdsXsahNWtGwEne=TxtAK4K1bHX9+w at mail dot gmail dot com> <CAH8yC8=TB=BSxKA1rPSU5xbOyoRGdhtZH60uwss23dXtqPHiZA at mail dot gmail dot com> <CAH6eHdRwhF__1uiL00RXqa8obhRaPN0=OFtW82hTT9O2sc2C_w at mail dot gmail dot com> <CAH8yC8=D2G_k2ByDi=M1g899i9wk=aayfrQA8B_pke8BR3MaEQ at mail dot gmail dot com> <CAH6eHdReZhZ8z8Snw_GgZ2w4PZa3_tmaRYCHS8q7oR8Z9uhhKQ at mail dot gmail dot com> <CAH8yC8mfVBJvVUPJwAt-Foo9w1e+Jz6GU_E5qYUZ3yF07nyJQQ at mail dot gmail dot com> <CAH8yC8nbADMw9v9maSWc74u7b2mo4459Oz36wij7dtBNi5TX_g at mail dot gmail dot com> <CAH6eHdTt=UeOMOm1t27sME7GJzwT5CBNV2E6ZaA65FcP=Ou26w at mail dot gmail dot com> <CAH8yC8=npuGBe+hGWi=mSAKHpP__Yr7SzVNRpmiK_aYV-F2z6w at mail dot gmail dot com> <CAH6eHdTT=GnFFYRKvF1Lb1xL25uGYsabNxXoGNiLjKNiLTW+fQ at mail dot gmail dot com> <CAH8yC8kxPmxp8w6eENOcAon9Ku3rJKKUkTt4b_QM5KdMyeYhdg at mail dot gmail dot com> <CAH6eHdRKhesALn5TYaqhYZMRfpBS3f6MBgvavJMVJeJMy7j3Nw at mail dot gmail dot com> <CAH8yC8m_w+ee07ZaBRKrV2dpOf9m68KoXWie1evj-PuJRdWuKg at mail dot gmail dot com>
On 24 March 2016 at 17:29, Jeffrey Walton <noloader@gmail.com> wrote:
> On Thu, Mar 24, 2016 at 1:02 PM, Jonathan Wakely <jwakely.gcc@gmail.com> wrote:
>> On 24 March 2016 at 16:43, Jeffrey Walton wrote:
>>> There are lots of folks who have experienced the issue; check out
>>> http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=libstdc%2B%2B-cxx11;users=debian-gcc@lists.debian.org.
>>> Debian happened to say "f**k it, we'll just recompile everything under
>>> the new ABI and be done with it". But they experienced the corner-case
>>> issues too. I don't know why they did not consult with the GCC folks.
>>
>> They did. Rebuilding everything is the right choice.
>
> It was an incomplete remediation. Debian still has open bugs because
> of it, and we are fielding reports because of it.
>
>>> This step was not obvious to me at all. I don't ever recall having to
>>> define a library macro for a library:
>>>
>>> $ g++ -D_GLIBCXX_USE_CXX11_ABI=0 -c test.cxx -o test-v1.o
>>> $ g++ -D_GLIBCXX_USE_CXX11_ABI=1 -c test.cxx -o test-v2.o
>>>
>>> Naively, because of the blog post on the coexistent implementations, I
>>> was looking for an option like -dual-abi to do it for me.
>>
>> Which is a leap that doesn't in any way follow from a literal reading
>> of the blog post!
>
> Right. We've had similar on other platforms for years and even on
> Linux. For example, with Apple, we can build fat binaries. Even the
> kernel has FatELF (http://lwn.net/Articles/359070/).
>
> This situation seems like a perfect application of the technologies,
> but it seems to be missing from the solution. Hence the reason I
> refrained from the leap, and asked what to do/how do I do it.
I've written up the basic steps of how to do what I really, really
suggest you do not try to do at http://kayari.org/cxx/dualabi.html
The last section explains why a simple compiler switch probably won't
work: most code will need non-trivial refactoring to make it work,
which a compiler could not do on the fly if you simply provide a
command-line option.