@@ -135,10 +135,13 @@ static void report_divergance(ExecState *us, ExecState *them)
/* Output short log entry of going out of sync... */
if (verbose || divrec.distance == 1 || diverged) {
- g_string_printf(out,
- "@ 0x%016" PRIx64 " vs 0x%016" PRIx64
+ g_string_printf(out, "@ "
+ "0x%016" PRIx64 " (%" PRId64 ") vs "
+ "0x%016" PRIx64 " (%" PRId64 ")"
" (%d/%d since last)\n",
- us->pc, them->pc, g_slist_length(divergence_log),
+ us->pc, us->insn_count,
+ them->pc, them->insn_count,
+ g_slist_length(divergence_log),
divrec.distance);
qemu_plugin_outs(out->str);
}
@@ -147,10 +150,7 @@ static void report_divergance(ExecState *us, ExecState *them)
int i;
GSList *entry;
- g_string_printf(out,
- "Δ insn_count @ 0x%016" PRIx64
- " (%"PRId64") vs 0x%016" PRIx64 " (%"PRId64")\n",
- us->pc, us->insn_count, them->pc, them->insn_count);
+ g_string_printf(out, "Δ too high, we have diverged, previous insns\n");
for (entry = log, i = 0;
g_slist_next(entry) && i < 5;
@@ -163,7 +163,7 @@ static void report_divergance(ExecState *us, ExecState *them)
prev->insn_count);
}
qemu_plugin_outs(out->str);
- qemu_plugin_outs("too much divergence... giving up.");
+ qemu_plugin_outs("giving up\n");
qemu_plugin_uninstall(our_id, plugin_cleanup);
}
}
We were repeating information which wasn't super clear. As we already will have dumped the last failing PC just note the divergence and dump the previous instruction log. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240705084047.857176-27-alex.bennee@linaro.org>