From 19f046ef6a5d8546eb0d27b598291b88631468e4 Mon Sep 17 00:00:00 2001 From: Alwin Berger Date: Thu, 4 Jan 2024 12:14:15 +0100 Subject: [PATCH] fix build --- cpu-target.c | 125 ------------------------------------------ hw/intc/armv7m_nvic.c | 11 ++-- 2 files changed, 6 insertions(+), 130 deletions(-) diff --git a/cpu-target.c b/cpu-target.c index d82b61625b..ade24196d5 100644 --- a/cpu-target.c +++ b/cpu-target.c @@ -62,16 +62,8 @@ int libafl_qemu_read_reg(CPUState* cpu, int reg, uint8_t* val); int libafl_qemu_num_regs(CPUState* cpu); //// --- Begin LibAFL code --- -int libafl_qemu_set_breakpoint(target_ulong addr); -int libafl_qemu_remove_breakpoint(target_ulong addr); void libafl_qemu_set_native_breakpoint( vaddr ); void libafl_qemu_remove_native_breakpoint( vaddr ); -size_t libafl_qemu_set_hook(target_ulong pc, void (*callback)(target_ulong, uint64_t), - uint64_t data, int invalidate); -size_t libafl_qemu_remove_hooks_at(target_ulong addr, int invalidate); -int libafl_qemu_remove_hook(size_t num, int invalidate); -struct libafl_hook* libafl_search_hook(target_ulong addr); -void libafl_flush_jit(void); #ifndef CONFIG_USER_ONLY hwaddr libafl_qemu_current_paging_id(CPUState* cpu); @@ -185,27 +177,6 @@ hwaddr libafl_qemu_current_paging_id(CPUState* cpu) } #endif -int libafl_qemu_remove_breakpoint(target_ulong pc) -{ - CPUState *cpu; - int r = 0; - - struct libafl_breakpoint** bp = &libafl_qemu_breakpoints; - while (*bp) { - if ((*bp)->addr == pc) { - CPU_FOREACH(cpu) { - libafl_breakpoint_invalidate(cpu, pc); - } - - *bp = (*bp)->next; - r = 1; - } else { - bp = &(*bp)->next; - } - } - return r; -} - void libafl_qemu_set_native_breakpoint(vaddr pc) { CPUState *cpu; @@ -222,102 +193,6 @@ void libafl_qemu_remove_native_breakpoint(vaddr pc) } } -size_t libafl_qemu_set_hook(target_ulong pc, void (*callback)(target_ulong, uint64_t), - uint64_t data, int invalidate) -{ - CPUState *cpu; - - if (invalidate) { - CPU_FOREACH(cpu) { - libafl_breakpoint_invalidate(cpu, pc); - } - } - - size_t idx = LIBAFL_TABLES_HASH(pc); - - struct libafl_hook* hk = calloc(sizeof(struct libafl_hook), 1); - hk->addr = pc; - hk->callback = callback; - hk->data = data; - hk->helper_info.func = callback; - hk->helper_info.name = "libafl_hook"; - hk->helper_info.flags = dh_callflag(void); - hk->helper_info.typemask = dh_typemask(void, 0) | dh_typemask(tl, 1) | dh_typemask(i64, 2); - hk->num = libafl_qemu_hooks_num++; - hk->next = libafl_qemu_hooks[idx]; - libafl_qemu_hooks[idx] = hk; - return hk->num; -} - -size_t libafl_qemu_remove_hooks_at(target_ulong addr, int invalidate) -{ - CPUState *cpu; - size_t r = 0; - - size_t idx = LIBAFL_TABLES_HASH(addr); - struct libafl_hook** hk = &libafl_qemu_hooks[idx]; - while (*hk) { - if ((*hk)->addr == addr) { - if (invalidate) { - CPU_FOREACH(cpu) { - libafl_breakpoint_invalidate(cpu, addr); - } - } - - void *tmp = *hk; - *hk = (*hk)->next; - free(tmp); - r++; - } else { - hk = &(*hk)->next; - } - } - return r; -} - -int libafl_qemu_remove_hook(size_t num, int invalidate) -{ - CPUState *cpu; - size_t idx; - - for (idx = 0; idx < LIBAFL_TABLES_SIZE; ++idx) { - struct libafl_hook** hk = &libafl_qemu_hooks[idx]; - while (*hk) { - if ((*hk)->num == num) { - if (invalidate) { - CPU_FOREACH(cpu) { - libafl_breakpoint_invalidate(cpu, (*hk)->addr); - } - } - - void *tmp = *hk; - *hk = (*hk)->next; - free(tmp); - return 1; - } else { - hk = &(*hk)->next; - } - } - } - return 0; -} - -struct libafl_hook* libafl_search_hook(target_ulong addr) -{ - size_t idx = LIBAFL_TABLES_HASH(addr); - - struct libafl_hook* hk = libafl_qemu_hooks[idx]; - while (hk) { - if (hk->addr == addr) { - return hk; - } - hk = hk->next; - } - - return NULL; -} -//// --- End LibAFL code --- - void libafl_flush_jit(void) { CPUState *cpu; diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c index 1bb825efad..b32776d4c0 100644 --- a/hw/intc/armv7m_nvic.c +++ b/hw/intc/armv7m_nvic.c @@ -2738,20 +2738,21 @@ type_init(armv7m_nvic_register_types) /* Begin LibAFL instrumentation */ #include "qemu/main-loop.h" +#include "include/qom/object.h" void libafl_send_irq(int irqn); void libafl_send_irq(int irqn) { bool haslock = qemu_mutex_iothread_locked(); if (!haslock) { qemu_mutex_lock_iothread(); } - CPUState *cpu; - CPU_FOREACH(cpu) { - CPUARMState* env = cpu->env_ptr; - NVICState* nvic = env->nvic; + // CPUState *cpu; + //CPU_FOREACH(cpu) { + //CPUARMState* env = cpu->env_ptr; + NVICState* nvic = (NVICState*)object_resolve_path("/machine/armv7m/nvic", 0); // set_irq_level(nvic, irqn, 1); // set_irq_level(nvic, irqn, 0); armv7m_nvic_set_pending(nvic, irqn+16, false); - } + //} if (!haslock) { qemu_mutex_unlock_iothread(); }