summaryrefslogtreecommitdiff
path: root/src/format
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2014-12-25 16:31:33 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2014-12-25 16:31:33 (GMT)
commit19e1a97fafb1b73d0efcd995b31951daf1a5c661 (patch)
tree9cbc897ddb1d3005fb8dadfa3ad830c607acdddd /src/format
parent9cab778bfaaca2589a383445e8569d99d73374d5 (diff)
Cleaned all the code for immediate operands.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@444 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/format')
-rw-r--r--src/format/elf/symbols.c7
-rw-r--r--src/format/format-int.h2
-rw-r--r--src/format/format.c19
-rw-r--r--src/format/format.h3
4 files changed, 30 insertions, 1 deletions
diff --git a/src/format/elf/symbols.c b/src/format/elf/symbols.c
index 30bdcca..d69e41a 100644
--- a/src/format/elf/symbols.c
+++ b/src/format/elf/symbols.c
@@ -141,10 +141,15 @@ bool load_elf_symbols(GElfFormat *format)
result = load_elf_internal_symbols(format);
#endif
+
+
entry_point = ELF_HDR(format, format->header, e_entry);
+ G_BIN_FORMAT(format)->entry_point = entry_point;
+
+
- printf("E_ENTRY : 0x%08lx\n", (unsigned long)entry_point);
+ printf("E_ENTRY : 0x%08lx\n", (unsigned long)entry_point);
if (ELF_HDR(format, format->header, e_machine) == EM_ARM)
entry_point &= ~0x1;
diff --git a/src/format/format-int.h b/src/format/format-int.h
index 95e171d..21a97b3 100644
--- a/src/format/format-int.h
+++ b/src/format/format-int.h
@@ -44,6 +44,8 @@ struct _GBinFormat
const bin_t *content; /* Contenu binaire à étudier */
off_t length; /* Taille de ce contenu */
+ virt_t entry_point; /* Point d'entrée dans le code */
+
GBinSymbol **symbols; /* Liste des symboles trouvés */
size_t symbols_count; /* Quantité de ces symboles */
diff --git a/src/format/format.c b/src/format/format.c
index cb43a94..8e1b9f4 100644
--- a/src/format/format.c
+++ b/src/format/format.c
@@ -180,6 +180,25 @@ const bin_t *g_binary_format_get_content(const GBinFormat *format, off_t *length
/******************************************************************************
* *
+* Paramètres : format = description de l'exécutable à consulter. *
+* *
+* Description : Fournit l'adresse mémoire du point d'entrée d'un binaire. *
+* *
+* Retour : Adresse de mémoire virtuelle, voire VMPA_NO_VIRTUAL. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+virt_t g_binary_format_get_entry_point(const GBinFormat *format)
+{
+ return format->entry_point;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : format = informations chargées à compléter. *
* symbol = symbole à ajouter à la liste. *
* *
diff --git a/src/format/format.h b/src/format/format.h
index 3c74b50..364f71a 100644
--- a/src/format/format.h
+++ b/src/format/format.h
@@ -58,6 +58,9 @@ GType g_binary_format_get_type(void);
/* Fournit une référence vers le contenu binaire analysé. */
const bin_t *g_binary_format_get_content(const GBinFormat *, off_t *);
+/* Fournit l'adresse mémoire du point d'entrée d'un binaire. */
+virt_t g_binary_format_get_entry_point(const GBinFormat *);
+
/* Ajoute un symbole à la collection du format binaire. */
void g_binary_format_add_symbol(GBinFormat *, GBinSymbol *);