summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorTheofilos Augoustis <theofilos.augoustis@gmail.com>2025-10-09 09:43:57 +0000
committerTheofilos Augoustis <theofilos.augoustis@gmail.com>2025-10-09 09:43:57 +0000
commita54db0de392782ff4ea5c4b2a9135a1549c8f52f (patch)
tree9b9b7170db5023e58d77e9da2d181448a4adf849
parentf3cc94506f7e7d23cbe5f53548df7265a2f6effb (diff)
downloadfocaccia-qemu-a54db0de392782ff4ea5c4b2a9135a1549c8f52f.tar.gz
focaccia-qemu-a54db0de392782ff4ea5c4b2a9135a1549c8f52f.zip
Update Focaccia plugin to execute every time that a translation executes
-rw-r--r--contrib/plugins/focaccia.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/contrib/plugins/focaccia.c b/contrib/plugins/focaccia.c
index 87ce38d431..46af9dd406 100644
--- a/contrib/plugins/focaccia.c
+++ b/contrib/plugins/focaccia.c
@@ -11,12 +11,18 @@ static void plugin_exit(qemu_plugin_id_t id, void* p) {
     printf("Plugin has completed!\n");
 }
 
+static void concolic_trace(unsigned int cpu_index, void *udata) {
+    printf("Translation executed on CPU %u\n", cpu_index);
+}
+
+static void register_tracer(qemu_plugin_id_t id, struct qemu_plugin_tb *tb) {
+    qemu_plugin_register_vcpu_tb_exec_cb(tb, concolic_trace,
+                                         QEMU_PLUGIN_CB_R_REGS, NULL);
+}
+
 // argc and argv correspond to the arguments passed via -plugin focaccia.so,arg1=<arg1>,arg2=<arg2>
-QEMU_PLUGIN_EXPORT 
-int qemu_plugin_install(qemu_plugin_id_t id,
-                        const qemu_info_t *info,
-                        int argc, char **argv)
-{
+QEMU_PLUGIN_EXPORT
+int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info, int argc, char **argv) {
     int i;
 
     // Process plugin arguments
@@ -27,6 +33,7 @@ int qemu_plugin_install(qemu_plugin_id_t id,
 
     plugin_init();
 
+    qemu_plugin_register_vcpu_tb_trans_cb(id, register_tracer);
     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
     return 0;
 }