summaryrefslogtreecommitdiff
path: root/src/analysis/disass/fetch.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/disass/fetch.c')
-rw-r--r--src/analysis/disass/fetch.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/analysis/disass/fetch.c b/src/analysis/disass/fetch.c
index c5489d6..586c084 100644
--- a/src/analysis/disass/fetch.c
+++ b/src/analysis/disass/fetch.c
@@ -417,8 +417,6 @@ GArchInstruction **disassemble_binary_content(GLoadedBinary *binary, GProcContex
template.areas = collect_memory_areas(gid, status, binary, length, &template.count);
- populate_fresh_memory_areas(gid, status, template.areas, template.count, G_PRELOAD_INFO(ctx));
-
template.status = status;
/* Amorce des traitements */
@@ -432,7 +430,17 @@ GArchInstruction **disassemble_binary_content(GLoadedBinary *binary, GProcContex
g_proc_context_attach_counter(template.ctx, &remaining_counter);
/**
- * Première phase de désassemblage : suivi des chemins tracés.
+ * Première phase de désassemblage : intégration des infos du format.
+ */
+
+ g_binary_format_preload_disassembling_context(format, template.ctx, status);
+
+ populate_fresh_memory_areas(gid, status, template.areas, template.count, G_PRELOAD_INFO(ctx));
+
+ g_work_queue_wait_for_completion(queue, gid);
+
+ /**
+ * Seconde phase : suivi des chemins tracés.
*/
g_work_queue_set_extra_wait_callback(queue, gid,
@@ -445,12 +453,12 @@ GArchInstruction **disassemble_binary_content(GLoadedBinary *binary, GProcContex
_("Disassembling following the execution flow..."),
length);
- g_binary_format_setup_disassembling_context(format, template.ctx, status);
+ g_binary_format_activate_disassembling_context(format, template.ctx, status);
g_work_queue_wait_for_completion(queue, gid);
/**
- * Seconde phase : on comble les trous laissés.
+ * Troisième phase : on comble les trous laissés.
*/
gtk_status_stack_update_activity(status, template.id, _("Disassembling the remaining instructions..."));
@@ -466,7 +474,7 @@ GArchInstruction **disassemble_binary_content(GLoadedBinary *binary, GProcContex
gtk_status_stack_remove_activity(status, template.id);
/**
- * Troisième et dernière phase : récolte des fruits.
+ * Quatrième et dernière phase : récolte des fruits.
*/
result = collect_disassembled_instructions(gid, status, template.areas, template.count, count);