qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v1 5/7] disas: include an optional note for the start of disa


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v1 5/7] disas: include an optional note for the start of disassembly
Date: Fri, 1 May 2020 17:08:43 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0

On 5/1/20 4:57 PM, Alex Bennée wrote:
This will become useful shortly for providing more information about
output assembly inline. While there fix up the indenting and code
formatting in disas().

Signed-off-by: Alex Bennée <address@hidden>

Reviewed-by: Philippe Mathieu-Daudé <address@hidden>

---
  include/disas/disas.h     |  2 +-
  include/exec/log.h        |  4 ++--
  accel/tcg/translate-all.c |  4 ++--
  disas.c                   | 15 +++++++++++----
  tcg/tcg.c                 |  4 ++--
  5 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/include/disas/disas.h b/include/disas/disas.h
index 36c33f6f19..1b6e035e32 100644
--- a/include/disas/disas.h
+++ b/include/disas/disas.h
@@ -7,7 +7,7 @@
  #include "cpu.h"
/* Disassemble this for me please... (debugging). */
-void disas(FILE *out, void *code, unsigned long size);
+void disas(FILE *out, void *code, unsigned long size, const char *note);
  void target_disas(FILE *out, CPUState *cpu, target_ulong code,
                    target_ulong size);
diff --git a/include/exec/log.h b/include/exec/log.h
index fcc7b9e00b..3ed797c1c8 100644
--- a/include/exec/log.h
+++ b/include/exec/log.h
@@ -56,13 +56,13 @@ static inline void log_target_disas(CPUState *cpu, 
target_ulong start,
      rcu_read_unlock();
  }
-static inline void log_disas(void *code, unsigned long size)
+static inline void log_disas(void *code, unsigned long size, const char *note)
  {
      QemuLogFile *logfile;
      rcu_read_lock();
      logfile = atomic_rcu_read(&qemu_logfile);
      if (logfile) {
-        disas(logfile->fd, code, size);
+        disas(logfile->fd, code, size, note);
      }
      rcu_read_unlock();
  }
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
index e4f703a7e6..cdf58bb420 100644
--- a/accel/tcg/translate-all.c
+++ b/accel/tcg/translate-all.c
@@ -1800,7 +1800,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
              size_t data_size = gen_code_size - code_size;
              size_t i;
- log_disas(tb->tc.ptr, code_size);
+            log_disas(tb->tc.ptr, code_size, NULL);
for (i = 0; i < data_size; i += sizeof(tcg_target_ulong)) {
                  if (sizeof(tcg_target_ulong) == 8) {
@@ -1814,7 +1814,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
                  }
              }
          } else {
-            log_disas(tb->tc.ptr, gen_code_size);
+            log_disas(tb->tc.ptr, gen_code_size, NULL);
          }
          qemu_log("\n");
          qemu_log_flush();
diff --git a/disas.c b/disas.c
index 3937da6157..bb74650633 100644
--- a/disas.c
+++ b/disas.c
@@ -586,7 +586,7 @@ char *plugin_disas(CPUState *cpu, uint64_t addr, size_t 
size)
  }
/* Disassemble this for me please... (debugging). */
-void disas(FILE *out, void *code, unsigned long size)
+void disas(FILE *out, void *code, unsigned long size, const char *note)
  {
      uintptr_t pc;
      int count;
@@ -674,10 +674,17 @@ void disas(FILE *out, void *code, unsigned long size)
      for (pc = (uintptr_t)code; size > 0; pc += count, size -= count) {
          fprintf(out, "0x%08" PRIxPTR ":  ", pc);
          count = print_insn(pc, &s.info);
-       fprintf(out, "\n");
-       if (count < 0)
-           break;
+        if (note) {
+            fprintf(out, "\t\t%s\n", note);
+            note = NULL;
+        } else {
+            fprintf(out, "\n");
+        }
+        if (count < 0) {
+            break;
+        }
      }
+
  }
/* Look up symbol for debugging purpose. Returns "" if unknown. */
diff --git a/tcg/tcg.c b/tcg/tcg.c
index dd4b3d7684..a2268d9db0 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -1092,7 +1092,7 @@ void tcg_prologue_init(TCGContext *s)
              size_t data_size = prologue_size - code_size;
              size_t i;
- log_disas(buf0, code_size);
+            log_disas(buf0, code_size, NULL);
for (i = 0; i < data_size; i += sizeof(tcg_target_ulong)) {
                  if (sizeof(tcg_target_ulong) == 8) {
@@ -1106,7 +1106,7 @@ void tcg_prologue_init(TCGContext *s)
                  }
              }
          } else {
-            log_disas(buf0, prologue_size);
+            log_disas(buf0, prologue_size, NULL);
          }
          qemu_log("\n");
          qemu_log_flush();





reply via email to

[Prev in Thread] Current Thread [Next in Thread]