[libcxx-dev] Option to disable inline namespacing completely?

Kristina Brooks via libcxx-dev libcxx-dev at lists.llvm.org
Sun Nov 11 21:49:14 PST 2018


I was wondering, would it be possible to add an option to disable inline namespacing completely (as a CMake
configuration flag) in libc++ for the sake of being able to use shorthand mangling and without having to resort to
handling it on IA64 mangler level. This has many use cases for example distributions of anything that includes libc++ as
one and only libc++ and does not allow non-vendor software to be installed. On an embedded system, assuming debug info
is generated, and given how common some of the debug data takes a very significant amount of space given the complex
definition of something like `std::__2::basic_string<...>` versus the short form (`std::string` having a shorthand
mangling is a godsend since it's 95% shorter, not an accurate figure but basically definitely above 90%).

Realistically it would be cool to just have shorthand manglings for inline namespaced versions of it but that's
something that has to be implemented in the mangler and is fairly distinct from mono-ABI cases where versioning is
undesirable due to impossibility of collisions.

I think I suggested something like that to Eric (disabling inline namespaces) though I'm not sure if there is any plans
to implement that in which case I may open a Clang differential that adds the option for the mangler to strip versioned
namespaces as this is simply an extremely useful option to have when shipping an entire OS with all software only being
available as provided by the vendor.

Thank you.
- Kristina

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3996 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.llvm.org/pipermail/libcxx-dev/attachments/20181112/3ed65bb2/attachment.bin>

More information about the libcxx-dev mailing list