[cfe-dev] [RFC] When can libc++ "officially" support linux?

Hal Finkel hfinkel at anl.gov
Sun Feb 22 01:49:00 PST 2015


----- Original Message -----
> From: "Chandler Carruth" <chandlerc at google.com>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: "Eric Fiselier" <eric at efcs.ca>, "cfe-dev at cs.uiuc.edu Developers" <cfe-dev at cs.uiuc.edu>, "LLVM Dev"
> <llvmdev at cs.uiuc.edu>, "Marshall Clow" <mclow.lists at gmail.com>, "Dan Albert" <danalbert at google.com>
> Sent: Friday, February 20, 2015 9:29:50 PM
> Subject: Re: [cfe-dev] [RFC] When can libc++ "officially" support linux?
> 
> 
> On Fri, Feb 20, 2015 at 7:11 PM, Chandler Carruth <
> chandlerc at google.com > wrote:
> 
> 
> 
> On Fri, Feb 20, 2015 at 7:02 PM, Hal Finkel < hfinkel at anl.gov >
> wrote:
> 
> 
> > 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

> 
> 
> If no one needs libsupc++ specifically, then I think it would be fine
> to rely completely on libc++ and libc++abi going together on Linux
> as long as we routinely test that linking libstdc++ into the mix
> continues to work and can correctly use libc++abi's implementation
> bits.

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the cfe-dev mailing list