libatomic_ops: use -DAO_USE_PTHREAD_DEFS on ARMv5

This commit is contained in:
Rex Dieter 2012-03-02 14:22:09 -06:00
parent 849bf5f0c6
commit 73b5e99c72
2 changed files with 60 additions and 3 deletions

View File

@ -0,0 +1,49 @@
From 2a28e66d5603dae37031ff8105fdf6acb649b46d Mon Sep 17 00:00:00 2001
From: Niels de Vos <devos@fedoraproject.org>
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 <devos@fedoraproject.org>
---
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

14
gc.spec
View File

@ -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 <rdieter@fedoraproject.org> 7.2-0.7.alpha6
- libatomic_ops: use -DAO_USE_PTHREAD_DEFS on ARMv5
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7.2-0.6.alpha6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild