On Thu, Feb 8, 2018 at 3:54 AM, Andres Freund <and...@anarazel.de> wrote: > I've pushed v10.0. The big (and pretty painful to make) change is that > now all the LLVM specific code lives in src/backend/jit/llvm, which is > built as a shared library which is loaded on demand. > > The layout is now as follows: > > src/backend/jit/jit.c: > Part of JITing always linked into the server. Supports loading the > LLVM using JIT library. > > src/backend/jit/llvm/ > Infrastructure: > llvmjit.c: > General code generation and optimization infrastructure > llvmjit_error.cpp, llvmjit_wrap.cpp: > Error / backward compat wrappers > llvmjit_inline.cpp: > Cross module inlining support > Code-Gen: > llvmjit_expr.c > Expression compilation > llvmjit_deform.c > Deform compilation
You are asking LLVM to dlopen(""), which doesn't work on my not-Linux, explaining the errors I reported in the older thread. The portable way to dlopen the main binary is dlopen(NULL), so I think you need to pass NULL in to LLVMLoadLibraryPermanently(), even though that isn't really clear from any LLVM documentation I've looked at. diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c index a1bc6449f7..874bddf81e 100644 --- a/src/backend/jit/llvm/llvmjit.c +++ b/src/backend/jit/llvm/llvmjit.c @@ -443,7 +443,7 @@ llvm_session_initialize(void) cpu = NULL; /* force symbols in main binary to be loaded */ - LLVMLoadLibraryPermanently(""); + LLVMLoadLibraryPermanently(NULL); llvm_opt0_orc = LLVMOrcCreateInstance(llvm_opt0_targetmachine); llvm_opt3_orc = LLVMOrcCreateInstance(llvm_opt3_targetmachine); -- Thomas Munro http://www.enterprisedb.com