It looks as if the code to check which personality function is outside the runtime-specific code. The attached diff should fix that.
Thanks! I will try that. This looks as if clang is still trying to use the Itanium C++ ABI. When the Objective-C code is targeting windows, it now asks for RTTI from the CXXABI class, but somehow your target triple is asking for the Itanium ABI, so we emit Itanium ABI C++ RTTI things and they then fail to link because they refer to things that exist only on Itanium ABI C++ runtimes.
I am not sure if there is a good way of fixing this other than to use a MSVC target triple. C++ EH interop almost certainly won't work if MinGW is targeting the Itanium ABI for C++ and I really don't want to support the horrible 'let's try to layer Itanium-style unwinding on top of SEH, what's the worst that can happen?' approach that MinGW uses.
I just don’t know how to use the MSVC triple with the MinGW toolchain, as using the x86_64-pc-windows-msvc triple seems to somehow remove Clang’s ability to find MinGW headers like stdio.h or pthread.h. Our discussion on GitHub has some more details of what I tried in that direction:
I don’t really understand the interplay between target triples and toolchains, but I wonder whether your suggestion works here given that GNUstep requires MinGW.
Frederik
|