Report libovni version from trace

This commit is contained in:
Rodrigo Arias 2023-11-13 15:02:34 +01:00
parent 93fdfd51de
commit 855dd76678

View File

@ -169,6 +169,61 @@ create_loom(struct system *sys, const char *relpath)
return loom;
}
static int
report_libovni_version(struct system *sys)
{
int mixed = 0;
int first = 1;
const char *version;
const char *commit;
for (struct thread *th = sys->threads; th; th = th->gnext) {
if (th->meta == NULL) {
err("thread has no metadata %s", th->id);
return -1;
}
const char *t_version = json_object_dotget_string(th->meta, "ovni.lib.version");
if (t_version == NULL) {
err("missing ovni.lib.version key in thread metadata: %s", th->id);
return -1;
}
const char *t_commit = json_object_dotget_string(th->meta, "ovni.lib.commit");
if (t_commit == NULL) {
err("missing ovni.lib.commit key in thread metadata: %s", th->id);
return -1;
}
if (first) {
version = t_version;
commit = t_commit;
first = 0;
}
if (strcmp(t_version, version) != 0) {
warn("thread is using a different libovni version (%s): %s",
t_version, th->id);
mixed = 1;
}
if (strcmp(t_commit, commit) != 0) {
warn("thread is using a different libovni commit (%s): %s",
t_commit, th->id);
mixed = 1;
}
}
if (mixed) {
warn("mixed versions of libovni detected");
} else {
info("generated with libovni version %s commit %s", version, commit);
}
return 0;
}
static int
create_system(struct system *sys, struct trace *trace)
{
@ -547,6 +602,11 @@ system_init(struct system *sys, struct emu_args *args, struct trace *trace)
return -1;
}
if (report_libovni_version(sys) != 0) {
err("report_libovni_version failed");
return -1;
}
/* Load the clock offsets table */
if (load_clock_offsets(&sys->clkoff, args) != 0) {
err("load_clock_offsets() failed");