summaryrefslogtreecommitdiff
path: root/src/format/executable.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/format/executable.c')
-rw-r--r--src/format/executable.c31
1 files changed, 28 insertions, 3 deletions
diff --git a/src/format/executable.c b/src/format/executable.c
index e70840b..fcc0acd 100644
--- a/src/format/executable.c
+++ b/src/format/executable.c
@@ -33,6 +33,7 @@
#include "executable-int.h"
#include "format.h"
#include "../core/logs.h"
+#include "../plugins/pglist.h"
@@ -326,6 +327,7 @@ void g_executable_format_setup_portions(GExeFormat *format, GtkStatusStack *stat
/******************************************************************************
* *
* Paramètres : format = instance à traiter. *
+* gid = groupe de travail dédié. *
* status = barre de statut à tenir informée. *
* *
* Description : Effectue les ultimes opérations de chargement d'un binaire. *
@@ -336,14 +338,37 @@ void g_executable_format_setup_portions(GExeFormat *format, GtkStatusStack *stat
* *
******************************************************************************/
-bool g_executable_format_complete_loading(GExeFormat *format, GtkStatusStack *status)
+bool g_executable_format_complete_loading(GExeFormat *format, wgroup_id_t gid, GtkStatusStack *status)
{
bool result; /* Bilan à faire remonter */
+ size_t count; /* Qté d'infos supplémentaires */
+ size_t i; /* Boucle de parcours */
+ GDbgFormat *dbg; /* Informations de débogage */
GBinFormat *base; /* Version basique du format */
- base = G_BIN_FORMAT(format);
+ result = true;
+
+ attach_debug_format(format);
+
+ count = g_exe_format_count_debug_info(format);
+
+ for (i = 0; i < count && result; i++)
+ {
+ dbg = g_exe_format_get_debug_info(format, i);
+
+ result = g_binary_format_analyze(G_BIN_FORMAT(dbg), gid, status);
+
+ g_object_unref(G_OBJECT(dbg));
- result = g_binary_format_complete_loading(base, status);
+ }
+
+ if (result)
+ {
+ base = G_BIN_FORMAT(format);
+
+ result = g_binary_format_complete_loading(base, status);
+
+ }
return result;