From 9d4e072bc91f17d1f3852e840727754cdb400683 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Wed, 31 Oct 2018 00:32:06 +0100 Subject: [PATCH] Fix: invalid alignment of enumeration fields MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- types/enum.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; -- 2.34.1