summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-08-06 15:37:47 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-08-06 15:37:47 (GMT)
commitcdfe7b0efbb358fdb3fff8f6d5a8d34d89b220e5 (patch)
treee23d25fe0e2d8c2eacbc9c0b34a24731941d4296
parentf9690d8ba93b796b1d31f96c5a95ed44a55814bb (diff)
Avoided to cut the rendering flow for volatile symbols.
-rw-r--r--src/analysis/disass/output.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/analysis/disass/output.c b/src/analysis/disass/output.c
index b9b0f1f..83a6815 100644
--- a/src/analysis/disass/output.c
+++ b/src/analysis/disass/output.c
@@ -289,7 +289,7 @@ void print_disassembled_instructions(GBufferCache *cache, GCodingLanguage *lang,
{
/* Point d'entrée ? */
- if (g_binary_symbol_get_target_type(symbol) == STP_ENTRY_POINT)
+ if (stype == STP_ENTRY_POINT)
flags |= BLF_ENTRYPOINT;
/**
@@ -298,9 +298,14 @@ void print_disassembled_instructions(GBufferCache *cache, GCodingLanguage *lang,
* On décide que, à partir du moment où il y a un symbole, il y a
* là le début d'un nouveau bloc avec sa propre nouvelle gestion
* des largeurs, quelque soit le type du symbole en question !
+ *
+ * Seule exception : les symboles créés de toute pièce, qui
+ * n'interviennent que comme opérandes, et qui ne peuvent donc
+ * pas couper le rendu du flot d'exécution.
*/
- flags |= BLF_WIDTH_MANAGER;
+ if (stype != STP_DYN_STRING)
+ flags |= BLF_WIDTH_MANAGER;
g_object_unref(G_OBJECT(symbol));
symbol = get_symbol_iterator_next(siter);