
* Run thread hooks for KVM mode * Unify qemu init function symbol for systemmode and usermode * get tid from caller instead of callee
46 lines
1.1 KiB
C
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
|