5584e2dbe8
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>
44 lines
1.2 KiB
C
44 lines
1.2 KiB
C
/*
|
|
* exit support for qemu
|
|
*
|
|
* Copyright (c) 2018 Alex Bennée <alex.bennee@linaro.org>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#include "qemu/osdep.h"
|
|
#include "accel/tcg/perf.h"
|
|
#include "exec/gdbstub.h"
|
|
#include "qemu.h"
|
|
#include "user-internals.h"
|
|
#ifdef CONFIG_GPROF
|
|
#include <sys/gmon.h>
|
|
#endif
|
|
|
|
#ifdef CONFIG_GCOV
|
|
extern void __gcov_dump(void);
|
|
#endif
|
|
|
|
void preexit_cleanup(CPUArchState *env, int code)
|
|
{
|
|
#ifdef CONFIG_GPROF
|
|
_mcleanup();
|
|
#endif
|
|
#ifdef CONFIG_GCOV
|
|
__gcov_dump();
|
|
#endif
|
|
gdb_exit(code);
|
|
qemu_plugin_user_exit();
|
|
perf_exit();
|
|
}
|