diff options
Diffstat (limited to 'src/arch')
| -rw-r--r-- | src/arch/post.c | 2 | ||||
| -rw-r--r-- | src/arch/processor.c | 2 | ||||
| -rw-r--r-- | src/arch/target.c | 2 | ||||
| -rw-r--r-- | src/arch/vmpa.c | 29 | ||||
| -rw-r--r-- | src/arch/vmpa.h | 5 | 
5 files changed, 37 insertions, 3 deletions
diff --git a/src/arch/post.c b/src/arch/post.c index 9973dd3..5c7ed13 100644 --- a/src/arch/post.c +++ b/src/arch/post.c @@ -79,7 +79,7 @@ void post_process_target_resolution(GArchInstruction *instr, GArchProcessor *pro          if (!g_target_operand_resolve(G_TARGET_OPERAND(new), bfmt, true))          { -            vmpa2_virt_to_string(&target, MDS_UNDEFINED, loc, NULL); +            vmpa2_to_string(&target, MDS_UNDEFINED, loc, NULL);              switch (type)              { diff --git a/src/arch/processor.c b/src/arch/processor.c index 3a049b1..38c39e6 100644 --- a/src/arch/processor.c +++ b/src/arch/processor.c @@ -314,7 +314,7 @@ GArchInstruction *g_arch_processor_disassemble(const GArchProcessor *proc, GProc      GArchInstruction *result;               /* Instruction à renvoyer      */      vmpa2t back;                            /* Position sauvegardée        */ -    assert(has_phys_addr(pos) && has_virt_addr(pos)); +    assert(has_phys_addr(pos));      copy_vmpa(&back, pos); diff --git a/src/arch/target.c b/src/arch/target.c index bce00a7..896b9f7 100644 --- a/src/arch/target.c +++ b/src/arch/target.c @@ -245,7 +245,7 @@ static void g_target_operand_print(const GTargetOperand *operand, GBufferLine *l      }      else      { -        vmpa2_virt_to_string(&operand->addr, operand->size, value, &len); +        vmpa2_to_string(&operand->addr, operand->size, value, &len);          g_buffer_line_append_text(line, BLC_MAIN, value, len, RTT_LABEL, G_OBJECT(operand)); diff --git a/src/arch/vmpa.c b/src/arch/vmpa.c index f344101..dc1804c 100644 --- a/src/arch/vmpa.c +++ b/src/arch/vmpa.c @@ -530,6 +530,35 @@ char *vmpa2_virt_to_string(const vmpa2t *addr, MemoryDataSize msize, char buffer  /******************************************************************************  *                                                                             * +*  Paramètres  : addr   = adresse virtuelle ou physique à traiter.            * +*                msize  = taille de cette adresse, réelle ou désirée.         * +*                buffer = tampon de sortie utilisé à constituer. [OUT]        * +*                length = transmission de la taille du résultat ou NULL. [OUT]* +*                                                                             * +*  Description : Transforme une localisation en chaîne de caractères.         * +*                                                                             * +*  Retour      : Chaîne de caractères constituée.                             * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +char *vmpa2_to_string(const vmpa2t *addr, MemoryDataSize msize, char buffer[VMPA_MAX_LEN], size_t *length) +{ +    char *result;                           /* Résultat à retourner        */ + +    if (has_virt_addr(addr)) +        result = vmpa2_virt_to_string(addr, msize, buffer, length); +    else +        result = vmpa2_phys_to_string(addr, msize, buffer, length); + +    return result; + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : buffer = chaîne de caractères à consulter.                   *  *                                                                             *  *  Description : Transforme une chaîne de caractères en position physique.    * diff --git a/src/arch/vmpa.h b/src/arch/vmpa.h index 3bfb40c..48f61a8 100644 --- a/src/arch/vmpa.h +++ b/src/arch/vmpa.h @@ -107,6 +107,8 @@ int cmp_vmpa(const vmpa2t *, const vmpa2t *);  #define is_invalid_vmpa(a) (!has_phys_addr(a) && !has_virt_addr(a)) +#define reset_virt_addr(a) (a)->virtual = VMPA_NO_VIRTUAL +  #define dup_vmpa(src)                                   \      make_vmpa(get_phy_addr(src), get_virt_addr(src)) @@ -134,6 +136,9 @@ char *vmpa2_phys_to_string(const vmpa2t *, MemoryDataSize, char [VMPA_MAX_LEN],  /* Transforme une adresse virtuelle en chaîne de caractères. */  char *vmpa2_virt_to_string(const vmpa2t *, MemoryDataSize, char [VMPA_MAX_LEN], size_t *); +/* Transforme une localisation en chaîne de caractères. */ +char *vmpa2_to_string(const vmpa2t *, MemoryDataSize, char [VMPA_MAX_LEN], size_t *); +  /* Transforme une chaîne de caractères en position physique. */  vmpa2t *string_to_vmpa_phy(const char *);  | 
