summaryrefslogtreecommitdiff
path: root/src/gen-posix-lock-obj.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2016-04-25 16:46:46 +0900
committerNIIBE Yutaka <gniibe@fsij.org>2016-04-25 16:55:46 +0900
commitf1104b92249005a31961d1a32c38ba65a0b3ff3a (patch)
tree2900d4e3a56495166cc4854980fd28f0719122a4 /src/gen-posix-lock-obj.c
parentb84d704dc4396c0ea6962096249b510c385a3a13 (diff)
downloadlibgpg-error-f1104b92249005a31961d1a32c38ba65a0b3ff3a.tar.gz
Fix for HPPA.
* configure.ac (HAVE_GCC_ATTRIBUTE_ALIGNED): Revert. * src/gen-posix-lock-obj.c (USE_16BYTE_ALIGNMENT): Revert. * src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h: Revert. -- Signed-off-by: NIIBE Yutaka <gniibe@fsij.org> This fixes commit 5168b97. I considered wrongly that long double were 128-bit in HPPA. Currently, all that we can do for HPPA is assuming GCC and use its extension of "aligned" attribute.
Diffstat (limited to 'src/gen-posix-lock-obj.c')
-rw-r--r--src/gen-posix-lock-obj.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/gen-posix-lock-obj.c b/src/gen-posix-lock-obj.c
index 79b56de..e32a3cd 100644
--- a/src/gen-posix-lock-obj.c
+++ b/src/gen-posix-lock-obj.c
@@ -43,6 +43,7 @@
#endif
/* Special requirements for certain platforms. */
+# define USE_LONG_DOUBLE_FOR_ALIGNMENT 0
#if defined(__sun) && !defined (__LP64__) && !defined(_LP64)
/* Solaris on 32-bit architecture. */
# define USE_DOUBLE_FOR_ALIGNMENT 1
@@ -50,9 +51,13 @@
# define USE_DOUBLE_FOR_ALIGNMENT 0
#endif
#if defined(__hppa__)
-# define USE_LONG_DOUBLE_FOR_ALIGNMENT 1
+# define USE_16BYTE_ALIGNMENT 1
#else
-# define USE_LONG_DOUBLE_FOR_ALIGNMENT 0
+# define USE_16BYTE_ALIGNMENT 0
+#endif
+
+#if USE_16BYTE_ALIGNMENT && !HAVE_GCC_ATTRIBUTE_ALIGNED
+# error compiler is not able to enforce a 16 byte alignment
#endif
#ifdef USE_POSIX_THREADS
@@ -117,7 +122,9 @@ main (void)
"\n"
"#define GPGRT_LOCK_INITIALIZER {%d,{{",
SIZEOF_PTHREAD_MUTEX_T,
-# if USE_DOUBLE_FOR_ALIGNMENT
+# if USE_16BYTE_ALIGNMENT
+ " int _x16_align __attribute__ ((aligned (16)));\n",
+# elif USE_DOUBLE_FOR_ALIGNMENT
" double _xd_align;\n",
# elif USE_LONG_DOUBLE_FOR_ALIGNMENT
" long double _xld_align;\n",