[LLVMdev] linking a parser bitcode
Anton Korobeynikov
anton at korobeynikov.info
Fri Dec 4 14:19:31 PST 2009
Hello, Samuel
> While we have been discussing this, my partner discovered the source of where the sj/lj stuff is coming from. Does this mean that the LLVM libraries we're using are broken?
>
> Type.cpp
> ..\..\..\..\llvm\lib/libLLVMCore.a(Type.cpp.obj):Type.cpp.text+0x722): undefined reference to `__gxx_personality_sj0'
> ..\..\..\..\llvm\lib/libLLVMCore.a(Type.cpp.obj):Type.cpp.text+0x750): undefined reference to `_Unwind_SjLj_Register'
> ..\..\..\..\llvm\lib/libLLVMCore.a(Type.cpp.obj):Type.cpp.text+0x848): undefined reference to `_Unwind_SjLj_Resume'
> ..\..\..\..\llvm\lib/libLLVMCore.a(Type.cpp.obj):Type.cpp.text+0xa31): undefined reference to `_Unwind_SjLj_Resume'
Ah, I've re-read the whole thread and now understand the whole situation:
1. You compiled llvm (on windows, as it seems to me) with the compiler
which does sjlj-style EH (e.g. mingw's gcc 3.4.5)
2. LLVM supports only dwarf-based EH (however, EH on windows is
currently unsupported), thus llvm-compiled libgcc does not contain any
sjlj-related routines
So, the best way to resolve the situation is:
- Do not use EH in the code you're compiling via llvm-gcc (it won't
work until someone will feel brave to implement missed EH bits on
windows)
- link everything with g++, not llvm-g++
Hope this will help.
--
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University
More information about the llvm-dev
mailing list