Offset overflow on calling __chkstc and __alloca

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

Opening a bug with it is probably a good idea.

Cheers,
Rafael

The bug is opened already, #18582.

Thanks,
Mikhail