summaryrefslogtreecommitdiff
path: root/src/analysis/disass/disassembler.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2010-12-21 00:51:14 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2010-12-21 00:51:14 (GMT)
commitdbec8e8af5f296f0b95cd9c07e7d96b1a4277137 (patch)
tree4c5a9307bc4f0c168911e86459de5a51baaac226 /src/analysis/disass/disassembler.c
parent56deaf395c65658102ef0111cfc072d65335331a (diff)
Redefined all existing kinds of Dalvik operands in a proper way.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@203 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/analysis/disass/disassembler.c')
-rw-r--r--src/analysis/disass/disassembler.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/analysis/disass/disassembler.c b/src/analysis/disass/disassembler.c
index 4004de9..283914e 100644
--- a/src/analysis/disass/disassembler.c
+++ b/src/analysis/disass/disassembler.c
@@ -58,7 +58,7 @@ typedef struct _GDelayedDisassembly
GDelayedWork parent; /* A laisser en premier */
const GOpenidaBinary *binary; /* Destinataire final */
- const GBinFormat *format; /* Format du binaire représenté*/
+ const GExeFormat *format; /* Format du binaire représenté*/
GBinPart **parts; /* Parties binaires à traiter */
size_t count; /* Nombre de ces parties */
@@ -169,7 +169,7 @@ static GDelayedDisassembly *g_delayed_disassembly_new(const GOpenidaBinary *bina
result = g_object_new(G_TYPE_DELAYED_DISASSEMBLY, NULL);
result->binary = binary;
- result->format = G_BIN_FORMAT(g_openida_binary_get_format(binary));
+ result->format = g_openida_binary_get_format(binary);
result->parts = parts;
result->count = count;
@@ -200,8 +200,7 @@ static void g_delayed_disassembly_process(GDelayedDisassembly *disass, GtkExtSta
size_t routines_count; /* Nombre de ces routines */
guint id; /* Identifiant de statut */
- routines = g_binary_format_get_routines(disass->format, &routines_count);
- qsort(routines, routines_count, sizeof(GBinRoutine *), (__compar_fn_t)g_binary_routine_rcompare);
+ routines = g_binary_format_get_routines(G_BIN_FORMAT(disass->format), &routines_count);
/* Première étape */
@@ -224,6 +223,8 @@ static void g_delayed_disassembly_process(GDelayedDisassembly *disass, GtkExtSta
id = gtk_extended_status_bar_push(statusbar, _("Finding remaining limits..."), true);
+ qsort(routines, routines_count, sizeof(GBinRoutine *), (__compar_fn_t)g_binary_routine_rcompare);
+
limit_all_routines(disass->lines, routines, routines_count, statusbar, id);
gtk_extended_status_bar_remove(statusbar, id);
@@ -232,7 +233,10 @@ static void g_delayed_disassembly_process(GDelayedDisassembly *disass, GtkExtSta
id = gtk_extended_status_bar_push(statusbar, _("Printing disassembled code..."), true);
- print_disassembled_instructions(disass->buffer, disass->instrs, routines, routines_count);
+ qsort(routines, routines_count, sizeof(GBinRoutine *), (__compar_fn_t)g_binary_routine_compare);
+
+ print_disassembled_instructions(disass->buffer, disass->format, disass->instrs,
+ routines, routines_count);
gtk_extended_status_bar_remove(statusbar, id);