From 73b5e99c72ab0dd1248cc8326139893cfd20408d Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Mar 02 2012 20:22:09 +0000 Subject: libatomic_ops: use -DAO_USE_PTHREAD_DEFS on ARMv5 --- diff --git a/gc-7.2alpha6-libatomic_ops_arm5.patch b/gc-7.2alpha6-libatomic_ops_arm5.patch new file mode 100644 index 0000000..84e9bba --- /dev/null +++ b/gc-7.2alpha6-libatomic_ops_arm5.patch @@ -0,0 +1,49 @@ +From 2a28e66d5603dae37031ff8105fdf6acb649b46d Mon Sep 17 00:00:00 2001 +From: Niels de Vos +Date: Fri, 2 Mar 2012 21:06:58 +0100 +Subject: [PATCH] Fallback to pthread implementation on ARMv5 and earlier + +ARMv6 and newer has optimized code, earlier versions need to fall back to +the pthread implementation. + +Signed-off-by: Niels de Vos +--- + src/atomic_ops.h | 18 ++++++++++++------ + 1 files changed, 12 insertions(+), 6 deletions(-) + +diff --git a/src/atomic_ops.h b/src/atomic_ops.h +index 3f9000d..af09501 100644 +--- a/src/atomic_ops.h ++++ b/src/atomic_ops.h +@@ -193,16 +193,22 @@ + # define AO_compiler_barrier() asm("") + #endif + +-#if defined(AO_USE_PTHREAD_DEFS) +-# include "atomic_ops/sysdeps/generic_pthread.h" +-#endif /* AO_USE_PTHREAD_DEFS */ +- + #if (defined(__CC_ARM) || defined(__ARMCC__)) && !defined(__GNUC__) \ + && !defined(AO_USE_PTHREAD_DEFS) +-# include "atomic_ops/sysdeps/armcc/arm_v6.h" +-# define AO_GENERALIZE_TWICE ++# if __TARGET_ARCH_ARM >= 6 ++ /* ARMv6 and newer has optimized code, earlier versions */ ++ /* need to fall back to the pthread implementation. */ ++# include "atomic_ops/sysdeps/armcc/arm_v6.h" ++# define AO_GENERALIZE_TWICE ++# else ++# define AO_USE_PTHREAD_DEFS ++# endif + #endif + ++#if defined(AO_USE_PTHREAD_DEFS) ++# include "atomic_ops/sysdeps/generic_pthread.h" ++#endif /* AO_USE_PTHREAD_DEFS */ ++ + #if defined(__GNUC__) && !defined(AO_USE_PTHREAD_DEFS) \ + && !defined(__INTEL_COMPILER) + # if defined(__i386__) +-- +1.7.3.4 + diff --git a/gc.spec b/gc.spec index cfb3780..62af4a5 100644 --- a/gc.spec +++ b/gc.spec @@ -4,7 +4,7 @@ Summary: A garbage collector for C and C++ Name: gc Version: 7.2 -Release: 0.6.%{pre}%{?dist} +Release: 0.7.%{pre}%{?dist} Group: System Environment/Libraries License: BSD @@ -13,9 +13,11 @@ Source0: http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-%{version}%{? BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) ## upstreamable patches -Patch50: gc-7.1-dup_cpp_headers.patch +# use AO_USE_PTHREAD_DEFS on ARMv5 +Patch51: gc-7.2alpha6-libatomic_ops_arm5.patch ## upstream patches +Patch100: gc-7.1-dup_cpp_headers.patch BuildRequires: automake libtool BuildRequires: pkgconfig @@ -52,7 +54,10 @@ that involves minimum overhead across a variety of architectures. %prep %setup -q -n gc-%{version}%{?pre} -%patch50 -p1 -b .dup_cpp_headers +pushd libatomic_ops +%patch51 -p1 -b .libatomic_ops_arm5 +popd +%patch100 -p1 -b .dup_cpp_headers # refresh auto*/libtool to purge rpaths rm -f libtool libtool.m4 autoreconf -i -f @@ -140,6 +145,9 @@ rm -rf %{buildroot} %changelog +* Fri Mar 02 2012 Rex Dieter 7.2-0.7.alpha6 +- libatomic_ops: use -DAO_USE_PTHREAD_DEFS on ARMv5 + * Fri Jan 13 2012 Fedora Release Engineering - 7.2-0.6.alpha6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild