Romain Malmain 4df4d2dcfa
Add crash exit request (#106)
* add crash exit request.

* make it possible to choose between crashing methods
2025-03-14 16:57:23 +01:00

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