[libcxx-dev] Non-merged type info name comparison

Louis Dionne via libcxx-dev libcxx-dev at lists.llvm.org
Wed Sep 25 13:24:46 PDT 2019



> On Sep 25, 2019, at 15:19, Nico Weber <thakis at chromium.org> wrote:
> 
> On Wed, Sep 25, 2019 at 12:11 PM Louis Dionne via libcxx-dev <libcxx-dev at lists.llvm.org <mailto:libcxx-dev at lists.llvm.org>> wrote:
> 
> 
>> On Sep 23, 2019, at 15:15, Shoaib Meenai via libcxx-dev <libcxx-dev at lists.llvm.org <mailto:libcxx-dev at lists.llvm.org>> wrote:
>> 
>> Ah, sorry – my apologies.
>>  
>> From: Marshall Clow <mclow.lists at gmail.com <mailto:mclow.lists at gmail.com>>
>> Date: Monday, September 23, 2019 at 12:14 PM
>> To: Shoaib Meenai <smeenai at fb.com <mailto:smeenai at fb.com>>
>> Cc: "libcxx-dev at lists.llvm.org <mailto:libcxx-dev at lists.llvm.org>" <libcxx-dev at lists.llvm.org <mailto:libcxx-dev at lists.llvm.org>>
>> Subject: Re: [libcxx-dev] Non-merged type info name comparison
>>  
>> On Mon, Sep 23, 2019 at 12:02 PM Shoaib Meenai via libcxx-dev <libcxx-dev at lists.llvm.org <mailto:libcxx-dev at lists.llvm.org>> wrote:
>> In https://reviews.llvm.org/rL361913 <https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_rL361913&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=zXNo5HfpEBs2AeK5MYbybBHSXRWS2rfFR2LYPo1zuhA&s=5In-WOhspL-mxLcgsafyIl0_G_S9IkKnfaj3lVT6y44&e=>, libc++ gained the option to make type info comparisons use a strcmp on the type info name, which is useful for when we can’t guarantee RTTI uniqueness. I believe libstdc++ also defaults to strcmp comparisons. However, libstdc++ doesn’t perform the string comparison when the type info name begins with the * character [1], which is the case for e.g. types defined in anonymous namespaces. Should libc++’s implementation be changed to match, at least when targeting Linux?
> Actually, in what cases can we guarantee that RTTI has been fully duplicated? For example, I don't think anything prevents users from using a shared library that redefines the RTTI for a type, no?
> 
> Do you mean deduplicated?

Yes, sorry!

> 
> If so, then in binaries that have everything (including libc++) statically linked, this is guaranteed.


Right. So some platforms (I guess Android) have this property, and other platforms (like Apple platforms, where we don't link libc++ statically into applications) do not. I guess it's then a choice to be made by vendors, and the status quo is OK.

Louis

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libcxx-dev/attachments/20190925/6e218e3f/attachment.html>


More information about the libcxx-dev mailing list