This patch adds helper functions to the drcov plugin. Which provide information about: - start_code. - end_code. - entry. - path to the executable binary.
Signed-off-by: Ivanov Arkady <[email protected]> --- include/qemu/qemu-plugin.h | 5 +++++ plugins/api.c | 27 +++++++++++++++++++++++++++ plugins/qemu-plugins.symbols | 4 ++++ 3 files changed, 36 insertions(+) diff --git a/include/qemu/qemu-plugin.h b/include/qemu/qemu-plugin.h index 5775e82c4e..807d932e02 100644 --- a/include/qemu/qemu-plugin.h +++ b/include/qemu/qemu-plugin.h @@ -405,4 +405,9 @@ int qemu_plugin_n_max_vcpus(void); */ void qemu_plugin_outs(const char *string); +QEMU_PLUGIN_EXPORT const char *qemu_plugin_path_to_binary(void); +QEMU_PLUGIN_EXPORT uint64_t qemu_plugin_start_code(void); +QEMU_PLUGIN_EXPORT uint64_t qemu_plugin_end_code(void); +QEMU_PLUGIN_EXPORT uint64_t qemu_plugin_entry_code(void); + #endif /* QEMU_PLUGIN_API_H */ diff --git a/plugins/api.c b/plugins/api.c index bbdc5a4eb4..4e8a582d58 100644 --- a/plugins/api.c +++ b/plugins/api.c @@ -340,3 +340,30 @@ void qemu_plugin_outs(const char *string) { qemu_log_mask(CPU_LOG_PLUGIN, "%s", string); } + +#ifdef CONFIG_USER_ONLY +#include "qemu.h" +const char *qemu_plugin_path_to_binary(void) +{ + TaskState *ts = (TaskState *) current_cpu->opaque; + return ts->bprm->filename; +} + +uint64_t qemu_plugin_start_code(void) +{ + TaskState *ts = (TaskState *) current_cpu->opaque; + return ts->info->start_code; +} + +uint64_t qemu_plugin_end_code(void) +{ + TaskState *ts = (TaskState *) current_cpu->opaque; + return ts->info->end_code; +} + +uint64_t qemu_plugin_entry_code(void) +{ + TaskState *ts = (TaskState *) current_cpu->opaque; + return ts->info->entry; +} +#endif diff --git a/plugins/qemu-plugins.symbols b/plugins/qemu-plugins.symbols index 4bdb381f48..021851fb7d 100644 --- a/plugins/qemu-plugins.symbols +++ b/plugins/qemu-plugins.symbols @@ -37,4 +37,8 @@ qemu_plugin_n_vcpus; qemu_plugin_n_max_vcpus; qemu_plugin_outs; + qemu_plugin_path_to_binary; + qemu_plugin_start_code; + qemu_plugin_end_code; + qemu_plugin_entry_code; };
