lttng-tools: fix alignment issue

Fix alignment issue in lttng-tools

(From OE-Core rev: 539b77a29eb24b3896c9c436c0b4ce61c6b72b34)

Signed-off-by: Roy Li <rongqing.li@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Roy Li
2014-05-22 14:37:35 +08:00
committed by Richard Purdie
parent 779d496e7c
commit 359d2de19b
3 changed files with 49 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
From 9dc4d3a8dcc7cfb6991e760e78f614afd593bf66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20Markstr=C3=B6m?= <fredrik.markstrom@gmail.com>
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 <fredrik.markstrom@gmail.com>
Signed-off-by: Roy Li <rongqing.li@windriver.com>
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
---
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

View File

@@ -18,6 +18,7 @@ PV = "v2.3.1"
SRC_URI = "git://git.lttng.org/lttng-tools.git;branch=stable-2.3 \
file://runtest.patch \
file://run-ptest \
file://Fix-alignment-problems-on-targets-not-supporting-una.patch \
"
S = "${WORKDIR}/git"

View File

@@ -18,6 +18,7 @@ PV = "v2.4.0"
SRC_URI = "git://git.lttng.org/lttng-tools.git;branch=stable-2.4 \
file://runtest-2.4.0.patch \
file://run-ptest \
file://Fix-alignment-problems-on-targets-not-supporting-una.patch \
"
S = "${WORKDIR}/git"