From 539b77a29eb24b3896c9c436c0b4ce61c6b72b34 Mon Sep 17 00:00:00 2001 From: Roy Li Date: Thu, 22 May 2014 14:37:35 +0800 Subject: lttng-tools: fix alignment issue Fix alignment issue in lttng-tools Signed-off-by: Roy Li Signed-off-by: Saul Wold --- ...nt-problems-on-targets-not-supporting-una.patch | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 meta/recipes-kernel/lttng/lttng-tools/Fix-alignment-problems-on-targets-not-supporting-una.patch (limited to 'meta/recipes-kernel/lttng/lttng-tools') diff --git a/meta/recipes-kernel/lttng/lttng-tools/Fix-alignment-problems-on-targets-not-supporting-una.patch b/meta/recipes-kernel/lttng/lttng-tools/Fix-alignment-problems-on-targets-not-supporting-una.patch new file mode 100644 index 0000000000..2c1756e6ed --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/Fix-alignment-problems-on-targets-not-supporting-una.patch @@ -0,0 +1,47 @@ +From 9dc4d3a8dcc7cfb6991e760e78f614afd593bf66 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fredrik=20Markstr=C3=B6m?= +Date: Tue, 1 Apr 2014 17:46:23 +0200 +Subject: [PATCH v2] Fix: alignment problems on targets not supporting unaligned + access. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upstream-Status: Submitted (https://www.mail-archive.com/lttng-dev@lists.lttng.org/msg06012.html) + +Accessing floats, doubles and 64 bit int at unaligned addresses is not +supported on all configurations of arm processors and if it is it's +emulated and slow. This patch replaces direct assignments with memcpy. + +Signed-off-by: Fredrik Markström +Signed-off-by: Roy Li +Acked-by: Mathieu Desnoyers +--- + src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c b/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c +index 762d604..8c6dc96 100644 +--- a/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c ++++ b/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c +@@ -222,7 +222,7 @@ int visit_node_load(struct filter_parser_ctx *ctx, struct ir_op *node) + if (!insn) + return -ENOMEM; + insn->op = FILTER_OP_LOAD_S64; +- *(int64_t *) insn->data = node->u.load.u.num; ++ memcpy(insn->data, &node->u.load.u.num, sizeof(int64_t)); + ret = bytecode_push(&ctx->bytecode, insn, 1, insn_len); + free(insn); + return ret; +@@ -237,7 +237,7 @@ int visit_node_load(struct filter_parser_ctx *ctx, struct ir_op *node) + if (!insn) + return -ENOMEM; + insn->op = FILTER_OP_LOAD_DOUBLE; +- *(double *) insn->data = node->u.load.u.flt; ++ memcpy(insn->data, &node->u.load.u.flt, sizeof(double)); + ret = bytecode_push(&ctx->bytecode, insn, 1, insn_len); + free(insn); + return ret; +-- +1.7.10.4 + -- cgit 1.2.3-korg