summaryrefslogtreecommitdiff
path: root/plugins/mobicore
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2015-08-12 19:05:31 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2015-08-12 19:05:31 (GMT)
commit4b2f65ed2125cd7b6ef598cf02738f6c839d8935 (patch)
treede62e9daaafe63248c45202004758e91b7341cc5 /plugins/mobicore
parentb5c6bcea25b1b840fd6c8e89a4a3c9fbd83ba84b (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.c17
-rw-r--r--plugins/mobicore/mclf.h5
-rw-r--r--plugins/mobicore/mobicore.c8
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 */
}