diff options
Diffstat (limited to 'src/format/exe_format.c')
-rw-r--r-- | src/format/exe_format.c | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/src/format/exe_format.c b/src/format/exe_format.c index 1481d22..bc6cfff 100644 --- a/src/format/exe_format.c +++ b/src/format/exe_format.c @@ -24,10 +24,146 @@ #include "exe_format.h" +#include <malloc.h> +#include <string.h> + + #include "exe_format-int.h" +/* ---------------------------------------------------------------------------------- */ +/* MANIPULATION DES PARTIES DE CODE */ +/* ---------------------------------------------------------------------------------- */ + + +/****************************************************************************** +* * +* Paramètres : - * +* * +* Description : Crée une description de partie de code vierge. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +bin_part *create_bin_part(void) +{ + bin_part *result; /* Structure à renvoyer */ + + result = (bin_part *)calloc(1, sizeof(bin_part)); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : part = description de partie à mettre à jour. * +* name = nom à donner à la partie. * +* * +* Description : Attribue une description humaine à une partie de code. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void set_bin_part_name(bin_part *part, const char *name) +{ + if (part->name != NULL) free(part->name); + + part->name = strdup(name); + +} + + +/****************************************************************************** +* * +* Paramètres : part = description de partie à mettre à jour. * +* offset = position de la section à conserver. * +* size = taille de la section à conserver. * +* voffset = adresse virtuelle de la section à conserver. * +* * +* Description : Définit les valeurs utiles d'une partie de code. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void set_bin_part_values(bin_part *part, off_t offset, off_t size, uint64_t voffset) +{ + part->offset = offset; + part->size = size; + part->voffset = voffset; + +} + + +/****************************************************************************** +* * +* Paramètres : part = description de partie à mettre à jour. * +* offset = position de la section à donner. [OUT] * +* size = taille de la section à donner. [OUT] * +* voffset = adresse virtuelle de la section à donner. [OUT] * +* * +* Description : Fournit les valeurs utiles d'une partie de code. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void get_bin_part_values(const bin_part *part, off_t *offset, off_t *size, uint64_t *voffset) +{ + *offset = part->offset; + *size = part->size; + *voffset = part->voffset; + +} + + +/****************************************************************************** +* * +* Paramètres : part = description de partie à effacer. * +* * +* Description : Supprime de la mémoire une description de partie de code. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void delete_bin_part(bin_part *part) +{ + if (part->name != NULL) free(part->name); + + free(part); + +} + + + + + + + + + + + + +/* ---------------------------------------------------------------------------------- */ +/* MANIPULATION DES PARTIES DE CODE */ +/* ---------------------------------------------------------------------------------- */ /****************************************************************************** |