From: Jérémie Galarneau Date: Tue, 30 Oct 2018 23:32:06 +0000 (+0100) Subject: Fix: invalid alignment of enumeration fields X-Git-Tag: v1.5.7~4 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=9d4e072bc91f17d1f3852e840727754cdb400683 Fix: invalid alignment of enumeration fields Issue --- According to the CTF specification, the alignment of an enumeration is that of its container integer field declaration. However, an enumeration field's alignment is always initialized to 1. This causes babeltrace to fail to read traces produced by lttng-ust following a fix that causes it to generate extended event headers. The problem is observed on ARM platforms since lttng-ust will produce a layout that does not result in unaligned memory accesses. Solution --- The alignment of the enumeration declaration's container is sampled when the enumeration declaration is created. Signed-off-by: Jérémie Galarneau --- diff --git a/types/enum.c b/types/enum.c index 8394e1b3..157e21b3 100644 --- a/types/enum.c +++ b/types/enum.c @@ -408,7 +408,7 @@ struct declaration_enum * bt_declaration_ref(&integer_declaration->p); enum_declaration->integer_declaration = integer_declaration; enum_declaration->p.id = CTF_TYPE_ENUM; - enum_declaration->p.alignment = 1; + enum_declaration->p.alignment = integer_declaration->p.alignment; enum_declaration->p.declaration_free = _enum_declaration_free; enum_declaration->p.definition_new = _enum_definition_new; enum_declaration->p.definition_free = _enum_definition_free;