Skip to content

Commit 3ee7919

Browse files
committed
Fix register comparison for trace.
1 parent 486c6b7 commit 3ee7919

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

contrib/plugins/bap-tracing/tracing.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ static void add_post_reg_state(VCPU *vcpu, unsigned int vcpu_index,
5454
assert(s == prev_reg->content->len);
5555
if (!memcmp(rdata->data, prev_reg->content->data, s)) {
5656
// No change
57+
// Flush byte array
58+
g_byte_array_set_size(rdata, 0);
5759
continue;
5860
}
5961

@@ -62,6 +64,8 @@ static void add_post_reg_state(VCPU *vcpu, unsigned int vcpu_index,
6264
qemu_plugin_outs("Failed to append opinfo.\n");
6365
return;
6466
}
67+
// Flush byte array
68+
g_byte_array_set_size(rdata, 0);
6569
}
6670
}
6771

@@ -72,7 +76,12 @@ static void add_pre_reg_state(VCPU *vcpu, unsigned int vcpu_index,
7276
qemu_plugin_reg_descriptor *reg =
7377
&g_array_index(current_regs, qemu_plugin_reg_descriptor, i);
7478
size_t s = qemu_plugin_read_register(reg->handle, rdata);
79+
Register *prev_reg = g_ptr_array_index(vcpu->registers, i);
80+
g_assert(!strcmp(prev_reg->name, reg->name) && prev_reg->handle == reg->handle);
81+
memcpy(prev_reg->content->data, rdata->data, prev_reg->content->len);
7582
frame_buffer_append_reg_info(fbuf, reg->name, rdata, s, OperandRead);
83+
// Flush byte array
84+
g_byte_array_set_size(rdata, 0);
7685
}
7786
}
7887

0 commit comments

Comments
 (0)