[LLVMdev] road blocks in support shared library of llvm

Peng Cheng gm4cheng at gmail.com
Fri Jul 19 10:27:29 PDT 2013


I am using llvm for a jit engine in a large project, in which multiple
shared library modules link against llvm.  Since llvm is recommended as a
static library, this leads to shared library symbol conflicts, leading to
llvm assertions in some global table look up or insertion during the shared
library loading time.  That forced me to hide all llvm symbols during the
link time.

An alternative solution would be using shared library of llvm.  But this
package configuration is not supported for windows, and not recommended for
other OSes according to llvm doc. see
http://llvm.org/docs/CMake.html#frequently-used-cmake-variables

I can understand that the reason of not supported for windows is the dll
export/import declarations.

Could you help me understand why it is not recommended for other OSes and
what needs to be done to fully support shared library of llvm?

One reason I am speculating is the global data in the llvm, which have been
extensively used to store compiler options, machine types, optimization
passes, ...  If compiled as a shared library and multiple modules link
against it, undesired results could happen when different modules use the
global data for different purposes. Anyone could confirm that?

Any other road blocks?

Thanks,
-Peng
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130719/66efdd7b/attachment.html>


More information about the llvm-dev mailing list