On 12.05.2021 10:15, Kavindu Gimhan Zoysa via llvm-dev wrote:
> Hi all,
>
> I was able to generate the Stack Map which is shown here https://llvm.org/docs/StackMaps.html#stack-map-format <https://llvm.org/docs/StackMaps.html#stack-map-format>. Now I want to read those entries. What I did was, I manually change the .s file as shown below (Added the *.globl __LLVM_StackMaps *manually). Then I can read the entries using C code.
>
> .globl __LLVM_StackMaps
> __LLVM_StackMaps:
> .byte 3
> .byte 0
> .short 0
>
> I want to know, whether this is the correct approach. If not could you please suggest me the correct approach?
>
> Really appreciate your input on this.
>
> Thank you,
> Kavindu
>
> Kavindu Gimhan Zoysa,
> BSc(Hons) | ENTC | UoM,
> SSE | WSO2
>
> GitHub <https://github.com/KavinduZoysa> LinkedIn <https://www.linkedin.com/in/kavindu-gimhan-zoysa-85939a122/> Medium <https://medium.com/@kavindugimhanzoysa>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm...@lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Kavindu,
I can't parse your question. Can you rephrase?
Philip
What should I do, if I want to read the stack map within the same program where the stack map is generated? I think an ELF-reading library should be used externally.
Can't I use this C API `LLVMCreateSimpleMCJITMemoryManager()`?
This is generally the right approach, yes.
You may also find include/llvm/Object/StackMapParser.h helpful.
Philip
func foo() {}
func bar() {
call foo(); // this is a statepoint
}
func readLLVMStackMap() {}
func main() {
call bar(); // this is a statepoint
call readLLVMStackMap();
}