58 lines
1.7 KiB
C
58 lines
1.7 KiB
C
#pragma once
|
|
|
|
#include "qapi/error.h"
|
|
#include "qemu/osdep.h"
|
|
#include "qemu/interval-tree.h"
|
|
|
|
#include "exec/cpu-defs.h"
|
|
|
|
struct libafl_mapinfo {
|
|
target_ulong start;
|
|
target_ulong end;
|
|
target_ulong offset;
|
|
const char* path;
|
|
int flags;
|
|
int is_priv;
|
|
bool is_valid;
|
|
};
|
|
|
|
struct libafl_qemu_sig_ctx {
|
|
bool in_qemu_sig_hdlr; // we were inside qemu native signal handler
|
|
bool is_target_signal; // if we were in qemu signal handle, true -> is a
|
|
// propagated target signal; false -> is a host qemu
|
|
// signal.
|
|
};
|
|
|
|
extern int libafl_force_dfl;
|
|
|
|
void libafl_qemu_native_signal_handler(int host_sig, siginfo_t* info,
|
|
void* puc);
|
|
|
|
struct libafl_qemu_sig_ctx* libafl_qemu_signal_context(void);
|
|
void libafl_set_in_target_signal_ctx(void);
|
|
void libafl_set_in_host_signal_ctx(void);
|
|
void libafl_unset_in_signal_ctx(void);
|
|
|
|
void libafl_qemu_handle_crash(int host_sig, siginfo_t* info, void* puc);
|
|
|
|
IntervalTreeNode* libafl_maps_first(IntervalTreeRoot* map_info);
|
|
IntervalTreeNode* libafl_maps_next(IntervalTreeNode* pageflags_maps_node,
|
|
IntervalTreeRoot* proc_maps_node,
|
|
struct libafl_mapinfo* ret);
|
|
|
|
uint64_t libafl_load_addr(void);
|
|
struct image_info* libafl_get_image_info(void);
|
|
|
|
uint64_t libafl_get_initial_brk(void);
|
|
uint64_t libafl_get_brk(void);
|
|
uint64_t libafl_set_brk(uint64_t new_brk);
|
|
|
|
int _libafl_qemu_user_init(int argc, char** argv, char** envp);
|
|
|
|
bool libafl_get_return_on_crash(void);
|
|
void libafl_set_return_on_crash(bool return_on_crash);
|
|
|
|
#ifdef AS_LIB
|
|
void libafl_qemu_init(int argc, char** argv);
|
|
#endif
|