I’m trying to use PerfJITEventListener with llvm::orc::LLJITBuilder:
- perf record -o /tmp/perf.data – <my_binary_with_event_listener>
- perf inject -j -v -i /tmp/perf.data -o /tmp/perf.data.jit
jit marker found: ~.debug/jit/llvm-IR-jit-20200417-3c2242/jit-149849.dump
injecting: ~/.debug/jit/llvm-IR-jit-20200417-3c2242/jit-149849.dump
write ELF image ~/.debug/jit/llvm-IR-jit-20200417-3c2242/jitted-149849-1.so
write ELF image ~/.debug/jit/llvm-IR-jit-20200417-3c2242/jitted-149849-2.so
injected: ~/.debug/jit/llvm-IR-jit-20200417-3c2242/jit-149849.dump (0)
Generated ELF files have correct .text sections.
However perf report can’t find these generated so files:
- 69.50% 23.82% my_binary [JIT] tid 149849 [.] 0x00007f9c34d5106a
- 51.78% 45.69% my_binary [JIT] tid 149849 [.] 0x00007f9c34d51065
- 27.71% 6.09% my_binary [JIT] tid 149849 [.] 0x00007f9c34d51060
It seems that perf report is looking for a shared object in /tmp/perf-149849.map, but that file doesn’t exist.
Looking at examples in the original LLVM change (https://reviews.llvm.org/D44892?), I don’t see any mentions of perf.map file.
Do I miss something? Are there any examples of how to use perf listener?
Thanks,
Eugene