JIT crashing when compiling source code with Clang and -mretpoline flag

Heyho both Mailinglists,

I’m not sure if I encountered a bug or if I’m doing something wrong. I compiled a “Hello World”-function with Clang to LLVM-IR code, while passing the “-mretpoline” flag.

I tried jitting and calling that function with the KaleidoscopeJIT code, but when calling “lookup” for that function the application crashed.

I also tried that file in an old MCJIT implementation I had - there the application crashed when calling the function (but it does find the address for the function first).

If I recompile my code without the “-mretpoline” flag, everything works fine again.

I compiled Clang and the LLVM files from the LLVM8 source files, I run them under Windows7 64bit. Any ideas what might went wrong?

Kind greetings


No experiences, opinions or thoughts on this? :c

You are also doing two things that are novel:

  • using retpoline on JITed code (I think)

  • doing it on Windows

So far as I know, you are the first person to do either of those things, so no one is going to have any experience to share. I believe retpoline has primarily been used in the kernel space, mainly for Linux, which uses ELF.

Finally, you haven’t provided much info beyond “the application crashed”, so even if someone was generous enough to try to diagnose the problem remotely over email, there are no clues to analyze. I think you’ll have to debug things much further to get a useful response.