[LLVMdev] Offset overflow on calling __chkstc and __alloca

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


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.

-------------- 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