d1ed09
From 85c4031696add9797e2334ced20678edcd96c869 Mon Sep 17 00:00:00 2001
d1ed09
From: Mart Raudsepp <leio@gentoo.org>
d1ed09
Date: Wed, 19 Dec 2018 16:22:21 +0200
d1ed09
Subject: [PATCH 1/2] tests: Allocate gvariant data from the heap to guarantee
d1ed09
 alignment
d1ed09
d1ed09
On glib-2-58 branch we don't have !455, thus we need aligned data
d1ed09
for the gvariant tests to not fail on i686.
d1ed09
d1ed09
Fixes #1626
d1ed09
---
d1ed09
 glib/tests/gvariant.c | 15 ++++++++++++---
d1ed09
 1 file changed, 12 insertions(+), 3 deletions(-)
d1ed09
d1ed09
diff --git a/glib/tests/gvariant.c b/glib/tests/gvariant.c
d1ed09
index 6e417f6c1..a7b19826d 100644
d1ed09
--- a/glib/tests/gvariant.c
d1ed09
+++ b/glib/tests/gvariant.c
d1ed09
@@ -4664,6 +4664,7 @@ test_stack_dict_init (void)
d1ed09
 static void
d1ed09
 test_normal_checking_tuples (void)
d1ed09
 {
d1ed09
+  gpointer aligned_data;
d1ed09
   const guint8 data[] = {
d1ed09
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
d1ed09
     'a', '(', 'a', 'o', 'a', 'o', 'a', 'a', 'o', 'a', 'a', 'o', ')'
d1ed09
@@ -4672,13 +4673,15 @@ test_normal_checking_tuples (void)
d1ed09
   GVariant *variant = NULL;
d1ed09
   GVariant *normal_variant = NULL;
d1ed09
 
d1ed09
-  variant = g_variant_new_from_data (G_VARIANT_TYPE_VARIANT, data, size,
d1ed09
+  aligned_data = g_memdup (data, size); /* guarantee alignment */
d1ed09
+  variant = g_variant_new_from_data (G_VARIANT_TYPE_VARIANT, aligned_data, size,
d1ed09
                                      FALSE, NULL, NULL);
d1ed09
   g_assert_nonnull (variant);
d1ed09
 
d1ed09
   normal_variant = g_variant_get_normal_form (variant);
d1ed09
   g_assert_nonnull (normal_variant);
d1ed09
 
d1ed09
+  g_free (aligned_data);
d1ed09
   g_variant_unref (normal_variant);
d1ed09
   g_variant_unref (variant);
d1ed09
 }
d1ed09
@@ -4790,6 +4793,7 @@ test_recursion_limits_array_in_variant (void)
d1ed09
 static void
d1ed09
 test_normal_checking_array_offsets (void)
d1ed09
 {
d1ed09
+  gpointer aligned_data;
d1ed09
   const guint8 data[] = {
d1ed09
     0x07, 0xe5, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
d1ed09
     'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'g',
d1ed09
@@ -4798,13 +4802,15 @@ test_normal_checking_array_offsets (void)
d1ed09
   GVariant *variant = NULL;
d1ed09
   GVariant *normal_variant = NULL;
d1ed09
 
d1ed09
-  variant = g_variant_new_from_data (G_VARIANT_TYPE_VARIANT, data, size,
d1ed09
+  aligned_data = g_memdup (data, size); /* guarantee alignment */
d1ed09
+  variant = g_variant_new_from_data (G_VARIANT_TYPE_VARIANT, aligned_data, size,
d1ed09
                                      FALSE, NULL, NULL);
d1ed09
   g_assert_nonnull (variant);
d1ed09
 
d1ed09
   normal_variant = g_variant_get_normal_form (variant);
d1ed09
   g_assert_nonnull (normal_variant);
d1ed09
 
d1ed09
+  g_free (aligned_data);
d1ed09
   g_variant_unref (normal_variant);
d1ed09
   g_variant_unref (variant);
d1ed09
 }
d1ed09
@@ -4838,6 +4844,7 @@ test_normal_checking_tuple_offsets (void)
d1ed09
 static void
d1ed09
 test_normal_checking_empty_object_path (void)
d1ed09
 {
d1ed09
+  gpointer aligned_data;
d1ed09
   const guint8 data[] = {
d1ed09
     0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
d1ed09
     '(', 'h', '(', 'a', 'i', 'a', 'b', 'i', 'o', ')', ')',
d1ed09
@@ -4846,13 +4853,15 @@ test_normal_checking_empty_object_path (void)
d1ed09
   GVariant *variant = NULL;
d1ed09
   GVariant *normal_variant = NULL;
d1ed09
 
d1ed09
-  variant = g_variant_new_from_data (G_VARIANT_TYPE_VARIANT, data, size,
d1ed09
+  aligned_data = g_memdup (data, size); /* guarantee alignment */
d1ed09
+  variant = g_variant_new_from_data (G_VARIANT_TYPE_VARIANT, aligned_data, size,
d1ed09
                                      FALSE, NULL, NULL);
d1ed09
   g_assert_nonnull (variant);
d1ed09
 
d1ed09
   normal_variant = g_variant_get_normal_form (variant);
d1ed09
   g_assert_nonnull (normal_variant);
d1ed09
 
d1ed09
+  g_free (aligned_data);
d1ed09
   g_variant_unref (normal_variant);
d1ed09
   g_variant_unref (variant);
d1ed09
 }
d1ed09
-- 
d1ed09
2.19.1
d1ed09
6fcf6b
From 4ef58e5661849317a1110c9b93957f2c608677dd Mon Sep 17 00:00:00 2001
6fcf6b
From: Simon McVittie <smcv@collabora.com>
6fcf6b
Date: Thu, 3 Jan 2019 08:21:40 +0000
6fcf6b
Subject: [PATCH 2/2] gvariant test: Also force alignment for tuple test data
6fcf6b
6fcf6b
glib!552 (commit 9eed22b3) fixed this for the tests that failed on i686,
6fcf6b
but this additional test failed on Debian's s390x port
6fcf6b
(IBM z/Architecture, 64-bit big-endian).
6fcf6b
6fcf6b
Signed-off-by: Simon McVittie <smcv@collabora.com>
6fcf6b
---
6fcf6b
 glib/tests/gvariant.c | 7 +++++--
6fcf6b
 1 file changed, 5 insertions(+), 2 deletions(-)
6fcf6b
6fcf6b
diff --git a/glib/tests/gvariant.c b/glib/tests/gvariant.c
6fcf6b
index a7b19826d..c4a996c1f 100644
6fcf6b
--- a/glib/tests/gvariant.c
6fcf6b
+++ b/glib/tests/gvariant.c
6fcf6b
@@ -4820,6 +4820,7 @@ test_normal_checking_array_offsets (void)
6fcf6b
 static void
6fcf6b
 test_normal_checking_tuple_offsets (void)
6fcf6b
 {
6fcf6b
+  gpointer aligned_data;
6fcf6b
   const guint8 data[] = {
6fcf6b
     0x07, 0xe5, 0x00, 0x07, 0x00, 0x07,
6fcf6b
     '(', 'a', 's', 'a', 's', 'a', 's', 'a', 's', 'a', 's', 'a', 's', ')',
6fcf6b
@@ -4828,13 +4829,15 @@ test_normal_checking_tuple_offsets (void)
6fcf6b
   GVariant *variant = NULL;
6fcf6b
   GVariant *normal_variant = NULL;
6fcf6b
 
6fcf6b
-  variant = g_variant_new_from_data (G_VARIANT_TYPE_VARIANT, data, size,
6fcf6b
-                                     FALSE, NULL, NULL);
6fcf6b
+  aligned_data = g_memdup (data, size); /* guarantee alignment */
6fcf6b
+  variant = g_variant_new_from_data (G_VARIANT_TYPE_VARIANT, aligned_data,
6fcf6b
+                                     size, FALSE, NULL, NULL);
6fcf6b
   g_assert_nonnull (variant);
6fcf6b
 
6fcf6b
   normal_variant = g_variant_get_normal_form (variant);
6fcf6b
   g_assert_nonnull (normal_variant);
6fcf6b
 
6fcf6b
+  g_free (aligned_data);
6fcf6b
   g_variant_unref (normal_variant);
6fcf6b
   g_variant_unref (variant);
6fcf6b
 }
6fcf6b
-- 
6fcf6b
2.19.1