summaryrefslogtreecommitdiff
path: root/src/analysis/disass
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-01-20 06:48:11 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-01-20 06:48:11 (GMT)
commitdac61a1c5fdb5e3630dc0907a5e0e1a22789de9d (patch)
treeb3bb7d61cf3bdf486477b375a257ad904960556b /src/analysis/disass
parent9361ac7e383839c85d536ba65722b4215e1589c0 (diff)
Ensured all block closing marks have an existing address.
Diffstat (limited to 'src/analysis/disass')
-rw-r--r--src/analysis/disass/output.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/analysis/disass/output.c b/src/analysis/disass/output.c
index e20a134..a6e5f51 100644
--- a/src/analysis/disass/output.c
+++ b/src/analysis/disass/output.c
@@ -143,7 +143,7 @@ void print_disassembled_instructions(GBufferCache *cache, GCodingLanguage *lang,
{
expect_outro = false;
- border = g_border_generator_new(lang, &outro_addr, false, msize);
+ border = g_border_generator_new(lang, iaddr, false, msize);
g_buffer_cache_append(cache, G_LINE_GENERATOR(border), BLF_NONE);
}
@@ -212,6 +212,18 @@ void print_disassembled_instructions(GBufferCache *cache, GCodingLanguage *lang,
/* Mémorisation de la fin */
+ /**
+ * On ne peut pas utiliser l'adresse obtenue dans outro_addr
+ * comme localisation de la marque de clôture. En effet, en
+ * fin du contenu ou de segment, l'adresse générée peut être
+ * inexistante.
+ *
+ * On utilise donc l'adresse de l'instruction suivante.
+ *
+ * On est cependant bien conscient qu'une instruction suivante
+ * est nécessaire pour imprimer cette marque de clôture.
+ */
+
compute_mrange_end_addr(g_binary_symbol_get_range(symbols[sym_index]), &outro_addr);
expect_outro = true;