diff --git a/cpu.c b/cpu.c index c34e6f7c24..fd3c2d0e52 100644 --- a/cpu.c +++ b/cpu.c @@ -89,6 +89,8 @@ int libafl_qemu_num_regs(CPUState* cpu); 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); @@ -226,6 +228,22 @@ int libafl_qemu_remove_breakpoint(target_ulong pc) return r; } +void libafl_qemu_set_native_breakpoint(vaddr pc) +{ + CPUState *cpu; + CPU_FOREACH(cpu) { + cpu_breakpoint_insert(cpu, pc, BP_GDB, NULL); + } +} + +void libafl_qemu_remove_native_breakpoint(vaddr pc) +{ + CPUState *cpu; + CPU_FOREACH(cpu) { + cpu_breakpoint_remove(cpu, pc, BP_GDB); + } +} + size_t libafl_qemu_set_hook(target_ulong pc, void (*callback)(target_ulong, uint64_t), uint64_t data, int invalidate) { diff --git a/softmmu/cpus.c b/softmmu/cpus.c index 32e789d78e..7d94ef5f3f 100644 --- a/softmmu/cpus.c +++ b/softmmu/cpus.c @@ -306,7 +306,10 @@ void cpu_handle_guest_debug(CPUState *cpu) cpu_single_step(cpu, 0); } } else { - gdb_set_stop_cpu(cpu); + /* Begin LibAFL changes */ + // With LibAFL Breakpoints there is no gdb attached. + // gdb_set_stop_cpu(cpu); + /* End LibAFL changes */ qemu_system_debug_request(); cpu->stopped = true; }