[LLVMdev] Offset overflow on calling __chkstc and __alloca

Mikhail Lyapunov mikhaill at microsoft.com
Fri Jan 17 15:11:32 PST 2014


Hi,

Attempting to use LLVM in jitting mode for AMD64, we met a problem.
When the jitted routine needs a big stack frame (> 1 page), the system attempts to call __chkstk to probe the stack.
This attempt results in assertion in RuntimeDyldELF::resolveX86_64Relocation(), case ELF::R_X86_64_PC32,
because the RealOffset does not fit in 32 bits.

Same happens with __alloca (when IRBuilder::CreateAlloca appears in a conditional block).
Perhaps the issue can be fixed by using indirect call via 64-bit register or replicating service routines inside jitted block.

Is it known issue?
Repro is available on demand, just let us know in which form you'd like to get it.

Regards,
Mikhail
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140117/3f7e80bd/attachment.html>


More information about the llvm-dev mailing list