diff options
Diffstat (limited to 'gitlab/issues_text/target_missing/host_missing/accel_missing/2035')
| -rw-r--r-- | gitlab/issues_text/target_missing/host_missing/accel_missing/2035 | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/gitlab/issues_text/target_missing/host_missing/accel_missing/2035 b/gitlab/issues_text/target_missing/host_missing/accel_missing/2035 deleted file mode 100644 index b6cb5ef36..000000000 --- a/gitlab/issues_text/target_missing/host_missing/accel_missing/2035 +++ /dev/null @@ -1,54 +0,0 @@ -TCG Plugin exit callback not executing -Description of problem: -I cannot get the plugin exit callback to register/execute. I should see "Goodbye from plugin" but dont. I have also tried using `qemu_plugin_outs` without success. - -**Update: If I make my test binary an infinite loop and kill it with CTRL-C, then the callback is called as expected. Am I just using it wrong?** -Steps to reproduce: -1. Configured QEMU with `--target-list=riscv32-linux-user,riscv64-linux-user --enable-plugins --disable-system` -2. Compiled plugin with -``` -gcc -I./qemu/include/qemu `pkg-config --libs glib-2.0` -O0 -fvisibility=hidden -Wall -shared -fPIC `pkg-config --cflags glib-2.0` -``` -3. Compiled test binary (just a hello world) with `riscv64-unknown-elf-gcc test_qemu.c -o test_qemu` -4. Ran ./qemu/build/qemu-riscv64 -plugin ./test_plugin.so -d plugin ./test_qemu -Additional information: -test_plugin.c -``` -#include <inttypes.h> -#include <assert.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <stdio.h> -#include <qemu-plugin.h> - -QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION; - -static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb) -{ - int n_insns = qemu_plugin_tb_n_insns(tb); - printf("> New TB of size %d\n", n_insns); - - for (int i = 0; i < n_insns; i++) { - struct qemu_plugin_insn * insn = qemu_plugin_tb_get_insn(tb, i); - char * disassembly = qemu_plugin_insn_disas(insn); - printf(" > Instruciton: %s\n", disassembly); - } -} - -static void plugin_exit(qemu_plugin_id_t id, void *p) -{ - printf("> Goodbye from plugin. %d\n", id); -} - -QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id, - const qemu_info_t *info, - int argc, char **argv) -{ - printf("> Hello From Plugin!\n"); - qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans); - qemu_plugin_register_atexit_cb(id, plugin_exit, NULL); - printf("> Everything was registered\n"); - return 0; -} -``` |