59 lines
3.4 KiB
C
59 lines
3.4 KiB
C
#pragma once
|
|
|
|
#include "qemu/osdep.h"
|
|
#include "qapi/error.h"
|
|
|
|
#include "tcg/tcg-op.h"
|
|
#include "tcg/tcg-internal.h"
|
|
#include "tcg/tcg-temp-internal.h"
|
|
|
|
#define LIBAFL_MAX_INSNS 16
|
|
|
|
#define GEN_REMOVE_HOOK(name) \
|
|
int libafl_qemu_remove_##name##_hook(size_t num, int invalidate) \
|
|
{ \
|
|
CPUState* cpu; \
|
|
struct libafl_##name##_hook** hk = &libafl_##name##_hooks; \
|
|
\
|
|
while (*hk) { \
|
|
if ((*hk)->num == num) { \
|
|
if (invalidate) { \
|
|
CPU_FOREACH(cpu) { tb_flush(cpu); } \
|
|
} \
|
|
\
|
|
void* tmp = *hk; \
|
|
*hk = (*hk)->next; \
|
|
free(tmp); \
|
|
return 1; \
|
|
} else { \
|
|
hk = &(*hk)->next; \
|
|
} \
|
|
} \
|
|
\
|
|
return 0; \
|
|
}
|
|
|
|
#define GEN_REMOVE_HOOK1(name) \
|
|
int libafl_qemu_remove_##name##_hook(size_t num) \
|
|
{ \
|
|
struct libafl_##name##_hook** hk = &libafl_##name##_hooks; \
|
|
\
|
|
while (*hk) { \
|
|
if ((*hk)->num == num) { \
|
|
void* tmp = *hk; \
|
|
*hk = (*hk)->next; \
|
|
free(tmp); \
|
|
return 1; \
|
|
} else { \
|
|
hk = &(*hk)->next; \
|
|
} \
|
|
} \
|
|
\
|
|
return 0; \
|
|
}
|
|
|
|
// TODO: cleanup this
|
|
extern tcg_target_ulong libafl_gen_cur_pc;
|
|
|
|
void libafl_tcg_gen_asan(TCGTemp* addr, size_t size);
|