diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/Makefile.am | 3 | ||||
-rw-r--r-- | src/arch/vmpa.c | 87 | ||||
-rw-r--r-- | src/arch/vmpa.h | 68 |
3 files changed, 157 insertions, 1 deletions
diff --git a/src/arch/Makefile.am b/src/arch/Makefile.am index 94c8305..e87247e 100644 --- a/src/arch/Makefile.am +++ b/src/arch/Makefile.am @@ -15,7 +15,8 @@ libarch_la_SOURCES = \ processor.h processor.c \ register-int.h \ register.h register.c \ - translate.h + translate.h \ + vmpa.h vmpa.c libarch_la_LIBADD = \ arm/libarcharm.la \ diff --git a/src/arch/vmpa.c b/src/arch/vmpa.c new file mode 100644 index 0000000..24d5792 --- /dev/null +++ b/src/arch/vmpa.c @@ -0,0 +1,87 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * vmpa.c - adressages virtuels ou physiques + * + * Copyright (C) 2014 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * OpenIDA is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * OpenIDA is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar. If not, see <http://www.gnu.org/licenses/>. + */ + + +#include "vmpa.h" + + +#include <inttypes.h> +#include <malloc.h> + + + + + + + +/****************************************************************************** +* * +* Paramètres : phy = position dans la mémoire physique. * +* virt = adresse dans la mémoire virtuelle. * +* * +* Description : Crée une localisation dans l'adressage mémoire. * +* * +* Retour : Adressage alloué en mémoire. * +* * +* Remarques : - * +* * +******************************************************************************/ + +vmpa2_t *make_vmpa(off_t phy, uint64_t virt) +{ + vmpa2_t *result; /* Structure à retourner */ + + result = (vmpa2_t *)calloc(1, sizeof(vmpa2_t)); + + result->physical = phy; + result->virtual = virt; + + return result; + +} + + + + + +/****************************************************************************** +* * +* Paramètres : addr = élément à initialiser. * +* phy = position dans la mémoire physique. * +* virt = adresse dans la mémoire virtuelle. * +* * +* Description : Initialise une localisation dans l'espace mémoire/physique. * +* * +* Retour : Adressage alloué en mémoire. * +* * +* Remarques : - * +* * +******************************************************************************/ + +void init_vmpa(vmpa2_t *addr, off_t phy, uint64_t virt) +{ + addr->physical = phy; + addr->virtual = virt; + +} + + diff --git a/src/arch/vmpa.h b/src/arch/vmpa.h new file mode 100644 index 0000000..fa14fda --- /dev/null +++ b/src/arch/vmpa.h @@ -0,0 +1,68 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * vmpa.h - prototypes des adressages virtuels ou physiques + * + * Copyright (C) 2014 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * OpenIDA is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * OpenIDA is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar. If not, see <http://www.gnu.org/licenses/>. + */ + + +#ifndef _ARCH_VMPA_H +#define _ARCH_VMPA_H + + +#include <stdbool.h> +#include <stdint.h> +#include <sys/types.h> + + + + + +/* Adresse mémoire ou position physique */ +struct _vmpa2_t +{ + off_t physical; /* Position physique */ + uint64_t virtual; /* Adresse virtuelle */ + +}; + + + +/* Adresse mémoire ou position physique */ +typedef struct _vmpa2_t vmpa2_t; + + +/* Initialise une localisation dans l'espace mémoire/physique. */ +void init_vmpa(vmpa2_t *, off_t, uint64_t); + + + + +/* Crée une localisation dans l'adressage mémoire. */ +vmpa2_t *make_vmpa(off_t, uint64_t); + + + +#define load_vmpa_from_fd(vmpa, fd) true + +#define store_vmpa_to_fd(vmpa, fd) true + + + + +#endif /* _ARCH_VMPA_H */ |