From 9f3e2399ee9b106dfbb8c3afcdfdf30e235fc88f Mon Sep 17 00:00:00 2001 From: Romain Malmain Date: Mon, 6 May 2024 18:07:38 +0200 Subject: [PATCH] QEMU host page size getter (#73) * QEMU host page size getter * Rename to sync_exit --- include/libafl/exit.h | 6 +++--- include/libafl/utils.h | 8 ++++++++ libafl/exit.c | 2 +- libafl/utils.c | 12 ++++++------ 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/include/libafl/exit.h b/include/libafl/exit.h index 9252196a72e..a302aa53c14 100644 --- a/include/libafl/exit.h +++ b/include/libafl/exit.h @@ -22,7 +22,7 @@ void libafl_qemu_trigger_breakpoint(CPUState* cpu); enum libafl_exit_reason_kind { INTERNAL = 0, BREAKPOINT = 1, - SYNC_BACKDOOR = 2, + SYNC_EXIT = 2, }; // A breakpoint has been triggered. @@ -31,7 +31,7 @@ struct libafl_exit_reason_breakpoint { }; // A synchronous exit has been triggered. -struct libafl_exit_reason_sync_backdoor { }; +struct libafl_exit_reason_sync_exit { }; // QEMU exited on its own for some reason. struct libafl_exit_reason_internal { @@ -46,7 +46,7 @@ struct libafl_exit_reason { union { struct libafl_exit_reason_internal internal; struct libafl_exit_reason_breakpoint breakpoint; // kind == BREAKPOINT - struct libafl_exit_reason_sync_backdoor backdoor; // kind == SYNC_BACKDOOR + struct libafl_exit_reason_sync_exit sync_exit; // kind == SYNC_EXIT } data; }; diff --git a/include/libafl/utils.h b/include/libafl/utils.h index 0da201fce5a..9bcc1f2ea62 100644 --- a/include/libafl/utils.h +++ b/include/libafl/utils.h @@ -2,6 +2,14 @@ #include "qemu/osdep.h" +#ifndef CONFIG_USER_ONLY +#include "exec/memory.h" +#include "qemu/rcu.h" +#include "cpu.h" +#endif + +uintptr_t libafl_qemu_host_page_size(void); + #ifndef CONFIG_USER_ONLY uint8_t* libafl_paddr2host(CPUState* cpu, hwaddr addr, bool is_write); #endif diff --git a/libafl/exit.c b/libafl/exit.c index 07cab86a411..df0ab04a092 100644 --- a/libafl/exit.c +++ b/libafl/exit.c @@ -110,7 +110,7 @@ void libafl_exit_request_internal(CPUState* cpu, uint64_t pc, ShutdownCause caus void libafl_exit_request_sync_backdoor(CPUState* cpu, target_ulong pc) { - last_exit_reason.kind = SYNC_BACKDOOR; + last_exit_reason.kind = SYNC_EXIT; prepare_qemu_exit(cpu, pc); } diff --git a/libafl/utils.c b/libafl/utils.c index 95036410cb9..281c5591cb5 100644 --- a/libafl/utils.c +++ b/libafl/utils.c @@ -1,12 +1,12 @@ #include "qemu/osdep.h" - -#ifndef CONFIG_USER_ONLY -#include "exec/memory.h" -#include "qemu/rcu.h" -#include "cpu.h" - #include "libafl/utils.h" +uintptr_t libafl_qemu_host_page_size(void) +{ + return qemu_real_host_page_size(); +} + +#ifndef CONFIG_USER_ONLY uint8_t* libafl_paddr2host(CPUState* cpu, hwaddr addr, bool is_write) { if (addr == -1) {