Romain Malmain ee43af7f80
Run thread hooks for KVM mode (#84)
* Run thread hooks for KVM mode

* Unify qemu init function symbol for systemmode and usermode

* get tid from caller instead of callee
2024-08-21 15:36:05 +02:00

46 lines
1.1 KiB
C

#include "qemu/osdep.h"
#include "qemu.h"
#include "loader.h"
#include "libafl/user.h"
void (*libafl_dump_core_hook)(int host_sig) = NULL;
static struct image_info libafl_image_info;
extern abi_ulong target_brk, initial_target_brk;
void host_signal_handler(int host_sig, siginfo_t* info, void* puc);
void libafl_qemu_handle_crash(int host_sig, siginfo_t* info, void* puc)
{
host_signal_handler(host_sig, info, puc);
}
void libafl_dump_core_exec(int signal)
{
if (libafl_dump_core_hook) {
libafl_dump_core_hook(signal);
}
}
uint64_t libafl_load_addr(void) { return libafl_image_info.load_addr; }
struct image_info* libafl_get_image_info(void) { return &libafl_image_info; }
uint64_t libafl_get_brk(void) { return (uint64_t)target_brk; }
uint64_t libafl_set_brk(uint64_t new_brk)
{
uint64_t old_brk = (uint64_t)target_brk;
target_brk = (abi_ulong)new_brk;
return old_brk;
}
#ifdef AS_LIB
void libafl_qemu_init(int argc, char** argv)
{
// main function in usermode has an env parameter but is unused in practice.
_libafl_qemu_user_init(argc, argv, NULL);
}
#endif