diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2017-05-16 21:56:55 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2017-05-16 21:56:55 (GMT) |
commit | 4691a434a34a19317156a761967f719e408b73bb (patch) | |
tree | 1daaf5be5d4a9f52d492380c2862580129d2ad12 /src/gtkext | |
parent | 1996274a43883aa58e8c565f7698bc7c338a9ce0 (diff) |
Merged routines into symbols.
Diffstat (limited to 'src/gtkext')
-rw-r--r-- | src/gtkext/gtkgraphdisplay.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/gtkext/gtkgraphdisplay.c b/src/gtkext/gtkgraphdisplay.c index 8139b3a..ee3853f 100644 --- a/src/gtkext/gtkgraphdisplay.c +++ b/src/gtkext/gtkgraphdisplay.c @@ -31,6 +31,7 @@ #include "gtkbufferdisplay.h" #include "gtkdisplaypanel-int.h" #include "graph/cluster.h" +#include "../analysis/routine.h" #include "../format/format.h" #include "../gui/editem.h" @@ -615,6 +616,7 @@ static void gtk_graph_display_define_main_address(GtkGraphDisplay *display, cons GExeFormat *format; /* Type de fichier chargé */ GBinSymbol *symbol; /* Symbole présent à l'adresse */ bool found; /* Bilan des recherches */ + SymbolType type; /* Type de symbole rencontré */ GBlockList *list; /* Liste de blocs basiques */ gint right; /* Abscisse du coin droit */ gint bottom; /* Ordonnée du coin inférieur */ @@ -639,15 +641,17 @@ static void gtk_graph_display_define_main_address(GtkGraphDisplay *display, cons if (!found) goto ggddma_done; - if (g_binary_symbol_get_routine(symbol) == NULL) - goto ggddma_done; + type = g_binary_symbol_get_target_type(symbol); + + if (type != STP_ROUTINE && type != STP_ENTRY_POINT) + goto ggddma_bad_type; display->routine = symbol; g_object_ref(G_OBJECT(symbol)); display->highlighted = init_segment_content_list(); - list = g_binary_routine_get_basic_blocks(g_binary_symbol_get_routine(symbol)); + list = g_binary_routine_get_basic_blocks(G_BIN_ROUTINE(symbol)); display->cluster = bootstrap_graph_cluster(GTK_DISPLAY_PANEL(display)->binary, list, display->highlighted); @@ -673,6 +677,10 @@ static void gtk_graph_display_define_main_address(GtkGraphDisplay *display, cons gtk_graph_display_update_support_margins(display, &allocation); + ggddma_bad_type: + + g_object_unref(G_OBJECT(symbol)); + ggddma_done: change_editor_items_current_view_content(GTK_DISPLAY_PANEL(display)); |