Fix: ustcomm: serialize variant_nestable type
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 25 Jan 2022 02:08:35 +0000 (21:08 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 25 Jan 2022 19:07:50 +0000 (14:07 -0500)
LTTng-UST 2.13 serializes the contents of the variant_nestable union
field, but keeps the "atype" as lttng_ust_ctl_atype_variant.

It happens to work by pure chance because the binary layout of the
variant_nestable and legacy.variant union fields are the same, except
for the alignment field of variant_nestable which is zeroed padding in
the legacy.variant. Therefore, as long as the variant_nestable has a
padding of 0, everything works out fine (which is currently the case).

But it's better to fix this discrepancy in case we ever plan to use a
nonzero variant alignment.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I96a3e1f6bfbe410ed61ea59313eb49b6c4f4b40d

src/common/ustcomm.c

index 252ed4f26e9f94875b050a4c7317aa2d246731fc..4c1fb0efb1da750a549af9e19f5382e14e6178f6 100644 (file)
@@ -998,7 +998,7 @@ int serialize_dynamic_type(struct lttng_ust_session *session,
 
        strncpy(uf->name, field_name, LTTNG_UST_ABI_SYM_NAME_LEN);
        uf->name[LTTNG_UST_ABI_SYM_NAME_LEN - 1] = '\0';
-       uf->type.atype = lttng_ust_ctl_atype_variant;
+       uf->type.atype = lttng_ust_ctl_atype_variant_nestable;
        uf->type.u.variant_nestable.nr_choices = nr_choices;
        strncpy(uf->type.u.variant_nestable.tag_name,
                tag_field_name,
This page took 0.025794 seconds and 4 git commands to generate.