summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/instruction-int.h2
-rw-r--r--src/arch/instruction.c8
-rw-r--r--src/arch/instruction.h2
3 files changed, 5 insertions, 7 deletions
diff --git a/src/arch/instruction-int.h b/src/arch/instruction-int.h
index dca63e7..8eb6b68 100644
--- a/src/arch/instruction-int.h
+++ b/src/arch/instruction-int.h
@@ -63,7 +63,7 @@ struct _GArchInstruction
phys_t max_displayed_len; /* Quantité de code affichée */
ArchInstrFlag flags; /* Informations complémentaires*/
- instr_hook_fc hooks[IPH_COUNT]; /* Traitements complémentaires */
+ const instr_hook_fc *hooks; /* Traitements complémentaires */
mrange_t range; /* Emplacement en mémoire */
diff --git a/src/arch/instruction.c b/src/arch/instruction.c
index 8264f5b..4c0fdb9 100644
--- a/src/arch/instruction.c
+++ b/src/arch/instruction.c
@@ -281,11 +281,9 @@ ArchInstrFlag g_arch_instruction_get_flags(const GArchInstruction *instr)
* *
******************************************************************************/
-void g_arch_instruction_set_hook(GArchInstruction *instr, InstrProcessHook type, instr_hook_fc hook)
+void g_arch_instruction_set_hooks(GArchInstruction *instr, const instr_hook_fc hooks[IPH_COUNT])
{
- assert(type < IPH_COUNT);
-
- instr->hooks[type] = hook;
+ instr->hooks = hooks;
}
@@ -310,7 +308,7 @@ void g_arch_instruction_call_hook(GArchInstruction *instr, InstrProcessHook type
{
assert(type < IPH_COUNT);
- if (instr->hooks[type] != NULL)
+ if (instr->hooks != NULL && instr->hooks[type] != NULL)
instr->hooks[type](instr, proc, context, format);
}
diff --git a/src/arch/instruction.h b/src/arch/instruction.h
index e902849..93dfa52 100644
--- a/src/arch/instruction.h
+++ b/src/arch/instruction.h
@@ -117,7 +117,7 @@ typedef enum _InstrProcessHook
typedef void (* instr_hook_fc) (GArchInstruction *, GArchProcessor *, GProcContext *, GBinFormat *);
/* Définit un traitement complémentare au désassemblage. */
-void g_arch_instruction_set_hook(GArchInstruction *, InstrProcessHook, instr_hook_fc);
+void g_arch_instruction_set_hooks(GArchInstruction *, const instr_hook_fc [IPH_COUNT]);
/* Complète un désassemblage accompli pour une instruction. */
void g_arch_instruction_call_hook(GArchInstruction *, InstrProcessHook, GArchProcessor *, GProcContext *, GBinFormat *);