tcg: add perfmap and jitdump

Add ability to dump /tmp/perf-<pid>.map and jit-<pid>.dump.
The first one allows the perf tool to map samples to each individual
translation block. The second one adds the ability to resolve symbol
names, line numbers and inspect JITed code.

Example of use:

    perf record qemu-x86_64 -perfmap ./a.out
    perf report

or

    perf record -k 1 qemu-x86_64 -jitdump ./a.out
    DEBUGINFOD_URLS= perf inject -j -i perf.data -o perf.data.jitted
    perf report -i perf.data.jitted

Co-developed-by: Vanderson M. do Rosario <vandersonmr2@gmail.com>
Co-developed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Message-Id: <20230112152013.125680-4-iii@linux.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Ilya Leoshkevich 2023-01-12 16:20:13 +01:00 committed by Richard Henderson
parent 7c10cb38cc
commit 5584e2dbe8
10 changed files with 505 additions and 0 deletions

View file

@ -4838,6 +4838,26 @@ SRST
Enable synchronization profiling.
ERST
#if defined(CONFIG_TCG) && defined(CONFIG_LINUX)
DEF("perfmap", 0, QEMU_OPTION_perfmap,
"-perfmap generate a /tmp/perf-${pid}.map file for perf\n",
QEMU_ARCH_ALL)
SRST
``-perfmap``
Generate a map file for Linux perf tools that will allow basic profiling
information to be broken down into basic blocks.
ERST
DEF("jitdump", 0, QEMU_OPTION_jitdump,
"-jitdump generate a jit-${pid}.dump file for perf\n",
QEMU_ARCH_ALL)
SRST
``-jitdump``
Generate a dump file for Linux perf tools that maps basic blocks to symbol
names, line numbers and JITted code.
ERST
#endif
DEFHEADING()
DEFHEADING(Generic object creation:)