[LLVMdev] Win32 JIT issue + bug in ScheduleDAGSNodes.h?

Óscar Fuentes ofv at wanadoo.es
Tue Dec 30 17:53:23 PST 2008


srs <skaflotten at gmail.com> writes:

>>> While testing my compiler on win32 in JIT mode, I ran into a couple of 
>>> issues:
>>>
>>> 1. I linked the compiler with the lib files resulting from the cmake 
>>> created VS.NET build. While everything built just fine, the 
>>> ExecutionEngine::create call always returned NULL. The fix was to also 
>>> link with JIT.obj (thanks aKor for pointing me in the right direction). 
>>> I would have thought that linking with LLVMJIT.lib should suffice... a 
>>> VC++ linker issue?
>>>     
>>
>> Try adding this to the link command of your executable:
>>
>> /INCLUDE:_X86TargetMachineModule
>>
>> I should document this somehow.
>
> Yeah, this is necessary, but not sufficient. I also had to link with 
> ExecutionEngineBindings.obj (not JIT.obj as first stated)

So you are using the C bindings. Okay, could someone advise what to do
here? Something like the _X86TargetMachineModule trick on
lib/Target/X86/X86TargetMachine.cpp line 26, but on
lib/ExecutionEngine/ExecutionEngineBindings.cpp?

Why is not the linker automatically pulling that code? If you are using
the C bindings, I suppose that your executable refers to the functions
defined on ExecutionEngineBindings.cpp. It is not the same case as
X86TargetMachine.cpp, which has a self-registering static C++ object and
nothing refers to it from the user's code.

-- 
Oscar




More information about the llvm-dev mailing list