gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: success with libobjc2 and clang on Windows


From: David Chisnall
Subject: Re: success with libobjc2 and clang on Windows
Date: Wed, 29 Sep 2010 19:31:16 +0100

Hey Eric,

Thanks for trying that - great news that it mostly works...

On 29 Sep 2010, at 18:09, Eric Wasylishen wrote:

> Clang didn't seem to find my mingw include directory with the standard
> C headers, so I added -I/c/GNUstep/mingw/include when compiling things
> with it. I also hit this bug http://llvm.org/bugs/show_bug.cgi?id=7955
> , an interaction between mingw and clang. After doing the header file
> tweak described there, I was able to compile Ink with clang like this:

There's been some work recently with clang to implement the MS extensions 
required for the standard headers, so we might be able to get away without the 
MinGW ones in future, just adding -fms-extensions to [OBJ]CFLAGS.

> make CC=clang CPPFLAGS=-I/c/GNUstep/mingw/include
> OBJCFLAGS=-fobjc-non-fragile-abi
> 
> Things I coulnd't get working, yet:
> - compiling libobjc2 with clang, failed looking for the unwind.h
> header. I didn't try copying the gcc one.

I use the one from libunwind.  I've committed a copy of this to libobjc2 trunk. 
 The GCC one would probably work as well - they both describe the same stuff 
(although the GCC one slaps a GPL on top of it, in spite of the fact that it's 
just the interfaces from the Itanium ABI spec).

> - compiling base with clang, I get weird link errors like "undefined
> reference to `libmsvcrt_a_iname'". There are some hits on the mingw
> mailing list if you search for this error, but I haven't tried to fix
> it yet.

No idea about this one.

> - throwing exceptions with @throw seems to be broken; abort() is being called.

Can you put a breakpoint on the personality function?  You might need to 
explicitly add the options for async unwind tables to CFLAGS for this to work 
on Windows.  Using DWARF exceptions probably isn't the right thing to do there 
- we should be doing something that interoperates with SEH, so maybe have the 
@try blocks push something onto the SEH stack.  This is something that needs 
implementing in clang, rather than libobjc though, and the details of SEH are 
not especially well documented.  

David


reply via email to

[Prev in Thread] Current Thread [Next in Thread]