[LLVMdev] Trouble using the MCJIT: "Target does not support MC emission" error

Matt Pharr matt.pharr at gmail.com
Fri Aug 26 00:04:49 PDT 2011


Following along from lli code, if you add a call to InitializeNativeTargetAsmPrinter() during setup, it gets a bit farther and crashes rather than issuing that error.  (Rebuilding with debugging symbols now to dig into it further…)

-matt

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000000
0x000000010000349e in llvm::MCJITMemoryManager::startFunctionBody ()
(gdb) where
#0  0x000000010000349e in llvm::MCJITMemoryManager::startFunctionBody ()
#1  0x0000000100003ea0 in llvm::RuntimeDyldImpl::extractFunction ()
#2  0x00000001000059a5 in llvm::RuntimeDyldMachO::loadSegment64 ()
#3  0x000000010000493d in llvm::RuntimeDyldMachO::loadObject ()
#4  0x0000000100003cf9 in llvm::RuntimeDyld::loadObject ()
#5  0x00000001000032e5 in llvm::MCJIT::MCJIT ()
#6  0x00000001000021c2 in llvm::MCJIT::createJIT ()
#7  0x0000000100023274 in llvm::EngineBuilder::create ()
#8  0x0000000100001417 in lRunTest (fn=0x7fff5fbffb3a "a.bc") at bug.cpp:44
#9  0x000000010000175a in main (argc=2, argv=0x7fff5fbff9c8) at bug.cpp:61
(gdb) quit


On Aug 26, 2011, at 7:58 AM, Ralf Karrenberg wrote:

> Ah, now that makes sense. Guess I was a little over-eager with my
> bugreport. Thanks! :)
> 
> However, I am now running into the same Problem as Matt ("Target does
> not support MC emission!").
> 
> Best,
> Ralf
> 
> Am 25.08.2011 19:32, schrieb Bruno Cardoso Lopes:
>> Hi Ralf,
>> 
>> FYI, old JIT doesn't support AVX at all, no encoding info, etc... The
>> only way to use AVX+JIT is using MCJIT, which contains the correct
>> encoding, but unfortunately the framework isn't good yet as the old
>> one is.
>> 
>> On Thu, Aug 25, 2011 at 10:12 AM, Ralf Karrenberg<Chareos at gmx.de>  wrote:
>>> Hi Matt,
>>> 
>>> I am unsure about MCJIT, but I guess the problem is the same.
>>> Just like when invoking llc, you need to pass the information to use AVX
>>> (llc -mattr=+avx).
>>> I guess the corresponding code should look like this:
>>> 
>>>     llvm::EngineBuilder engineBuilder(module);
>>>     engineBuilder.setErrorStr(&eeError);
>>>     engineBuilder.setEngineKind(llvm::EngineKind::JIT);
>>>     engineBuilder.setUseMCJIT(true);
>>>     engineBuilder.setMCPU("corei7-avx");
>>>     std::vector<std::string>  attrs;
>>>     attrs.push_back("avx");
>>>     engineBuilder.setMAttrs(attrs);
>>>     llvm::ExecutionEngine *ee = engineBuilder.create();
>>> 
>>> Note that I have just today filed a bug report also related to jitted
>>> AVX: http://llvm.org/bugs/show_bug.cgi?id=10742
>>> Thus, it might very well be the case that I am also mistaken and need to
>>> do something different.
>>> 
>>> Best,
>>> Ralf
>>> 
>>> Am 25.08.2011 13:16, schrieb Matt Pharr:
>>>> I'm trying to wire up some code to use the MC-based JIT; my understanding is that it should be able to JIT AVX code (and that the regular JIT cannot).  However, I'm getting the error "Target does not support MC emission!" when I call EngineBuilder::create().  I assume that I'm just not doing something necessary for initialization, but I'm not sure what it would be--I am calling all of:
>>>> 
>>>>      llvm::InitializeNativeTarget();
>>>>      llvm::InitializeAllTargetMCs();
>>>>      LLVMLinkInMCJIT();
>>>>      LLVMLinkInJIT();
>>>> 
>>>> and the module I'm trying to load does have a reasonable target:
>>>> 
>>>> target triple = "x86_64-apple-darwin11.0.0"
>>>> 
>>>> I've attached a short test case that has the sequence of calls that I'm making and one of the bitcode files I'm trying to use.  I'd be happy for any guidance or suggestions.
>>>> 
>>>> Thanks,
>>>> -matt
>>>> 
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>> 
>> 
>> 
>> 





More information about the llvm-dev mailing list