22
33#include "qemu/osdep.h"
44
5- #include "qapi/error.h"
6-
7- #include "exec/exec-all.h"
8- #include "exec/tb-flush.h"
9-
105#include "libafl/exit.h"
116#include "libafl/hook.h"
127
1712#define LIBAFL_TABLES_HASH (p ) \
1813 (((13 * ((size_t)(p))) ^ (((size_t)(p)) >> 15)) % LIBAFL_TABLES_SIZE)
1914
15+ typedef uint64_t (* libafl_rw_gen_cb )(uint64_t data , target_ulong pc ,
16+ TCGTemp * addr , MemOpIdx oi );
17+ typedef void (* libafl_rw_exec_cb )(uint64_t data , uint64_t id , target_ulong pc ,
18+ target_ulong addr );
19+ typedef void (* libafl_rw_execN_cb )(uint64_t data , uint64_t id , target_ulong pc ,
20+ target_ulong addr , size_t size );
21+
2022struct libafl_rw_hook {
2123 // functions
22- uint64_t ( * gen )( uint64_t data , target_ulong pc , TCGTemp * addr , MemOpIdx oi ) ;
24+ libafl_rw_gen_cb gen ;
2325
2426 // data
2527 uint64_t data ;
@@ -36,25 +38,18 @@ struct libafl_rw_hook {
3638 struct libafl_rw_hook * next ;
3739};
3840
39- void libafl_gen_read (TCGTemp * addr , MemOpIdx oi );
40- void libafl_gen_write (TCGTemp * addr , MemOpIdx oi );
41-
42- size_t libafl_add_read_hook (
43- uint64_t (* gen )(uint64_t data , target_ulong pc , TCGTemp * addr , MemOpIdx oi ),
44- void (* exec1 )(uint64_t data , uint64_t id , target_ulong addr ),
45- void (* exec2 )(uint64_t data , uint64_t id , target_ulong addr ),
46- void (* exec4 )(uint64_t data , uint64_t id , target_ulong addr ),
47- void (* exec8 )(uint64_t data , uint64_t id , target_ulong addr ),
48- void (* execN )(uint64_t data , uint64_t id , target_ulong addr , size_t size ),
49- uint64_t data );
50- size_t libafl_add_write_hook (
51- uint64_t (* gen )(uint64_t data , target_ulong pc , TCGTemp * addr , MemOpIdx oi ),
52- void (* exec1 )(uint64_t data , uint64_t id , target_ulong addr ),
53- void (* exec2 )(uint64_t data , uint64_t id , target_ulong addr ),
54- void (* exec4 )(uint64_t data , uint64_t id , target_ulong addr ),
55- void (* exec8 )(uint64_t data , uint64_t id , target_ulong addr ),
56- void (* execN )(uint64_t data , uint64_t id , target_ulong addr , size_t size ),
57- uint64_t data );
41+ void libafl_gen_read (TCGTemp * pc , TCGTemp * addr , MemOpIdx oi );
42+ void libafl_gen_write (TCGTemp * pc , TCGTemp * addr , MemOpIdx oi );
43+
44+ size_t libafl_add_read_hook (libafl_rw_gen_cb gen , libafl_rw_exec_cb exec1 ,
45+ libafl_rw_exec_cb exec2 , libafl_rw_exec_cb exec4 ,
46+ libafl_rw_exec_cb exec8 , libafl_rw_execN_cb execN ,
47+ uint64_t data );
48+
49+ size_t libafl_add_write_hook (libafl_rw_gen_cb gen , libafl_rw_exec_cb exec1 ,
50+ libafl_rw_exec_cb exec2 , libafl_rw_exec_cb exec4 ,
51+ libafl_rw_exec_cb exec8 , libafl_rw_execN_cb execN ,
52+ uint64_t data );
5853
5954int libafl_qemu_remove_read_hook (size_t num , int invalidate );
6055int libafl_qemu_remove_write_hook (size_t num , int invalidate );
0 commit comments