[libcxx] r285382 - Add __libcpp_version file and __libcpp_library_version function.

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 31 10:45:05 PDT 2016

On Sun, Oct 30, 2016 at 12:32 PM, Joerg Sonnenberger <joerg at bec.de> wrote:

> On Sun, Oct 30, 2016 at 12:54:28PM -0600, Eric Fiselier wrote:
> > Richard requested this change. Take a look at
> > https://reviews.llvm.org/D26044 for more rational.
> I don't see much rational and in fact, I disagree with some of the
> mentioned items. E.g. presence of libc++ won't tell you if you can use
> sized deallocation as that's a ABI library issue.

The real situation is a lot more subtle than that. Every one of libc++abi,
libcxxrt, libc++, libsupc++, and libstdc++ provides definitions of global
operator new and operator delete. It's obviously not part of the Itanium
C++ ABI, so it's not the responsibility of a pure "ABI library" to provide
it, but the boundary between the ABI library and the standard library has
never been formally defined.

In any case, the point is that libc++ does provide the relevant symbols,
except when using libstdc++ as its ABI library (in which case it leaves
them to libstdc++ to define). libc++abi does not define sized delete nor
aligned new/delete.

(And for what it's worth, we will also need to detect the version of the
ABI library to correctly enable/disable support for other features.)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20161031/7fd9c6cf/attachment.html>

More information about the cfe-commits mailing list