aboutsummaryrefslogtreecommitdiff
path: root/plugins/api.c
diff options
context:
space:
mode:
authorIvanov Arkady <arkadiy.ivanov@ispras.ru>2022-02-04 20:43:30 +0000
committerAlex Bennée <alex.bennee@linaro.org>2022-02-09 12:08:42 +0000
commit91d40327106c372760d09ffae93f91c24fcbbb6c (patch)
tree0832c3cd8e5efc3c6bd632253f37b846056767e1 /plugins/api.c
parent126d4123c50a78a99e04196126d42627911ef5b8 (diff)
downloadqemu-91d40327106c372760d09ffae93f91c24fcbbb6c.zip
qemu-91d40327106c372760d09ffae93f91c24fcbbb6c.tar.gz
qemu-91d40327106c372760d09ffae93f91c24fcbbb6c.tar.bz2
plugins: add helper functions for coverage plugins
Which provide information about: - start_code. - end_code. - entry. - path to the executable binary. Signed-off-by: Ivanov Arkady <arkadiy.ivanov@ispras.ru> Message-Id: <163491883461.304355.8210754161847179432.stgit@pc-System-Product-Name> [AJB: reword title, better descriptions, defaults, rm export, fix include] Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20220204204335.1689602-22-alex.bennee@linaro.org>
Diffstat (limited to 'plugins/api.c')
-rw-r--r--plugins/api.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/plugins/api.c b/plugins/api.c
index b143b09..91e0c70 100644
--- a/plugins/api.c
+++ b/plugins/api.c
@@ -44,6 +44,11 @@
#ifndef CONFIG_USER_ONLY
#include "qemu/plugin-memory.h"
#include "hw/boards.h"
+#else
+#include "qemu.h"
+#ifdef CONFIG_LINUX
+#include "loader.h"
+#endif
#endif
/* Uninstall and Reset handlers */
@@ -391,3 +396,46 @@ bool qemu_plugin_bool_parse(const char *name, const char *value, bool *ret)
{
return name && value && qapi_bool_parse(name, value, ret, NULL);
}
+
+/*
+ * Binary path, start and end locations
+ */
+const char *qemu_plugin_path_to_binary(void)
+{
+ char *path = NULL;
+#ifdef CONFIG_USER_ONLY
+ TaskState *ts = (TaskState *) current_cpu->opaque;
+ path = g_strdup(ts->bprm->filename);
+#endif
+ return path;
+}
+
+uint64_t qemu_plugin_start_code(void)
+{
+ uint64_t start = 0;
+#ifdef CONFIG_USER_ONLY
+ TaskState *ts = (TaskState *) current_cpu->opaque;
+ start = ts->info->start_code;
+#endif
+ return start;
+}
+
+uint64_t qemu_plugin_end_code(void)
+{
+ uint64_t end = 0;
+#ifdef CONFIG_USER_ONLY
+ TaskState *ts = (TaskState *) current_cpu->opaque;
+ end = ts->info->end_code;
+#endif
+ return end;
+}
+
+uint64_t qemu_plugin_entry_code(void)
+{
+ uint64_t entry = 0;
+#ifdef CONFIG_USER_ONLY
+ TaskState *ts = (TaskState *) current_cpu->opaque;
+ entry = ts->info->entry;
+#endif
+ return entry;
+}