11#include "libafl/tcg.h"
22#include "libafl/hooks/tcg/block.h"
33
4- struct libafl_block_hook * libafl_block_hooks ;
5- size_t libafl_block_hooks_num = 0 ;
4+ static struct libafl_block_hook * libafl_block_hooks ;
5+ static size_t libafl_block_hooks_num = 0 ;
66
77static TCGHelperInfo libafl_exec_block_hook_info = {
88 .func = NULL ,
@@ -13,68 +13,64 @@ static TCGHelperInfo libafl_exec_block_hook_info = {
1313
1414GEN_REMOVE_HOOK (block )
1515
16- size_t libafl_add_block_hook (uint64_t (* gen )(uint64_t data , target_ulong pc ),
17- void (* post_gen )(uint64_t data , target_ulong pc ,
18- target_ulong block_length ),
19- void (* exec )(uint64_t data , uint64_t id ),
20- uint64_t data )
16+ size_t libafl_add_block_hook (libafl_block_pre_gen_cb pre_gen_cb ,
17+ libafl_block_post_gen_cb post_gen_cb ,
18+ libafl_block_exec_cb exec_cb , uint64_t data )
2119{
2220 CPUState * cpu ;
2321 CPU_FOREACH (cpu ) { tb_flush (cpu ); }
2422
2523 struct libafl_block_hook * hook =
2624 calloc (sizeof (struct libafl_block_hook ), 1 );
27- hook -> gen = gen ;
28- hook -> post_gen = post_gen ;
29- // hook->exec = exec;
25+ hook -> pre_gen_cb = pre_gen_cb ;
26+ hook -> post_gen_cb = post_gen_cb ;
3027 hook -> data = data ;
3128 hook -> num = libafl_block_hooks_num ++ ;
3229 hook -> next = libafl_block_hooks ;
3330 libafl_block_hooks = hook ;
3431
35- if (exec ) {
32+ if (exec_cb ) {
3633 memcpy (& hook -> helper_info , & libafl_exec_block_hook_info ,
3734 sizeof (TCGHelperInfo ));
38- hook -> helper_info .func = exec ;
35+ hook -> helper_info .func = exec_cb ;
3936 }
4037
4138 return hook -> num ;
4239}
4340
44- bool libafl_qemu_block_hook_set_jit (size_t num ,
45- size_t (* jit )(uint64_t data , uint64_t id ))
41+ bool libafl_qemu_block_hook_set_jit (size_t num , libafl_block_jit_cb jit_cb )
4642{
4743 struct libafl_block_hook * hk = libafl_block_hooks ;
4844 while (hk ) {
4945 if (hk -> num == num ) {
50- hk -> jit = jit ;
46+ hk -> jit_cb = jit_cb ;
5147 return true;
52- } else {
53- hk = hk -> next ;
5448 }
49+
50+ hk = hk -> next ;
5551 }
5652 return false;
5753}
5854
59- void libafl_qemu_hook_block_post_gen (TranslationBlock * tb , vaddr pc )
55+ void libafl_qemu_hook_block_post_run (TranslationBlock * tb , vaddr pc )
6056{
6157 struct libafl_block_hook * hook = libafl_block_hooks ;
6258 while (hook ) {
63- if (hook -> post_gen )
64- hook -> post_gen (hook -> data , pc , tb -> size );
59+ if (hook -> post_gen_cb )
60+ hook -> post_gen_cb (hook -> data , pc , tb -> size );
6561 hook = hook -> next ;
6662 }
6763}
6864
69- void libafl_qemu_hook_block_run (target_ulong pc )
65+ void libafl_qemu_hook_block_pre_run (target_ulong pc )
7066{
7167 struct libafl_block_hook * hook = libafl_block_hooks ;
7268
7369 while (hook ) {
7470 uint64_t cur_id = 0 ;
7571
76- if (hook -> gen ) {
77- cur_id = hook -> gen (hook -> data , pc );
72+ if (hook -> pre_gen_cb ) {
73+ cur_id = hook -> pre_gen_cb (hook -> data , pc );
7874 }
7975
8076 if (cur_id != (uint64_t )-1 && hook -> helper_info .func ) {
@@ -87,8 +83,8 @@ void libafl_qemu_hook_block_run(target_ulong pc)
8783 tcg_temp_free_i64 (tmp1 );
8884 }
8985
90- if (cur_id != (uint64_t )-1 && hook -> jit ) {
91- hook -> jit (hook -> data , cur_id );
86+ if (cur_id != (uint64_t )-1 && hook -> jit_cb ) {
87+ hook -> jit_cb (hook -> data , cur_id );
9288 }
9389
9490 hook = hook -> next ;
0 commit comments