Message ID | 20200501145713.19822-6-alex.bennee@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | various tcg and linux-user updates | expand |
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 <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > 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(); >
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();
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 <alex.bennee@linaro.org> --- 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(-) -- 2.20.1