diff options
Diffstat (limited to 'tools/d2c/hooks')
| -rw-r--r-- | tools/d2c/hooks/manager.c | 10 | ||||
| -rw-r--r-- | tools/d2c/hooks/manager.h | 2 | 
2 files changed, 8 insertions, 4 deletions
| diff --git a/tools/d2c/hooks/manager.c b/tools/d2c/hooks/manager.c index 8e7ae77..67c09f8 100644 --- a/tools/d2c/hooks/manager.c +++ b/tools/d2c/hooks/manager.c @@ -134,6 +134,7 @@ void register_hook_function(instr_hooks *hooks, char *type, char *name)  /******************************************************************************  *                                                                             *  *  Paramètres  : hooks = gestionnaire d'un ensemble de fonctions associées.   * +*                top   = indique si l'écriture se réalise au plus haut niveau.*  *                fd    = descripteur d'un flux ouvert en écriture.            *  *                                                                             *  *  Description : Associe dans le code des fonctions à une instruction.        * @@ -144,7 +145,7 @@ void register_hook_function(instr_hooks *hooks, char *type, char *name)  *                                                                             *  ******************************************************************************/ -bool write_hook_functions(const instr_hooks *hooks, int fd) +bool write_hook_functions(const instr_hooks *hooks, bool top, int fd)  {      bool result;                            /* Bilan à retourner           */      size_t i;                               /* Boucle de parcours          */ @@ -156,8 +157,11 @@ bool write_hook_functions(const instr_hooks *hooks, int fd)      {          func = &hooks->funcs[i]; -        dprintf(fd, "\t\tg_arch_instruction_set_hook(instr, IPH_%s, (instr_hook_fc)%s);\n", -                func->type, func->name); +        if (!top) +            dprintf(fd, "\t"); + +        dprintf(fd, "\tg_arch_instruction_set_hook(%s, IPH_%s, (instr_hook_fc)%s);\n", +                top ? "result" : "instr", func->type, func->name);      } diff --git a/tools/d2c/hooks/manager.h b/tools/d2c/hooks/manager.h index e3d51b6..97bd388 100644 --- a/tools/d2c/hooks/manager.h +++ b/tools/d2c/hooks/manager.h @@ -44,7 +44,7 @@ void delete_instr_hooks(instr_hooks *);  void register_hook_function(instr_hooks *, char *, char *);  /* Associe dans le code des fonctions à une instruction. */ -bool write_hook_functions(const instr_hooks *, int); +bool write_hook_functions(const instr_hooks *, bool, int); | 
