Fallback on start cpustate when current_cpu is null
This commit is contained in:
parent
78936b7cc7
commit
048ae77625
11
cpu.c
11
cpu.c
@ -63,6 +63,8 @@ struct libafl_hook {
|
|||||||
|
|
||||||
struct libafl_hook* libafl_qemu_hooks = NULL;
|
struct libafl_hook* libafl_qemu_hooks = NULL;
|
||||||
|
|
||||||
|
CPUArchState *libafl_qemu_env;
|
||||||
|
|
||||||
void libafl_helper_table_add(TCGHelperInfo* info);
|
void libafl_helper_table_add(TCGHelperInfo* info);
|
||||||
|
|
||||||
static GByteArray *libafl_qemu_mem_buf = NULL;
|
static GByteArray *libafl_qemu_mem_buf = NULL;
|
||||||
@ -78,9 +80,12 @@ int libafl_qemu_remove_hook(uint64_t addr);
|
|||||||
int libafl_qemu_write_reg(int reg, uint8_t* val)
|
int libafl_qemu_write_reg(int reg, uint8_t* val)
|
||||||
{
|
{
|
||||||
CPUState *cpu = current_cpu;
|
CPUState *cpu = current_cpu;
|
||||||
|
if (!cpu) {
|
||||||
|
cpu = env_cpu(libafl_qemu_env);
|
||||||
if (!cpu) {
|
if (!cpu) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
if (reg < cc->gdb_num_core_regs) {
|
if (reg < cc->gdb_num_core_regs) {
|
||||||
@ -92,9 +97,12 @@ int libafl_qemu_write_reg(int reg, uint8_t* val)
|
|||||||
int libafl_qemu_read_reg(int reg, uint8_t* val)
|
int libafl_qemu_read_reg(int reg, uint8_t* val)
|
||||||
{
|
{
|
||||||
CPUState *cpu = current_cpu;
|
CPUState *cpu = current_cpu;
|
||||||
|
if (!cpu) {
|
||||||
|
cpu = env_cpu(libafl_qemu_env);
|
||||||
if (!cpu) {
|
if (!cpu) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (libafl_qemu_mem_buf == NULL) {
|
if (libafl_qemu_mem_buf == NULL) {
|
||||||
libafl_qemu_mem_buf = g_byte_array_sized_new(64);
|
libafl_qemu_mem_buf = g_byte_array_sized_new(64);
|
||||||
@ -115,9 +123,12 @@ int libafl_qemu_read_reg(int reg, uint8_t* val)
|
|||||||
int libafl_qemu_num_regs(void)
|
int libafl_qemu_num_regs(void)
|
||||||
{
|
{
|
||||||
CPUState *cpu = current_cpu;
|
CPUState *cpu = current_cpu;
|
||||||
|
if (!cpu) {
|
||||||
|
cpu = env_cpu(libafl_qemu_env);
|
||||||
if (!cpu) {
|
if (!cpu) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
return cc->gdb_num_core_regs;
|
return cc->gdb_num_core_regs;
|
||||||
|
@ -630,7 +630,7 @@ uint64_t libafl_load_addr(void);
|
|||||||
int libafl_qemu_main(void);
|
int libafl_qemu_main(void);
|
||||||
int libafl_qemu_run(void);
|
int libafl_qemu_run(void);
|
||||||
|
|
||||||
static CPUArchState *libafl_qemu_env;
|
extern CPUArchState *libafl_qemu_env;
|
||||||
|
|
||||||
struct image_info libafl_image_info;
|
struct image_info libafl_image_info;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user