From ba30fbc703ff3ad77bb5df6c167809955215d49c Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Sun, 26 Jul 2020 21:13:51 +0200 Subject: Avoided fixed columns when filling lines with locations. --- src/arch/instruction.c | 5 ++++- src/arch/instructions/raw.c | 7 +++++-- src/arch/instructions/undefined.c | 5 ++++- src/format/symbol.c | 5 ++++- src/glibext/bufferline.c | 40 +++++++++------------------------------ src/glibext/bufferline.h | 7 ++----- src/glibext/gbinportion.c | 5 ++++- src/glibext/generators/hex.c | 2 +- src/glibext/generators/rborder.c | 5 ++++- 9 files changed, 37 insertions(+), 44 deletions(-) diff --git a/src/arch/instruction.c b/src/arch/instruction.c index 6bc158f..73b68f2 100644 --- a/src/arch/instruction.c +++ b/src/arch/instruction.c @@ -34,6 +34,7 @@ #include "storage.h" #include "../glibext/gbinarycursor.h" #include "../glibext/linegen-int.h" +#include "../gtkext/gtkblockdisplay.h" @@ -1962,7 +1963,9 @@ static void _g_arch_instruction_print(GArchInstruction *instr, GBufferLine *line size_t i; /* Boucle de parcours */ GArchOperand *op; /* Opérande à manipuler */ - g_buffer_line_fill_vmpa(line, get_mrange_addr(&instr->range), MDS_32_BITS_UNSIGNED, MDS_32_BITS_UNSIGNED); + g_buffer_line_fill_phys(line, DLC_PHYSICAL, MDS_32_BITS_UNSIGNED, get_mrange_addr(&instr->range)); + + g_buffer_line_fill_virt(line, DLC_VIRTUAL, MDS_32_BITS_UNSIGNED, get_mrange_addr(&instr->range)); g_buffer_line_fill_content(line, content, &instr->range, VMPA_NO_PHYSICAL); diff --git a/src/arch/instructions/raw.c b/src/arch/instructions/raw.c index 05eb886..84a79e9 100644 --- a/src/arch/instructions/raw.c +++ b/src/arch/instructions/raw.c @@ -1,6 +1,6 @@ /* Chrysalide - Outil d'analyse de fichiers binaires - * artificial.c - instructions pures vues de l'esprit + * raw.c - instructions pures vues de l'esprit * * Copyright (C) 2014-2020 Cyrille Bagard * @@ -35,6 +35,7 @@ #include "../instruction-int.h" #include "../operands/immediate.h" #include "../operands/target.h" +#include "../../gtkext/gtkblockdisplay.h" @@ -629,7 +630,9 @@ static void g_raw_instruction_print(GRawInstruction *instr, GBufferLine *line, s /* Localisation */ - g_buffer_line_fill_vmpa(line, get_mrange_addr(&base->range), MDS_32_BITS_UNSIGNED, MDS_32_BITS_UNSIGNED); + g_buffer_line_fill_phys(line, DLC_PHYSICAL, MDS_32_BITS_UNSIGNED, get_mrange_addr(&base->range)); + + g_buffer_line_fill_virt(line, DLC_VIRTUAL, MDS_32_BITS_UNSIGNED, get_mrange_addr(&base->range)); /* Contenu */ diff --git a/src/arch/instructions/undefined.c b/src/arch/instructions/undefined.c index 6d90a1c..1623d7b 100644 --- a/src/arch/instructions/undefined.c +++ b/src/arch/instructions/undefined.c @@ -31,6 +31,7 @@ #include "undefined-int.h" +#include "../../gtkext/gtkblockdisplay.h" @@ -385,7 +386,9 @@ static void g_undef_instruction_print(GUndefInstruction *instr, GBufferLine *lin base = G_ARCH_INSTRUCTION(instr); - g_buffer_line_fill_vmpa(line, get_mrange_addr(&base->range), MDS_32_BITS_UNSIGNED, MDS_32_BITS_UNSIGNED); + g_buffer_line_fill_phys(line, DLC_PHYSICAL, MDS_32_BITS_UNSIGNED, get_mrange_addr(&base->range)); + + g_buffer_line_fill_virt(line, DLC_VIRTUAL, MDS_32_BITS_UNSIGNED, get_mrange_addr(&base->range)); g_buffer_line_fill_content(line, content, &base->range, VMPA_NO_PHYSICAL); diff --git a/src/format/symbol.c b/src/format/symbol.c index d2faf7c..918b006 100644 --- a/src/format/symbol.c +++ b/src/format/symbol.c @@ -32,6 +32,7 @@ #include "symbol-int.h" #include "../glibext/gbinarycursor.h" #include "../glibext/linegen-int.h" +#include "../gtkext/gtkblockdisplay.h" @@ -842,7 +843,9 @@ static void g_binary_symbol_print(GBinSymbol *symbol, GBufferLine *line, size_t { char *label; /* Etiquette à insérer */ - g_buffer_line_fill_vmpa(line, get_mrange_addr(&symbol->range), MDS_32_BITS_UNSIGNED, MDS_32_BITS_UNSIGNED); + g_buffer_line_fill_phys(line, DLC_PHYSICAL, MDS_32_BITS_UNSIGNED, get_mrange_addr(&symbol->range)); + + g_buffer_line_fill_virt(line, DLC_VIRTUAL, MDS_32_BITS_UNSIGNED, get_mrange_addr(&symbol->range)); label = g_binary_symbol_get_label(symbol); diff --git a/src/glibext/bufferline.c b/src/glibext/bufferline.c index 2f694dd..ba25b8f 100644 --- a/src/glibext/bufferline.c +++ b/src/glibext/bufferline.c @@ -288,6 +288,7 @@ const mrange_t *g_buffer_line_get_range(const GBufferLine *line) /****************************************************************************** * * * Paramètres : line = ligne à venir compléter. * +* col = indice de la colonne à constituer. * * size = taille souhaitée de l'impression des positions. * * addr = localisation physique à venir représenter. * * * @@ -299,7 +300,7 @@ const mrange_t *g_buffer_line_get_range(const GBufferLine *line) * * ******************************************************************************/ -void g_buffer_line_fill_phys(GBufferLine *line, MemoryDataSize size, const vmpa2t *addr) +void g_buffer_line_fill_phys(GBufferLine *line, size_t col, MemoryDataSize size, const vmpa2t *addr) { VMPA_BUFFER(position); /* Emplacement au format texte */ size_t len; /* Taille de l'élément inséré */ @@ -314,9 +315,9 @@ void g_buffer_line_fill_phys(GBufferLine *line, MemoryDataSize size, const vmpa2 i = len - 1; if (i > 0) - g_buffer_line_append_text(line, BLC_PHYSICAL, position, i, RTT_PHYS_ADDR_PAD, NULL); + g_buffer_line_append_text(line, col, position, i, RTT_PHYS_ADDR_PAD, NULL); - g_buffer_line_append_text(line, BLC_PHYSICAL, &position[i], len - i, RTT_PHYS_ADDR, NULL); + g_buffer_line_append_text(line, col, &position[i], len - i, RTT_PHYS_ADDR, NULL); } @@ -324,6 +325,7 @@ void g_buffer_line_fill_phys(GBufferLine *line, MemoryDataSize size, const vmpa2 /****************************************************************************** * * * Paramètres : line = ligne à venir compléter. * +* col = indice de la colonne à constituer. * * size = taille souhaitée de l'impression des positions. * * addr = localisation virtuelle à venir représenter. * * * @@ -335,7 +337,7 @@ void g_buffer_line_fill_phys(GBufferLine *line, MemoryDataSize size, const vmpa2 * * ******************************************************************************/ -void g_buffer_line_fill_virt(GBufferLine *line, MemoryDataSize size, const vmpa2t *addr) +void g_buffer_line_fill_virt(GBufferLine *line, size_t col, MemoryDataSize size, const vmpa2t *addr) { VMPA_BUFFER(position); /* Emplacement au format texte */ size_t len; /* Taille de l'élément inséré */ @@ -352,38 +354,14 @@ void g_buffer_line_fill_virt(GBufferLine *line, MemoryDataSize size, const vmpa2 i = len - 1; if (i > 0) - g_buffer_line_append_text(line, BLC_VIRTUAL, position, i, RTT_VIRT_ADDR_PAD, NULL); + g_buffer_line_append_text(line, col, position, i, RTT_VIRT_ADDR_PAD, NULL); - g_buffer_line_append_text(line, BLC_VIRTUAL, &position[i], len - i, RTT_VIRT_ADDR, NULL); + g_buffer_line_append_text(line, col, &position[i], len - i, RTT_VIRT_ADDR, NULL); } else - g_buffer_line_append_text(line, BLC_VIRTUAL, position, len, RTT_VIRT_ADDR_PAD, NULL); - -} - - -/****************************************************************************** -* * -* Paramètres : line = ligne à venir compléter. * -* addr = localisation à afficher. * -* psize = taille souhaitée de l'impression des positions. * -* vsize = taille souhaitée de l'impression des adresses. * -* * -* Description : Construit le tronc commun d'une ligne autour de sa position. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_buffer_line_fill_vmpa(GBufferLine *line, const vmpa2t *addr, MemoryDataSize psize, MemoryDataSize vsize) -{ - g_buffer_line_fill_phys(line, psize, addr); - - g_buffer_line_fill_virt(line, vsize, addr); + g_buffer_line_append_text(line, col, position, len, RTT_VIRT_ADDR_PAD, NULL); } diff --git a/src/glibext/bufferline.h b/src/glibext/bufferline.h index a7982d0..cfb4432 100644 --- a/src/glibext/bufferline.h +++ b/src/glibext/bufferline.h @@ -110,13 +110,10 @@ GBufferLine *g_buffer_line_new(const mrange_t *, BufferLineColumn); const mrange_t *g_buffer_line_get_range(const GBufferLine *); /* Construit le tronc commun d'une ligne autour de sa position. */ -void g_buffer_line_fill_phys(GBufferLine *, MemoryDataSize, const vmpa2t *); +void g_buffer_line_fill_phys(GBufferLine *, size_t, MemoryDataSize, const vmpa2t *); /* Construit le tronc commun d'une ligne autour de sa position. */ -void g_buffer_line_fill_virt(GBufferLine *, MemoryDataSize, const vmpa2t *); - -/* Construit le tronc commun d'une ligne autour de sa position. */ -void g_buffer_line_fill_vmpa(GBufferLine *, const vmpa2t *, MemoryDataSize, MemoryDataSize); +void g_buffer_line_fill_virt(GBufferLine *, size_t, MemoryDataSize, const vmpa2t *); /* Construit le tronc commun d'une ligne autour de son contenu. */ void g_buffer_line_fill_content(GBufferLine *, const GBinContent *, const mrange_t *, phys_t); diff --git a/src/glibext/gbinportion.c b/src/glibext/gbinportion.c index 44053f9..670e0ec 100644 --- a/src/glibext/gbinportion.c +++ b/src/glibext/gbinportion.c @@ -40,6 +40,7 @@ #include "../common/sort.h" #include "../glibext/gbinarycursor.h" #include "../glibext/linegen-int.h" +#include "../gtkext/gtkblockdisplay.h" @@ -1121,7 +1122,9 @@ static void g_binary_portion_print(GBinPortion *portion, GBufferLine *line, size { assert(repeat < portion->lcount); - g_buffer_line_fill_vmpa(line, get_mrange_addr(&portion->range), MDS_32_BITS_UNSIGNED, MDS_32_BITS_UNSIGNED); + g_buffer_line_fill_phys(line, DLC_PHYSICAL, MDS_32_BITS_UNSIGNED, get_mrange_addr(&portion->range)); + + g_buffer_line_fill_virt(line, DLC_VIRTUAL, MDS_32_BITS_UNSIGNED, get_mrange_addr(&portion->range)); if (portion->text[repeat] != NULL) { diff --git a/src/glibext/generators/hex.c b/src/glibext/generators/hex.c index f08d3fb..9285e00 100644 --- a/src/glibext/generators/hex.c +++ b/src/glibext/generators/hex.c @@ -487,7 +487,7 @@ static void g_hex_generator_print(GHexGenerator *generator, GBufferLine *line, s init_vmpa(&pos, generator->bytes_per_line * index, VMPA_NO_VIRTUAL); - g_buffer_line_fill_phys(line, MDS_32_BITS_UNSIGNED, &pos); + g_buffer_line_fill_phys(line, HLC_PHYSICAL, MDS_32_BITS_UNSIGNED, &pos); /* Contenu brut */ diff --git a/src/glibext/generators/rborder.c b/src/glibext/generators/rborder.c index 8ff1271..42ffc23 100644 --- a/src/glibext/generators/rborder.c +++ b/src/glibext/generators/rborder.c @@ -33,6 +33,7 @@ #include "../gbinarycursor.h" #include "../linegen-int.h" #include "../linesegment.h" +#include "../../gtkext/gtkblockdisplay.h" @@ -357,7 +358,9 @@ static void g_border_generator_print(GBorderGenerator *generator, GBufferLine *l assert(repeat < 3); - g_buffer_line_fill_vmpa(line, &generator->addr, generator->msize, generator->msize); + g_buffer_line_fill_phys(line, DLC_PHYSICAL, generator->msize, &generator->addr); + + g_buffer_line_fill_virt(line, DLC_VIRTUAL, generator->msize, &generator->addr); if (repeat == 1) { -- cgit v0.11.2-87-g4458