diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2015-08-12 19:05:31 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2015-08-12 19:05:31 (GMT) |
commit | 4b2f65ed2125cd7b6ef598cf02738f6c839d8935 (patch) | |
tree | de62e9daaafe63248c45202004758e91b7341cc5 /plugins/mobicore | |
parent | b5c6bcea25b1b840fd6c8e89a4a3c9fbd83ba84b (diff) |
Extended the loading process of binary formats to prepare the DWARF support.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@568 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'plugins/mobicore')
-rw-r--r-- | plugins/mobicore/mclf.c | 17 | ||||
-rw-r--r-- | plugins/mobicore/mclf.h | 5 | ||||
-rw-r--r-- | plugins/mobicore/mobicore.c | 8 |
3 files changed, 17 insertions, 13 deletions
diff --git a/plugins/mobicore/mclf.c b/plugins/mobicore/mclf.c index 245508f..829a488 100644 --- a/plugins/mobicore/mclf.c +++ b/plugins/mobicore/mclf.c @@ -55,26 +55,30 @@ static void g_mclf_format_refine_portions(const GMCLFFormat *, GBinPortion *); /****************************************************************************** * * * Paramètres : content = contenu binaire à parcourir. * +* parent = éventuel format exécutable déjà chargé. * * * * Description : Indique si le format peut être pris en charge ici. * * * -* Retour : true si la réponse est positive, false sinon. * +* Retour : Désignation du format reconnu ou NULL si aucun. * * * * Remarques : - * * * ******************************************************************************/ -bool mclf_is_matching(GBinContent *content) +const char *mclf_is_matching(GBinContent *content, GExeFormat *parent) { - bool result; /* Bilan à faire connaître */ + const char *result; /* Format détecté à renvoyer */ vmpa2t addr; /* Tête de lecture initiale */ + bool status; /* Bilan des accès mémoire */ char magic[4]; /* Idenfiant standard */ init_vmpa(&addr, 0, VMPA_NO_VIRTUAL); - result = g_binary_content_get_raw(content, &addr, 4, (bin_t *)magic); + status = g_binary_content_get_raw(content, &addr, 4, (bin_t *)magic); - result &= (memcmp(magic, MC_SERVICE_HEADER_MAGIC_STR, 4) == 0); + status &= (memcmp(magic, MC_SERVICE_HEADER_MAGIC_STR, 4) == 0); + + result = status ? "mclf" : NULL; return result; @@ -130,6 +134,7 @@ static void g_mclf_format_init(GMCLFFormat *format) /****************************************************************************** * * * Paramètres : content = contenu binaire à parcourir. * +* parent = éventuel format exécutable déjà chargé. * * * * Description : Prend en charge un nouveau format MCLF. * * * @@ -139,7 +144,7 @@ static void g_mclf_format_init(GMCLFFormat *format) * * ******************************************************************************/ -GBinFormat *g_mclf_format_new(GBinContent *content) +GBinFormat *g_mclf_format_new(GBinContent *content, GExeFormat *parent) { GMCLFFormat *result; /* Structure à retourner */ diff --git a/plugins/mobicore/mclf.h b/plugins/mobicore/mclf.h index c2752b8..5ac0926 100644 --- a/plugins/mobicore/mclf.h +++ b/plugins/mobicore/mclf.h @@ -30,6 +30,7 @@ #include <sys/types.h> +#include <format/executable.h> #include <format/format.h> @@ -50,13 +51,13 @@ typedef struct _GMCLFFormatClass GMCLFFormatClass; /* Indique si le format peut être pris en charge ici. */ -bool mclf_is_matching(GBinContent *); +const char *mclf_is_matching(GBinContent *, GExeFormat *); /* Indique le type défini pour un format d'exécutable MCLF. */ GType g_mclf_format_get_type(void); /* Prend en charge un nouveau format MCLF. */ -GBinFormat *g_mclf_format_new(GBinContent *); +GBinFormat *g_mclf_format_new(GBinContent *, GExeFormat *); diff --git a/plugins/mobicore/mobicore.c b/plugins/mobicore/mobicore.c index 15bc0a1..087297b 100644 --- a/plugins/mobicore/mobicore.c +++ b/plugins/mobicore/mobicore.c @@ -54,9 +54,9 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin, GObject *ref) { bool result; /* Bilan à retourner */ - printf("Loaded !\n"); + result &= register_format_matcher(mclf_is_matching); - result = register_format_type("mclf", "MobiCore Load Format", mclf_is_matching, g_mclf_format_new); + result = register_format_loader("mclf", "MobiCore Load Format", g_mclf_format_new); return result; @@ -78,8 +78,6 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin, GObject *ref) G_MODULE_EXPORT void chrysalide_plugin_exit(GPluginModule *plugin, GObject *ref) { - - printf("Unloaded !\n"); - + /* TODO */ } |