[Pkg-gnupg-commit] [libgpg-error] 09/35: Add support for Solaris, fixing HPPA.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Mon Apr 25 21:47:11 UTC 2016


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch master
in repository libgpg-error.

commit 5168b97fb5e2eebdc99b40f96f9b6289647e87d2
Author: NIIBE Yutaka <gniibe at fsij.org>
Date:   Fri Feb 26 09:29:14 2016 +0900

    Add support for Solaris, fixing HPPA.
    
    * configure.ac (HAVE_GCC_ATTRIBUTE_ALIGNED): Remove.
    (LIB_SCHED_YIELD): New. Check sched_yield in -lrt.
    * src/gen-posix-lock-obj.c (USE_16BYTE_ALIGNMENT): Remove.
    (USE_DOUBLE_FOR_ALIGNMENT, USE_LONG_DOUBLE_FOR_ALIGNMENT): New.
    * src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h: Update.
    
    --
    
    Signed-off-by: NIIBE Yutaka <gniibe at fsij.org>
---
 configure.ac                                     | 43 +++++++++++-------------
 src/gen-posix-lock-obj.c                         | 20 ++++++-----
 src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h |  2 +-
 3 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/configure.ac b/configure.ac
index 19ae9c8..9882d02 100644
--- a/configure.ac
+++ b/configure.ac
@@ -274,20 +274,6 @@ if test "$GCC" = yes; then
 fi
 
 #
-# Check whether the compiler supports the GCC style aligned attribute
-#
-AC_CACHE_CHECK([whether the GCC style aligned attribute is supported],
-       [gcry_cv_gcc_attribute_aligned],
-       [gcry_cv_gcc_attribute_aligned=no
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
-          [[struct { int a; } foo __attribute__ ((aligned (16)));]])],
-          [gcry_cv_gcc_attribute_aligned=yes])])
-if test "$gcry_cv_gcc_attribute_aligned" = "yes" ; then
-   AC_DEFINE(HAVE_GCC_ATTRIBUTE_ALIGNED,1,
-     [Defined if a GCC style "__attribute__ ((aligned (n))" is supported])
-fi
-
-#
 # Check for ELF visibility support.
 #
 AC_CACHE_CHECK(whether the visibility attribute is supported,
@@ -416,6 +402,25 @@ else
   fi
 fi
 
+# Default value for GPG_ERROR_CONFIG_LIBS
+config_libs="-lgpg-error"
+
+#
+# Check for other libraries (now only for -lrt).
+#
+# Save and restore LIBS so e.g., -lrt, isn't added to it.  Otherwise, *all*
+# programs in the package would end up linked with that potentially-shared
+# library, inducing unnecessary run-time overhead.
+LIB_SCHED_YIELD=
+AC_SUBST([LIB_SCHED_YIELD])
+gl_saved_libs=$LIBS
+AC_SEARCH_LIBS([sched_yield], [rt posix4],
+               [if test "$ac_cv_search_sched_yield" != "none required"; then
+                  LIB_SCHED_YIELD=$ac_cv_search_sched_yield
+                  config_libs="$config_libs $LIB_SCHED_YIELD"
+                fi])
+LIBS=$gl_saved_libs
+
 #
 # Prepare building of estream
 #
@@ -424,7 +429,7 @@ estream_INIT
 #
 # Substitution used for gpg-error-config
 #
-GPG_ERROR_CONFIG_LIBS="-lgpg-error"
+GPG_ERROR_CONFIG_LIBS="$config_libs"
 if test "x$LIBTHREAD" != x; then
   GPG_ERROR_CONFIG_LIBS="${GPG_ERROR_CONFIG_LIBS} ${LIBTHREAD}"
 fi
@@ -544,11 +549,3 @@ echo "
         Revision: mym4_revision  (mym4_revision_dec)
         Platform: $host$tmp
 "
-if test "$gcry_cv_gcc_attribute_aligned" != "yes" ; then
-cat <<G10EOF
-***
-***  Please note that your compiler does not support the GCC style
-***  aligned attribute.  Using this software may evoke bus errors.
-***
-G10EOF
-fi
diff --git a/src/gen-posix-lock-obj.c b/src/gen-posix-lock-obj.c
index 22de456..83356ad 100644
--- a/src/gen-posix-lock-obj.c
+++ b/src/gen-posix-lock-obj.c
@@ -43,15 +43,15 @@
 #endif
 
 /* Special requirements for certain platforms.  */
-#if defined(__hppa__) && defined(__linux__)
-# define USE_16BYTE_ALIGNMENT 1
+#if defined(__solaris__) && (defined (__ILP32__) || defined(_ILP32))
+# define USE_DOUBLE_FOR_ALIGNMENT 1
 #else
-# define USE_16BYTE_ALIGNMENT 0
+# define USE_DOUBLE_FOR_ALIGNMENT 0
 #endif
-
-
-#if USE_16BYTE_ALIGNMENT && !HAVE_GCC_ATTRIBUTE_ALIGNED
-# error compiler is not able to enforce a 16 byte alignment
+#if defined(__hppa__)
+# define USE_LONG_DOUBLE_FOR_ALIGNMENT 1
+#else
+# define USE_LONG_DOUBLE_FOR_ALIGNMENT 0
 #endif
 
 #ifdef USE_POSIX_THREADS
@@ -116,8 +116,10 @@ main (void)
           "\n"
           "#define GPGRT_LOCK_INITIALIZER {%d,{{",
           SIZEOF_PTHREAD_MUTEX_T,
-# if USE_16BYTE_ALIGNMENT
-          "    int _x16_align __attribute__ ((aligned (16)));\n",
+# if USE_DOUBLE_FOR_ALIGNMENT
+          "    double _xd_align;\n",
+# elif USE_LONG_DOUBLE_FOR_ALIGNMENT
+          "    long double _xld_align;\n",
 # else
           "",
 # endif
diff --git a/src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h b/src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h
index b57bb76..3682577 100644
--- a/src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h
+++ b/src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h
@@ -7,7 +7,7 @@ typedef struct
   long _vers;
   union {
     volatile char _priv[48];
-    int _x16_align __attribute__ ((aligned (16)));
+    long double _xld_align;
     long _x_align;
     long *_xp_align;
   } u;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/libgpg-error.git



More information about the Pkg-gnupg-commit mailing list