From 972dcfcdbfe75dcfeb777150c136576cf1a71e99 Mon Sep 17 00:00:00 2001 From: Tudor Florea Date: Fri, 9 Oct 2015 22:59:03 +0200 Subject: initial commit for Enea Linux 5.0 arm Signed-off-by: Tudor Florea --- ...-Support-out-of-tree-builds-in-babeltrace.patch | 17 ++ ...n-t-perform-unaligned-integer-read-writes.patch | 252 +++++++++++++++++++++ ...uffers-from-objstack_alloc-on-sizeof-void.patch | 54 +++++ 3 files changed, 323 insertions(+) create mode 100644 meta/recipes-kernel/lttng/babeltrace/0001-Fix-Support-out-of-tree-builds-in-babeltrace.patch create mode 100644 meta/recipes-kernel/lttng/babeltrace/0001-Fix-don-t-perform-unaligned-integer-read-writes.patch create mode 100644 meta/recipes-kernel/lttng/babeltrace/Fix-Align-buffers-from-objstack_alloc-on-sizeof-void.patch (limited to 'meta/recipes-kernel/lttng/babeltrace') diff --git a/meta/recipes-kernel/lttng/babeltrace/0001-Fix-Support-out-of-tree-builds-in-babeltrace.patch b/meta/recipes-kernel/lttng/babeltrace/0001-Fix-Support-out-of-tree-builds-in-babeltrace.patch new file mode 100644 index 0000000000..258eedd3ba --- /dev/null +++ b/meta/recipes-kernel/lttng/babeltrace/0001-Fix-Support-out-of-tree-builds-in-babeltrace.patch @@ -0,0 +1,17 @@ +Upstream-Status: backport + +babeltrace: Fix support out of tree builds in babeltrace + +Signed-off-by: Lars Persson + +diff --git a/formats/lttng-live/Makefile.am b/formats/lttng-live/Makefile.am +index c834699..2c6b0bd 100644 +--- a/formats/lttng-live/Makefile.am ++++ b/formats/lttng-live/Makefile.am +@@ -1,4 +1,4 @@ +-AM_CFLAGS = $(PACKAGE_CFLAGS) -I$(top_srcdir)/include -I$(top_builddir)/include ++AM_CFLAGS = $(PACKAGE_CFLAGS) -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir) + + lib_LTLIBRARIES = libbabeltrace-lttng-live.la + + diff --git a/meta/recipes-kernel/lttng/babeltrace/0001-Fix-don-t-perform-unaligned-integer-read-writes.patch b/meta/recipes-kernel/lttng/babeltrace/0001-Fix-don-t-perform-unaligned-integer-read-writes.patch new file mode 100644 index 0000000000..ea0aad699d --- /dev/null +++ b/meta/recipes-kernel/lttng/babeltrace/0001-Fix-don-t-perform-unaligned-integer-read-writes.patch @@ -0,0 +1,252 @@ +From 6a0b6cd5133db9e3c72914d4e5dd7fc792360934 Mon Sep 17 00:00:00 2001 +From: Mathieu Desnoyers +Date: Wed, 16 Jul 2014 10:58:48 -0400 +Subject: [PATCH] Fix: don't perform unaligned integer read/writes + +Signed-off-by: Mathieu Desnoyers + +Upstream-Status: Backport +Signed-off-by: Saul Wold + +--- + formats/ctf/types/integer.c | 108 ++++++++++++++++++++++++++++---------------- + 1 file changed, 70 insertions(+), 38 deletions(-) + +diff --git a/formats/ctf/types/integer.c b/formats/ctf/types/integer.c +index 189943e..85931be 100644 +--- a/formats/ctf/types/integer.c ++++ b/formats/ctf/types/integer.c +@@ -62,7 +62,7 @@ int _aligned_integer_read(struct bt_stream_pos *ppos, + { + uint8_t v; + +- v = *(const uint8_t *) ctf_get_pos_addr(pos); ++ memcpy(&v, ctf_get_pos_addr(pos), sizeof(v)); + integer_definition->value._unsigned = v; + break; + } +@@ -70,7 +70,7 @@ int _aligned_integer_read(struct bt_stream_pos *ppos, + { + uint16_t v; + +- v = *(const uint16_t *) ctf_get_pos_addr(pos); ++ memcpy(&v, ctf_get_pos_addr(pos), sizeof(v)); + integer_definition->value._unsigned = + rbo ? GUINT16_SWAP_LE_BE(v) : v; + break; +@@ -79,7 +79,7 @@ int _aligned_integer_read(struct bt_stream_pos *ppos, + { + uint32_t v; + +- v = *(const uint32_t *) ctf_get_pos_addr(pos); ++ memcpy(&v, ctf_get_pos_addr(pos), sizeof(v)); + integer_definition->value._unsigned = + rbo ? GUINT32_SWAP_LE_BE(v) : v; + break; +@@ -88,7 +88,7 @@ int _aligned_integer_read(struct bt_stream_pos *ppos, + { + uint64_t v; + +- v = *(const uint64_t *) ctf_get_pos_addr(pos); ++ memcpy(&v, ctf_get_pos_addr(pos), sizeof(v)); + integer_definition->value._unsigned = + rbo ? GUINT64_SWAP_LE_BE(v) : v; + break; +@@ -102,7 +102,7 @@ int _aligned_integer_read(struct bt_stream_pos *ppos, + { + int8_t v; + +- v = *(const int8_t *) ctf_get_pos_addr(pos); ++ memcpy(&v, ctf_get_pos_addr(pos), sizeof(v)); + integer_definition->value._signed = v; + break; + } +@@ -110,7 +110,7 @@ int _aligned_integer_read(struct bt_stream_pos *ppos, + { + int16_t v; + +- v = *(const int16_t *) ctf_get_pos_addr(pos); ++ memcpy(&v, ctf_get_pos_addr(pos), sizeof(v)); + integer_definition->value._signed = + rbo ? (int16_t) GUINT16_SWAP_LE_BE(v) : v; + break; +@@ -119,7 +119,7 @@ int _aligned_integer_read(struct bt_stream_pos *ppos, + { + int32_t v; + +- v = *(const int32_t *) ctf_get_pos_addr(pos); ++ memcpy(&v, ctf_get_pos_addr(pos), sizeof(v)); + integer_definition->value._signed = + rbo ? (int32_t) GUINT32_SWAP_LE_BE(v) : v; + break; +@@ -128,7 +128,7 @@ int _aligned_integer_read(struct bt_stream_pos *ppos, + { + int64_t v; + +- v = *(const int64_t *) ctf_get_pos_addr(pos); ++ memcpy(&v, ctf_get_pos_addr(pos), sizeof(v)); + integer_definition->value._signed = + rbo ? (int64_t) GUINT64_SWAP_LE_BE(v) : v; + break; +@@ -163,48 +163,80 @@ int _aligned_integer_write(struct bt_stream_pos *ppos, + if (pos->dummy) + goto end; + if (!integer_declaration->signedness) { +- uint64_t v = integer_definition->value._unsigned; +- + switch (integer_declaration->len) { +- case 8: *(uint8_t *) ctf_get_pos_addr(pos) = (uint8_t) v; ++ case 8: ++ { ++ uint8_t v = integer_definition->value._unsigned; ++ ++ memcpy(ctf_get_pos_addr(pos), &v, sizeof(v)); + break; ++ } + case 16: +- *(uint16_t *) ctf_get_pos_addr(pos) = rbo ? +- GUINT16_SWAP_LE_BE((uint16_t) v) : +- (uint16_t) v; ++ { ++ uint16_t v = integer_definition->value._unsigned; ++ ++ if (rbo) ++ v = GUINT16_SWAP_LE_BE(v); ++ memcpy(ctf_get_pos_addr(pos), &v, sizeof(v)); + break; ++ } + case 32: +- *(uint32_t *) ctf_get_pos_addr(pos) = rbo ? +- GUINT32_SWAP_LE_BE((uint32_t) v) : +- (uint32_t) v; ++ { ++ uint32_t v = integer_definition->value._unsigned; ++ ++ if (rbo) ++ v = GUINT32_SWAP_LE_BE(v); ++ memcpy(ctf_get_pos_addr(pos), &v, sizeof(v)); + break; ++ } + case 64: +- *(uint64_t *) ctf_get_pos_addr(pos) = rbo ? +- GUINT64_SWAP_LE_BE(v) : v; ++ { ++ uint64_t v = integer_definition->value._unsigned; ++ ++ if (rbo) ++ v = GUINT64_SWAP_LE_BE(v); ++ memcpy(ctf_get_pos_addr(pos), &v, sizeof(v)); + break; ++ } + default: + assert(0); + } + } else { +- int64_t v = integer_definition->value._signed; +- + switch (integer_declaration->len) { +- case 8: *(int8_t *) ctf_get_pos_addr(pos) = (int8_t) v; ++ case 8: ++ { ++ uint8_t v = integer_definition->value._signed; ++ ++ memcpy(ctf_get_pos_addr(pos), &v, sizeof(v)); + break; ++ } + case 16: +- *(int16_t *) ctf_get_pos_addr(pos) = rbo ? +- (int16_t) GUINT16_SWAP_LE_BE((int16_t) v) : +- (int16_t) v; ++ { ++ int16_t v = integer_definition->value._signed; ++ ++ if (rbo) ++ v = GUINT16_SWAP_LE_BE(v); ++ memcpy(ctf_get_pos_addr(pos), &v, sizeof(v)); + break; ++ } + case 32: +- *(int32_t *) ctf_get_pos_addr(pos) = rbo ? +- (int32_t) GUINT32_SWAP_LE_BE((int32_t) v) : +- (int32_t) v; ++ { ++ int32_t v = integer_definition->value._signed; ++ ++ if (rbo) ++ v = GUINT32_SWAP_LE_BE(v); ++ memcpy(ctf_get_pos_addr(pos), &v, sizeof(v)); + break; ++ } + case 64: +- *(int64_t *) ctf_get_pos_addr(pos) = rbo ? +- GUINT64_SWAP_LE_BE(v) : v; ++ { ++ int64_t v = integer_definition->value._signed; ++ ++ if (rbo) ++ v = GUINT64_SWAP_LE_BE(v); ++ memcpy(ctf_get_pos_addr(pos), &v, sizeof(v)); + break; ++ } + default: + assert(0); + } +@@ -237,23 +269,23 @@ int ctf_integer_read(struct bt_stream_pos *ppos, struct bt_definition *definitio + if (!integer_declaration->signedness) { + if (integer_declaration->byte_order == LITTLE_ENDIAN) + bt_bitfield_read_le(mmap_align_addr(pos->base_mma) + +- pos->mmap_base_offset, unsigned long, ++ pos->mmap_base_offset, unsigned char, + pos->offset, integer_declaration->len, + &integer_definition->value._unsigned); + else + bt_bitfield_read_be(mmap_align_addr(pos->base_mma) + +- pos->mmap_base_offset, unsigned long, ++ pos->mmap_base_offset, unsigned char, + pos->offset, integer_declaration->len, + &integer_definition->value._unsigned); + } else { + if (integer_declaration->byte_order == LITTLE_ENDIAN) + bt_bitfield_read_le(mmap_align_addr(pos->base_mma) + +- pos->mmap_base_offset, unsigned long, ++ pos->mmap_base_offset, unsigned char, + pos->offset, integer_declaration->len, + &integer_definition->value._signed); + else + bt_bitfield_read_be(mmap_align_addr(pos->base_mma) + +- pos->mmap_base_offset, unsigned long, ++ pos->mmap_base_offset, unsigned char, + pos->offset, integer_declaration->len, + &integer_definition->value._signed); + } +@@ -286,23 +318,23 @@ int ctf_integer_write(struct bt_stream_pos *ppos, struct bt_definition *definiti + if (!integer_declaration->signedness) { + if (integer_declaration->byte_order == LITTLE_ENDIAN) + bt_bitfield_write_le(mmap_align_addr(pos->base_mma) + +- pos->mmap_base_offset, unsigned long, ++ pos->mmap_base_offset, unsigned char, + pos->offset, integer_declaration->len, + integer_definition->value._unsigned); + else + bt_bitfield_write_be(mmap_align_addr(pos->base_mma) + +- pos->mmap_base_offset, unsigned long, ++ pos->mmap_base_offset, unsigned char, + pos->offset, integer_declaration->len, + integer_definition->value._unsigned); + } else { + if (integer_declaration->byte_order == LITTLE_ENDIAN) + bt_bitfield_write_le(mmap_align_addr(pos->base_mma) + +- pos->mmap_base_offset, unsigned long, ++ pos->mmap_base_offset, unsigned char, + pos->offset, integer_declaration->len, + integer_definition->value._signed); + else + bt_bitfield_write_be(mmap_align_addr(pos->base_mma) + +- pos->mmap_base_offset, unsigned long, ++ pos->mmap_base_offset, unsigned char, + pos->offset, integer_declaration->len, + integer_definition->value._signed); + } +-- +1.8.3.1 + diff --git a/meta/recipes-kernel/lttng/babeltrace/Fix-Align-buffers-from-objstack_alloc-on-sizeof-void.patch b/meta/recipes-kernel/lttng/babeltrace/Fix-Align-buffers-from-objstack_alloc-on-sizeof-void.patch new file mode 100644 index 0000000000..8e81d2d781 --- /dev/null +++ b/meta/recipes-kernel/lttng/babeltrace/Fix-Align-buffers-from-objstack_alloc-on-sizeof-void.patch @@ -0,0 +1,54 @@ +From cae67efbd9ddf2cee6bbefec076dc8933ababc43 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fredrik=20Markstr=C3=B6m?= +Date: Fri, 16 May 2014 10:10:38 +0800 +Subject: [PATCH] Fix: Align buffers from objstack_alloc on sizeof(void *) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upstream-Status: Backport + +The buffers from objstack_alloc will store pointers, so they must +be aligned on a pointer's size, or else it will cause issues on the +CPUs which do not support unaligned addresses access. + +Signed-off-by: Fredrik Markstrom +Signed-off-by: Roy Li +Signed-off-by: Jérémie Galarneau +--- + formats/ctf/metadata/objstack.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/formats/ctf/metadata/objstack.c b/formats/ctf/metadata/objstack.c +index 9e264a4..14d9252 100644 +--- a/formats/ctf/metadata/objstack.c ++++ b/formats/ctf/metadata/objstack.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + + #define OBJSTACK_INIT_LEN 128 + #define OBJSTACK_POISON 0xcc +@@ -39,7 +40,7 @@ struct objstack_node { + struct bt_list_head node; + size_t len; + size_t used_len; +- char data[]; ++ char __attribute__ ((aligned (sizeof(void *)))) data[]; + }; + + BT_HIDDEN +@@ -118,6 +119,8 @@ void *objstack_alloc(struct objstack *objstack, size_t len) + struct objstack_node *last_node; + void *p; + ++ len = ALIGN(len, sizeof(void *)); ++ + /* Get last node */ + last_node = bt_list_entry(objstack->head.prev, + struct objstack_node, node); +-- +1.7.10.4 + -- cgit v1.2.3-54-g00ecf