[LLVMdev] Crash when using InstallLazyFunctionCreator and JIT on Linux x64.

Nicholas Chapman nickamy at paradise.net.nz
Mon Jan 12 16:06:32 PST 2009


Hi everyone,
I'm running into a problem using JIT compilation on Linux x86-64.
LLVM revision is 62079.
I've installed a lazy function creator using InstallLazyFunctionCreator().
I return the value 0x5ce64e from my lazyFunctionCreator function.
However, the disassembled JIT'd function looks like this:

0x00007f45ef2b6018:    sub    $0x8,%rsp
0x00007f45ef2b601c:    mov    $0x7f45ef2b6010,%rax
0x00007f45ef2b6026:    movss  (%rax,%riz,1),%xmm0
0x00007f45ef2b602b:    movss  %xmm0,0x4(%rsp)
0x00007f45ef2b6031:    callq  0x7f46005ce64e
0x00007f45ef2b6036:    ucomiss 0x4(%rsp),%xmm0
0x00007f45ef2b603b:    setnp  %cl
0x00007f45ef2b603e:    sete   %al
0x00007f45ef2b6041:    and    %cl,%al
0x00007f45ef2b6043:    add    $0x8,%rsp
0x00007f45ef2b6047:    retq  

As you can see, the upper 32 bits of the function address that the 
function is making a call to are incorrect.
Consequently, the program makes an invalid memory access when jumping to 
0x7f46005ce64e.
Is this a known bug, or am I doing something wrong?
Any help would be greatly appreciated.
Thanks,
    Nicholas Chapman




More information about the llvm-dev mailing list