[cfe-dev] libc++ in Windows

Reid Kleckner rnk at google.com
Wed Jun 26 08:28:11 PDT 2013


On Wed, Jun 26, 2013 at 10:35 AM, Nico Rieck <nico.rieck at gmail.com> wrote:

> On 26.06.2013 02:57, Daniel Dilts wrote:
>
>> When I was looking at libc++ it didn’t appear to support Windows except
>> maybe under MinGW.  What would be a good place to start to get libc++ to
>> work on Windows?
>>
>
> I've been working on this on and off. Here's a braindump of what's needed:
>
> 1. Port OS-specific things.
>
>    This is rather small and I've done most of this already.
>
> 2. C Standard Library.
>
>    Microsoft's CRT is a royal PITA. It doesn't support a lot of things
>    required or expected, and other things have subtle differences.
>    Which is why I wrote a new standard library to make point 1 easier.
>    At first it was only a set of standard-compliant headers and
>    implementation stubs to get it to compile, but I've since
>    implemented certain parts. The hardest part for this route is, for
>    me at least, libm, and I don't know any modern BSD-licensed libm
>    that could be used.
>    The other way would be to further try and shoehorn MSVCRT and give
>    up C99- and full C++11-compatibility.
>

Can you give some examples of why using MSVCRT is hard?  I would expect
most subtle behavior changes could be overcome, but I'm curious what the
blockers are.


> 3. Implement full dllimport/dllexport semantics so that libc++ can be
>    used as a DLL.
>
>    Clang only support rudimentary dllimport/dllexport for functions.
>    Making it work with classes is a rather large non-trivial change.
>    I've been working on this and apart from vtable-handling and
>    cleanups it's mostly finished. Depending on that last point I may
>    put up some patches for review soon.
>
>    This also requires changes to how libc++ applies those attributes.
>    Using them like ELF visibility doesn't work correctly for templates.
>
> 4. Weak externals for PE to enable replacing operator new/delete.
>
>    This was impossible with how dllimport was represented in LLVM
>    before. If my patches are excepted, it should be doable, but I
>    haven't looked into it again.
>
> 5. Port an ABI library like libc++abi.
>
>    I've ported some parts of libc++abi, but it's incomplete and
>    untested. It also needs an unwind library, which quickly leads
>    to the next point:
>

Yep, hard.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130626/fd96d0f6/attachment.html>


More information about the cfe-dev mailing list