From: "Chandler Carruth" <chandlerc@google.com>
To: "Hal Finkel" <hfinkel@anl.gov>
Cc: "Eric Fiselier" <eric@efcs.ca>, "cfe-dev@cs.uiuc.edu Developers" <cfe-dev@cs.uiuc.edu>, "LLVM Dev"
<llvmdev@cs.uiuc.edu>, "Marshall Clow" <mclow.lists@gmail.com>, "Dan Albert" <danalbert@google.com>
Sent: Friday, February 20, 2015 9:29:50 PM
Subject: Re: [cfe-dev] [RFC] When can libc++ "officially" support linux?
> 2. We need to clarify how libstdc++ and libsupc++ can be used as
> libc++'s ABI library and explicitly define the level of support for
> these configurations. Are there any people using this
> functionality?
> These configurations have been broken for GCC >= 4.9.2 and I
> haven't
> heard any complaints. I would like to drop these configurations all
> together.
I'm currently using the configuration where libc++ builds on top of
libstdc++ (specifically, the version from GCC 4.7.2). I have
vendor-provided static libraries that I need to link against
(although only use via a C API) that were compiled against
libstdc++. Please don't drop that configuration.
+1
So, I at least misread this, and maybe you did as well Hal.
I didn't; that's really the configuration I use.
I think what needs to work is allowing a binary library to be linked
into an application built with libc++ while that library uses
libstdc++.
Eric pointed out to me that this doesn't actually require building
libc++ "on top of" libstdc++. libc++abi and libsupc++ are supposed
to be ABI-compatible. It should be possible to use libc++,
libc++abi, and libstdc++ (without libsupc++). This is the use case I
personally have and I think it is likely the primary use case people
will have on linux. There shouldn't be any technical reason to need
to use libsupc++ for the ABI components, whether bundled inside
libstdc++ or on its own. Hal, do you actually need that
configuration?
To be fair, as I discussed briefly with Eric on IRC, I've been using the libc++ over libstdc++ configuration for a long time (longer than has been officially supported; I had my own hacked-together patch at one point), and I've not experimented with this recently.
However, I'm also not entirely sure it is true that I can link to libstdc++ without getting libsupc++. I don't believe that we link separately to libsupc++, but rather, libsupc++.a is actually a part of libstdc++.a (they define an overlapping set of symbols). This seems easy enough to work around for static linking, but I recall that this will cause problems for dynamic linking.
I'll experiment this week and see if I can make libc++abi work.
Thanks again,
Hal