re-introduce native breakpoints

This commit is contained in:
Alwin Berger 2023-03-13 14:46:09 +01:00
parent c517abdcf9
commit 3f646cd636
2 changed files with 22 additions and 1 deletions

18
cpu.c
View File

@ -89,6 +89,8 @@ int libafl_qemu_num_regs(CPUState* cpu);
int libafl_qemu_set_breakpoint(target_ulong addr); int libafl_qemu_set_breakpoint(target_ulong addr);
int libafl_qemu_remove_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), size_t libafl_qemu_set_hook(target_ulong pc, void (*callback)(target_ulong, uint64_t),
uint64_t data, int invalidate); uint64_t data, int invalidate);
size_t libafl_qemu_remove_hooks_at(target_ulong addr, 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; 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), size_t libafl_qemu_set_hook(target_ulong pc, void (*callback)(target_ulong, uint64_t),
uint64_t data, int invalidate) uint64_t data, int invalidate)
{ {

View File

@ -305,7 +305,10 @@ void cpu_handle_guest_debug(CPUState *cpu)
cpu_single_step(cpu, 0); cpu_single_step(cpu, 0);
} }
} else { } 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(); qemu_system_debug_request();
cpu->stopped = true; cpu->stopped = true;
} }