<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Oct 30, 2016 at 12:32 PM, Joerg Sonnenberger <span dir="ltr"><<a href="mailto:joerg@bec.de" target="_blank">joerg@bec.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On Sun, Oct 30, 2016 at 12:54:28PM -0600, Eric Fiselier wrote:<br>
> Richard requested this change. Take a look at<br>
> <a href="https://reviews.llvm.org/D26044" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D26044</a> for more rational.<br>
<br>
</span>I don't see much rational and in fact, I disagree with some of the<br>
mentioned items. E.g. presence of libc++ won't tell you if you can use<br>
sized deallocation as that's a ABI library issue.</blockquote><div><br></div><div><div>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.</div><div><br></div><div>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.</div></div><div><br></div><div>(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.)</div></div></div></div>