diff options
-rw-r--r-- | configure.ac | 43 | ||||
-rw-r--r-- | src/gen-posix-lock-obj.c | 20 | ||||
-rw-r--r-- | 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; |