Skip to content

Commit

Permalink
disas: include an optional note for the start of disassembly
Browse files Browse the repository at this point in the history
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>

Message-Id: <20200513175134.19619-9-alex.bennee@linaro.org>
  • Loading branch information
stsquad committed May 15, 2020
1 parent 6a7aa85 commit e5ef4ec
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 11 deletions.
4 changes: 2 additions & 2 deletions accel/tcg/translate-all.c
Expand Up @@ -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) {
Expand All @@ -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();
Expand Down
14 changes: 10 additions & 4 deletions disas.c
Expand Up @@ -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;
Expand Down Expand Up @@ -674,10 +674,16 @@ 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", note);
note = NULL;
}
fprintf(out, "\n");
if (count < 0) {
break;
}
}

}

/* Look up symbol for debugging purpose. Returns "" if unknown. */
Expand Down
2 changes: 1 addition & 1 deletion include/disas/disas.h
Expand Up @@ -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);

Expand Down
4 changes: 2 additions & 2 deletions include/exec/log.h
Expand Up @@ -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();
}
Expand Down
4 changes: 2 additions & 2 deletions tcg/tcg.c
Expand Up @@ -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) {
Expand All @@ -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();
Expand Down

0 comments on commit e5ef4ec

Please sign in to comment.