Patchpoint and Stackmap Instrinsics on Linux/ELF

Hello,

I'm currently looking into integrating the patchpoint and stackmap
intrinsics into my pet project.

In their current implementation (3.4 and trunk) the code to emit the
additional section is only executed on Darwin. This is however quickly
fixed: Add a ".llvm_stackmaps"-Section for ELF in MCObjectFileInfo and
execute StackMaps::serializeToStackMapSection in X86AsmPrinter in the
ELF-Branch.

serializeToStackMapSection writes the information using MCStreamer,
which seems to work properly.
I'm using MCJIT with a custom memory manager to intercept the stackmap
datasection, but no memory is allocated for this purpose.

I'd be grateful, if someone more knowledgeable could help me out.

Regards,
Jörg Blank

elf_stackmaps.patch (1.81 KB)

Hi Jörg,

serializeToStackMapSection writes the information using MCStreamer,
which seems to work properly.
I'm using MCJIT with a custom memory manager to intercept the stackmap
datasection, but no memory is allocated for this purpose.

I think the ELF MCJIT decides whether to load a section for runtime
based on whether it has the SHF_ALLOC flag set, which your patch
doesn't seem to set. If you're lucky that'll make everything spring to
life.

Cheers.

Tim.

Hi Tim,

That was, in fact, the solution. Thanks.

Joerg