[LLVMdev] Offset overflow on calling __chkstc and __alloca

Rafael Espíndola rafael.espindola at gmail.com
Thu Jan 23 08:50:24 PST 2014


On 17 January 2014 18:11, Mikhail Lyapunov <mikhaill at microsoft.com> wrote:
> 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.

Opening a bug with it is probably a good idea.

Cheers,
Rafael




More information about the llvm-dev mailing list